Диплом жұмысы 5В011100 «Информатика»


 Параграфқа арналған бағдарламалар (Borland C++)



Pdf көрінісі
бет22/28
Дата23.01.2022
өлшемі0,93 Mb.
#113534
түріДиплом
1   ...   18   19   20   21   22   23   24   25   ...   28
Байланысты:
СКЖ 111-81 Нурбеков Рауан Жасанды интеллект көмегімен криптографиялық жүйелердің тұрақтылығын талдау
титул, Қазақша стандарт, Аятул курси суреси, essenzholova (pdf.io), essenzholova (pdf.io), Аятул курси суреси, аллельді емес гендердің әрекеттесуі, ескерту, КЕШЕН, А.Ж. глосарии, А.Ж.сөж, Жырау, Пернеханқызы Балнұр, 2
 

4.4 Параграфқа арналған бағдарламалар (Borland C++) 

 

RSA шифрлау бағдарламасы: 



#include 

#include 

#includeStepen (int a,int d,int M) //а d (mоd М) 

{r=1;(int i=0;i

}main() 

{int 


x,f 

x;e,M,flg;<<<"Vvedit 

vidkrutuy 

kluch:"

"; 

cin>>M;<

"; 

cin>>e; 


{<"Vvedit 

povodomlennya: 

"<x;  

x=Stepen(x,e,M);//есептеу  Ғ(х)=х  е  е(MOD  m)<

">flg; 

}while(flg);<

Робот нәтижесіvidkrutuy kluch:= 39491= 29povodomlennya: 



povidomlennya: 30914? Press 1(Tak) 0(Ni):1povodomlennya: 

povidomlennya: 18729? Press 1(Tak) 0(Ni):0vuhody natusnit Enter... 

 



42 

 

Бағдарлама дешифрування RSА 



#include 

#include 

#includeStepen (int a,int d,int M) //а d (mоd m) 

{ int r=1;(int i=0;i

}NOD (int a, int b) / / опція, що най білу- 

{ int r;//більший спільний дільник а, b//(алгоритмі Евкліда) 

{if(a

{r=a;a=b;b=r;}=a%b;=r;}(r);b; 

}main() 

{int  x,f  x,d  1;e,M,flg,d,fi  M;=11*23*17;  e=29;//шифравання  м  параметрін 

енгізу=10*22*16;<<"2.2.3) 

(NOD(e,fi 

M)!=1)cout<

parametry...";{=1;(d*e%fi M!= 1 && d

{cout< < endl< " Vvedit shifrtext:"; > > f x;  i=0; {

рет кильте >>d 1; / дешифрлеу++;} (d 1!=d && i<3);(e*d 1%fi M!1) / / қате болса, 

бас тартады< < < endl< < " Vu ne znaete klucha!"; 

{x=  Stepen  (f  x,  d  1,  M);  /  /  әйтпесе-х=[f(х)]  d(mмоd)<

Povidomlennya: "<

}  /  /  /  қайта  іске  асыру:  f  (х)=х  е(mоd  m)  ();<

0(Ni):";>>flg; 

}while(flg); 

}<

Роботтың  нәтижесі  (параметрлерде)=  4301=  24parametry...vuhody  natusnit 



Enter... 

Роботтың  нәтижесі(  жарамсыз  кілт)  =  4301=  29shifrtext:  1505kluch: 

4712kluch:1423kluch:2047ne  znaete  klucha!?  Press  1(Tak)  0(Ni):0vuhody  natusnit 

Enter... 

 

Роботтандырылған бағдарламаның нәтижесі (врни ключ): 



= 4301= 29шифртекст: 1505ключ:2549.: 4207: 1505 = 1505? 1 (Tak) 0(Ni): 1083: 

3210 = 3210? 1 (тақ) 0 (Ni): 0 кіріспе...  

Бұл мысалда жабық кілт бағдарлама кодында бар және экранға шығады, бұл 

қауіпсіздік  тұрғысынан  өте  жақсы  емес.  Сондықтан  жабық  кілтті  файлға  жазып, 

оны сол жерден оқу керек. Үлкен қарапайым сандарды генерациялау бағдарламасы 

(2.2.2-да  сипатталған  алгоритмді  жүзеге  асырады).  2.1  кестесін  де  қолдануға 

болады. 2-ден 3011-ге дейінгі қарапайым сандар  

# include  

# include  

# include  




43 

 

#  include  namespace  std;  Proverka  Deleniem(int  N)//  /  Сан  қарапайым 



екенін анықтайды 

 

 



{ int d,r;=2; r=1;((r!=0)&&(d

{ r=N%d; 

d++; 

}(!r) return 0;//n жай болмаса 0 қайтарады;//N, Егер N - жай болса 



}Prostoe chislo () / / қарапайым таңдау функциясы 

{ int i, n, R, S; / / сандар 

{cout< < endl< "Vvedite isxodnoe prostoe:" >S;//S - кейбір қарапайым 

}(!Proverka Deleniem (S);=1;N=0; R=(S-3)*2;//бастап R=(S-3)*2(i) 

{ R=R+4;=R*S+1;//іздейміз N түріндегі N=R*S+1(Proverka Deleniem(N)) 

cout<

Press 

1(YES) 


or 

(NO)";>i;=N;//жалғастыру үшін N бастапқы ретінде аламыз 



}i++;(i>N/4) 

{cout<>i; 

}();N; 


}main() 

2.  Осы  бұйрықтың  орындалуын  бақылау  Қазақстан  Республикасының  вице-

министріне жүктелсін.; 

 



Роботтың  нәтижесі:  қарапайым:  11  =  353-қарапайым.Ұзын?  1  (Иә)немесе 

0(Жоқ)  түймесін  басыңыз  0xdm:  31=1861-қарапайым.Ұзын?  1  (Иә)  немесе  0 

(Жоқ)басыңыз 0чис: p=353 q=1861 

 

Сонда шифрлау бағдарламасы келесі нәтиже береді: 



vidkrutuy kluch:= 656933= 997povodomlennya: 

povidomlennya: 287868? Press 1(Tak) 0(Ni):0vuhody natusnit Enter... 

 

Бағдарлама  m  қарапайым  көбейткіштерге  Ферма  таңдау  және  факторизация 



әдісімен орналастырады: 

# include 

# include 

# includeStepen(int a, int d, int M) / / а d (MOD m) 

{ int r=1;(int i=0;i

}NOD (int a, int b) / / най табу функциясы- 

{ int r; / / үлкен жалпы бөлгіш а және b / / / (Евклид алгоритмі) 

 

 



 

 

 



 

 

 



 

 

 



 

 

{if(a



44 

 

{r=a;a=b;b=r;}=a%b;=r;}(r);b; 



}Pidbor (int M)//іздеу функциясы 

{cout<  <  endl<  "  Pryamui  pidbor:";//m  переборомі,p,fi  M,count;    M=1;=2; 

count=0; / / іздеуді бастаймыз и=2< " \nm: "

{if (M%i==0)//егер m мақсатты болса, онда 

{p=i; M=M / p; / / M ретінде бөлу нәтижесін аламыз 

fi  M*=(p-1);  i=2;  /  /  φ  (m)  (и-1)<  <  p<"*";}  /  /  және  қайта  және++  аралығын 

бастаймыз; / / әрекет саны 

}<<"\nfi M: "<

}Ferma (int M)//қарапайым іздеуді іске асыратын функция 

{//  факторизация  арқылы  көбейткіштерді  <

int,fi M,count;sq,y; 

 

{=pow  ((double)x,  (double)2)  -  M;  cout<  <  "\nx^2-m=  "  

<<"\ny=  "

олар тең болса 

{cout< " \nm:" <

1)*(x+y int-1);/то m=(х-у)*(х+у);}//а φ(m)=(х-у-1)*(х+у-1)++; x++; 

}while(x<=M/2);<<"\nfi M: "<

}main() 


 

{int  x,f  x;e,M,flg,d,  fi  M;<<<"Vvedit  vidkrutuy  kluch:"

cin>>M;//ашық  кілтті  енгіземіз<"e=  ";  cin>>e;  m=Ferma(M);//m  m=Pidbor(M) 

көбейткіштерін  таңдаймыз;  (NOD  (e,fi  M)!=1)cout<

{=1; / / / φ(m) И е, D(d*e%fi M) табамыз!=1 && d

{cout<<>f  x;=  Stepen(f  x,d,M);//есептейміз  х=[f(х)] 

d(mоd  m)<"Povidomlennya:  "

endl;  ()/тексереміз:  f(Х)=Х  е(MOD  m)<  

0(Ni):";>>flg; 

}while(flg); 

}<

 



Робот бағдарлама жұмысының нәтижесі:  

2-м=  13.0767^2-м  =  392=  19.799^2-м=  615=  24.7992^2-м=  840=  28.9828^2-м= 

1067= 32.665^2-м= 1296= 36: 11929 = 79 * 151  M: 11700 operaciy: 6pidbar:: 11929 = 

79  *  151  M:  11700  operaciy:  228=  2753shifrtext:  10001:  5431:  10001  =  10001? 

Басыңыз 1 (тақ) 0 (Ni): 1shifrtext: 6597: 3442: 6597 = 6597? 1 (тақ) 0 (Ni): 0 кіріспе... 

 



Достарыңызбен бөлісу:
1   ...   18   19   20   21   22   23   24   25   ...   28




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет