Professional Documents
Culture Documents
}
}
testeaza2(p, r);
int main()
{
int k;
long p = 1;
cout << "Dati numarul de biti k ";
cin >> k;
int r;
cout << "Dati numarul de repetari, r, ce vor fi efectuate daca va fi necesar testul M-R ";
cin >> r;
int *v = new int[k];
srand(time(NULL));
//generez numarul impar p de k biti
for(int i = 0; i<k; i++)
v[i] = rand()%2;
v[k-1] = 1;
long d = 2;
for(int i = 1; i<k; i++)
{
p = p+d*v[i];
d = d*2;
}
//testez daca p este prim
testeaza2(p, r);
return 0;
}
Boii pornesc. Taranul mergea pe langa boi si-i tot indemna sa mearga mai iute, ca s-ajunga
degraba acasa si sa ieie pelea vulpii. Insa, cum au pornit boii, vulpea a si inceput cu picioarele a
impinge pestele din car jos. taranul mana, carul scartaia, si pestele din car cadea. Dupa ce hoata
de vulpe a aruncat o multime de peste pe drum, bini...sor! sare si ea din car si, cu mare graba,
incepe a strange pestele de pe drum. Dupa ce l-a strans gramada, il ia, il duce la vizuina sa si
incepe a manca, ca ta...re-i mai era foame! Tocmai cand incepuse a manca, iaca vine la dansa
ursul. - Buna masa, cumatra! Ti!!! da' ce mai de peste ai! Da-mi si mie, ca ta...re! mi-i pofta! - Ia
mai pune-ti pofta-n cuiu, cumatre, ca doar nu pentru gustul altuia m-am muncit eu. Daca ti-i asa
de pofta, du-te si-ti moaie coada-n balta, ca mine, si-i avea peste sa mananci. - Invata-ma, te rog,
cumatra, ca eu nu stiu cum se prinde pestele. Atunci vulpea ranji dintii si zise: - Alei, cumatre! da'
nu stii ca nevoia te duce pe unde nu-ti e voia si te-nvata ce nici gandesti? Asculta, cumatre: vrei
sa mananci peste? Du-te desara la baltoaga cea din marginea padurei, vara-ti coada-n apa si stai
pe loc, fara sa te misti, pana despre ziua; atunci smunceste vartos spre mal si ai sa scoti o
multime de peste, poate indoit si-ntreit de cat am scos eu.
Apoi dar, mai ramai sanatoasa, matusa Marioara! vorba de dinioarea; si-mi pare rau ca nu-i varul
Ion acasa, ca tare-as fi avut placere sa ne scaldam impreuna... Dar in gandul meu: stii c-am
nimerit-o? bine ca nu-s acasa; si, de n-ar veni degraba, si mai bine-ar fi!... si, scurt si cuprinzator,
sarut mana matusei, luandu-mi ziua buna, ca un baiat de treaba, ies din casa cu chip ca ma duc
la scaldat, ma supuresc pe unde pot si, cand colo, ma trezesc in ciresul femeii si incep a carabani
la cirese in san, crude, coapte, cum se gaseau. si cum eram ingrijit si ma sileam sa fac ce-oi face
mai degraba, iaca matusa Marioara, c-o jordie in mana, la tulpina ciresului. -Dar bine, ghiavole,
aici ti-i scaldatul? zise ea, cu ochii holbati la mine; coboara-te jos, talharule, ca te-oi invata eu!
Dar cum sa te cobori, caci jos era prapadenie! Daca vede ea si vede ca nu ma dau, zvarr! de vro
doua-trei ori cu bulgari in mine, dar nu ma chiteste. Apoi incepe a se aburca pe cires in sus,
zicand: Stai, mai porcane, ca te captuseste ea, Marioara, acus! Atunci eu ma dau iute pe-o
creanga, mai spre poale, si odata fac zup! in niste canepa, care se intindea de la cires inainte si
era cruda si pana la brau de nalta. si nebuna de matusa Marioara, dupa mine, si eu fuga
iepureste prin canepa, si ea pe urma mea, pana la gardul din fundul gradinii, pe care neavand
vreme sa-l sar, o cotigeam inapoi, iar prin canepa, fugind tot iepureste, si ea dupa mine pana-n
dreptul ocolului pe unde-mi era iar greu de sarit; pe de laturi iar gard, si harsita de matusa nu ma
slabea din fuga nici in ruptul capului!
in.close();
out.close();
return 0;
textul
int test = 0;
for ( a1 = 0; a1 < N && test == 0; a1++)
{
for ( a2 = 0; a2 < N && test == 0; a2++)
{
for ( b1 = 0; b1 < N && test == 0; b1++)
{
if((c1*a1+c2*a2+b1)%N == d1 &&
(c3*a1+c4*a2+b1)%N == d3 && (c5*a1+c6*a2+b1)%N == d5)
test = 1;
}
}
}
a1--, a2--, b1--;
test = 0;
for ( a3 = 0; a3 < N && test == 0; a3++)
{
for ( a4 = 0; a4 < N && test == 0; a4++)
{
for ( b2 = 0; b2 < N && test == 0; b2++)
{
if((c1*a3+c2*a4+b2)%N == d2 &&
(c3*a3+c4*a4+b2)%N == d4 && (c5*a3+c6*a4+b2)%N == d6)
test = 1;
}
}
}
a3--, a4--, b2--;
//am gasit formula de criptare. urmeaza sa gasesc formula de
decriptare.
int det, det_1;
det = (a1*a4-a2*a3)%N;
while(det<0)
det = det+N;
for (int i = 0; i < N; i++)
{
if(i*det%N == 1)
det_1 = i;
}
test = a1;
a1 = a4*det_1%N;
a4 = test*det_1%N;
a2 = (-1)*det_1*a2%N;
a3 = (-1)*det_1*a3%N;
}
}
}
}
}
}
}
in.close();
out.close();
return 0;
Si de m-ar fi batut mama cu toate gardurile si de m-ar fi izgonit de la casa ca pe un strain, tot nas fi ramas asa de umilit in fata ei, ca atunci cand m-a luat cu binisorul! Si sa nu credeti ca nu miam tinut cuvantul de joi pana mai de-apoi, pentru ca asa am fost eu, rabdator si statornic la
vorba in felul meu. si nu ca ma laud, caci lauda-i fata: prin somn nu ceream demancare, daca ma
sculam, nu mai asteptam sa-mi dea altii; si cand era de facut ceva treaba, o cam raream de peacasa. S-apoi mai aveam si alte bunuri: cand ma lua cineva cu raul, putina treaba facea cu mine;
cand ma lua cu binisorul, nici atata; iar cand ma lasa din capul meu, faceam cate-o draguta de
trebusoara ca aceea, de nici sfanta Nastasia, izbavitoarea de otrava, nu era in stare a o desface
cu tot mestesugul ei. Povestea ceea: Un nebun arunc-o piatra in balta, si zece cuminti n-o pot
scoate. In sfarsit, ce mai atata vorba pentru nimica toata? Ia, am fost si eu, in lumea asta, un bot
cu ochi, o bucata de huma insufletita din Humulesti, care nici frumos pana la douazeci de ani, nici
cu minte pana la treizeci si nici bogat pana la patruzeci nu m-am facut. Dar si sarac asa ca in anul
acesta, ca in anul trecut si ca de cand sunt, niciodata n-am fost!
10
bloc *v;
v = new bloc[nr/2];
v[0].c1 = c[0];
v[0].c2 = c[1];
v[0].f = 1;
int k = 0;
11
bloc temp;
temp = v[i];
v [i] = v[j];
v [j] = temp;
}
for (int j = 0; j <= k; j=j+1)
{
out << v[j].c1 << v[j].c2 << " --> " << v[j].f << "\n";
}
//am cautat cele mai frecvente grupari de 2 caractere
bloc a, b;
a = v[k];
int p = 0;
for (int i = 1; i < nr; i=i+1)
if(c[i-1] == a.c1 && c[i] == a.c2)
{
out << i-1 << " " << i-1-p << endl;
p = i-1;
}
a = v[k-1];
p = 0;
for (int i = 1; i < nr; i=i+1)
if(c[i-1] == a.c1 && c[i] == a.c2)
{
out << i-1 << " " << i-1-p << endl;
p = i-1;
}
a = v[k-2];
p = 0;
for (int i = 1; i < nr; i=i+1)
if(c[i-1] == a.c1 && c[i] == a.c2)
{
out << i-1 << " " << i-1-p << endl;
p = i-1;
}
in.close();
out.close();
return 0;
12
int a[100];
for (int i = 0; i < 100; i++)
{
a[i] = 0;
}
while(in >> noskipws >> c[nr])
nr++;
for (int k = 0; k < 6; k++)
{
//analizez frecventele de pe fiecare "coloana"
for (int i = k; i < nr ; i = i+6)
{
int test = 0;
for (int j = 0; j < N && test == 0; j++)
{
if (c[i] == caracter[j])
{
a[j]++;
test = 1;
}
}
}
int max = 0;
for (int i=0; i<N; i++)
{
if(a[i] > a[max])
max = i;
}
cheie[k] = da_caracter(da_cod(caracter[max])-66);
for (int i = 0; i < N; i++)
{
a[i] = 0;
}
}
for (int i = 0; i < nr; i++)
{
out << da_caracter(da_cod(c[i])-da_cod(cheie[i%6]));
}
in.close();
out.close();
return 0;
}
13
3.d. RSA
Bh4BXCA9VA2qAT(B5IB2IB.;C2UBv'CitDY0AAtC2UB5IAa2Ah.AjpAqPC;EA2qBjgBgPDy4AMpDLr
BlQDv0AAcClrAMJAr0CYKAn3B5IBHrC!UChLDbwAMpA8XDEpCT-D1nAa2Ah.B6?
Bm'DPdA8XDEpA8XBjgC;EA2qBjgAT(B5IBv'B7NAWfBm'Bv'CitDY0AAtBt4C2UDPnAWfCjhAr?
AqPDcADq,AWfC2UC2UAr0CYKBv'B7NAWfBm'AU-C;EB6?Bm'DbwDPdAjpAqPAU-BtuC;EAtIB?
7CneD1nCEVChtCZEBHdB7NAWfBm'DO:B51Bv'B7NAWfBm'AU-CEVChtCZEB?7BXCCTD1nDv0AAcClrAMJC;EA9VB?7CneAqPDv0Ah;D(mAfnAU-CQPBgPDIPDPnBjgBrGB5ICr!
AMpBdeD2gChvDcADPdA2qBKfBgPAS-ChIDEpB6?Bm'DEpCj)Ar?
AqPBgPB6,B5ICV3AMJAr,Ae.AMpAtIBv'CitBt4DIPBgPA8XBKfA,rAr0A:lB5IDEiChtC,kC;EB'IBL5AM
pB!MA9VBkgC,kAn3B5IBHrDukDEpB51Dv0Ah;DbwDPdAKzD:TB5IAoYDukDf;B?
7BXCAtIDEiBIKCBDPdDIPA9VAzTBm'AMpCZEAn3DW,C;2ChtCxuAT(CxEBf3DEpCdcAMpDy4DIPBv'B7NBjgD4dB
5IBjgAMpCZEB?7BL5DEpAKzD:TB5IAoYC!
UBV1BHmDPdCj)An3AfPCgIAOrAMpAsJC,2CQPDEpBpcDf;B?7BL5DEpAjpAqPAU-B?
7Dq,CAAAOrAr,ArWBt4D8'CV3Cv0DLrBXCA2qDPnAWfAMpBjKAn3AWfDPdAKzD:TB5IAOrAMpB
6?Bm'DbwDPdAS-C!UA8XDEpA8XBjgAT(B5IDPnChvA8XDEpBflB2IAr?
AWfBBLAsJBgPCV3Dz7DW,AoYDukDf;ArWDEpAjpAqPAMpDQHAoYDRvBt4C:)BflB2IBgPDCRAM
pA8XDYZBjKD(mBf3DEpBfVA,rC;EBOJDEiBjgBdeAr,BgPAS-Ar,CjhAr?
AqPDPnCAAAOrDPnAWfDRvDPdChtCxuBIkDW,AoYAO'DPdCZEAoMBIKBRlAqPDPdAP3B.bCTCwDDcACy?CbNAMJAr,CV3DPdBfVDPdB51CV3DPdCBA2qC:)ChtCxuCV3CsfBjKAn3AfPCgIBrGAOrArWDEpDM6AWfAOrBv'DkZClsA2qAOrArWDEpCZ
EBgPAS-D1nB?
7BXCAtICV3CsfD1nAn3Bt4Bm'BkgDEpCdcAMpCZEAa2AXMAtzB51Dv0AWfAMpCVqAKzB8gAa?
DEpA2qBv'Ah.B5 B-XDcADPdCdcC2UB5
Ar0CYKAn3BjKDPdBfVDs5AMpAMpAtIDcADs5DPdBOJBgPAoYDkZDEpBjKDLrDr1CV3AWfAOrBg
PCr!CneC,kBgPCZEAtIBkgDEpB0jATvB5IA8XAsJAMpD:TAoWCr!AMpC(lAWfAOrBpj
Amu cica era odata intr-o tara un crai, care avea trei feciori. Si craiul acela mai avea un frate mai
mare, care era imparat intr-o alta tara, mai departata. Si imparatul, fratele craiului, se numea
Verde-imparat; si imparatul Verde nu avea feciori, ci numai fete. Multi ani trecura la mijloc de
cand acesti frati nu mai avura prilej a se intalni amandoi. Iara verii, adica feciorii craiului si fetele
imparatului, nu se vazuse niciodata de cand erau ei. Si asa veni imprejurarea de nici imparatul
Verde nu cunostea nepotii sai, nici craiul nepoatele sale: pentru ca tara in care imparatea fratele
cel mai mare era tocmai la o margine a pamantului, si craia istuilalt la o alta margine. Si apoi, pe
vremile acelea, mai toate tarile erau bantuite de razboaie grozave, drumurile pe ape si pe uscat
erau putin cunoscute si foarte incurcate si de aceea nu se putea calatori asa de usor si fara
primejdii ca in ziua de astazi. Si cine apuca a se duce pe atunci intr-o parte a lumii adeseori dus
ramanea pana la moarte.
14
#include "Header.h"
long l_a_la_b_mod_c(long a, long b, long c1)
{
long p = 1;
a %= c1;
while (b>0)
{
if (b % 2)
p = (p*a) % c1;
a = (a*a) % c1;
b /= 2;
}
return p;
}
long l_modulo(long k, long n){//extindem operatorul modulo (%) si pentru numere negative
if (k<0)k = n - (-k) % n;
if (k >= n) return k%n;
return k;
}
long l_invers(long a, long n){
long q, r, x0 = 1, x1 = 0, copy_n = n;
a = l_modulo(a, n);
while (n != 0)
{
r = n;
q = a / n;
n = a%n;
a = r;
r = x1;
x1 = x0 - q*x1;
x0 = r;
}
if (a == 1)//daca numarul este inversabil
return l_modulo(x0, copy_n);
return -1;//daca numarul nu este inversabil, vom intoarce -1, pentru a putea afisa mesajul
corespunzator
}
int main()
{
citeste_alfabet();
char c[2000], v[2000];
int nr = 0;
ifstream in("sursa.txt");
ofstream out("destinatie.txt");
//a contine primele 5000 de numere prime
int a[1335]={2, 3, 5, 7, 11, 13, 17, 19, 23,
79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131,
181, 191, 193, 197, 199, 211, 223, 227, 229, 233,
283, 293, 307, 311, 313, 317, 331, 337, 347, 349,
409, 419, 421, 431, 433, 439, 443, 449, 457, 461,
523, 541, 547, 557, 563, 569, 571, 577, 587, 593,
15
16
struct pereche{
long n;
long fi;
};
while(in >> noskipws >> c[nr])
{
nr++;
}
//in b am pus toate numerele convenabile pentru n
pereche b[88];
int p = 0;
for (int i = 0; i < 1335; i++)
{
for (int j = 0; j < 1335; j++)
{
if(a[i]*a[j] > 20000 && a[i]*a[j] < 21000 && a[i]*a[j]%10 == 1)
{
b[p].n = a[i]*a[j];
b[p].fi = (a[i]-1)*(a[j]-1);
p++;
}
}
}
long cheie;
for (int i = 0; i < 88; i++)
{
for (int e = 9000; e < 10000 ; e++)
{
17
if(b[i].fi%e != 0)
{
cheie = l_invers(e, b[i].fi);
if(cheie != -1)
{
long t, s;
long c1, c2;
c1 = N*N;
c2 = N;
int n = 0;
for (int m = 0; m < nr; m= m+3)
{
t=
da_cod(c[m])*c1+da_cod(c[m+1])*c2+da_cod(c[m+2]);
//out << t << endl;
s = l_a_la_b_mod_c(t, cheie, b[i].n);
//out << s << "--->"<< s/N << endl;
v[n+1] = da_caracter(s%N);
s=s/N;
v[n] = da_caracter(s);
n = n+2;
}
n = n-1;
int test =1;
for (int m = 0; m < n && test == 1; m++)
{
if('9' == v[m] || v[m] == ')')
test = 0;
}
if(test == 1)
{
for (int h = 0; h < n; h++)
out << v[h];
out << endl;
}
}
}
in.close();
out.close();
return 0;
}
18