欢迎来到天天文库
浏览记录
ID:40564708
大小:30.00 KB
页数:5页
时间:2019-08-04
《RSA加密解密C++版》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、运行环境:WindowsXP开发环境:MicrosoftVisualC++中文版软件思路:加密密钥和解密密钥的生成过程:①选取两个足够大的质数P和Q;②计算P和Q相乘所产生的乘积n=P*Q;③找出一个小于n的数e,使其符合与(P-1)*(Q-1)互为质数;④另找一个数d,使其满足(e*d)mod[(P-1)*(Q-1)]=1;(n,e)即为公开密钥,(n,d)即为私有密钥。//////////////////////////////////////////////////////////////////#include#include#incl
2、ude#includeusingnamespacestd;///////////////////////////////判断素数////////////////////////////intjudge_num(longn){longtemp=0,i;for(i=2;i<=n/2;i++) temp=n%i;returntemp;}/////////////////////////产生密钥////////////////////////////////////voidcreatkey(longp,longq,longd){longe,n,m;b
3、oolok=true;cout<<"p=";cin>>p;while(judge_num(p)==0){cout<<"p不是素数,请重新输入:p=";cin>>p;}cout<<"q=";cin>>q;while(judge_num(q)==0){cout<<"q不是素数,请重新输入:q=";cin>>q;}n=p*q;m=(p-1)*(q-1);for(e=2;e<=m/2;e++) for(d=sqrt(n);d>0;d--) {if((e*d)%m==1) { cout<<"公钥:e="; cout<4、 cout<<"私钥:d="; cout<>p; while(judge_num(p)==0) { cout<<"p不是素数,请重新输入:p="; cin>>p; } cout<<"q="; cin>>q; while(judge_num(q)==0) {5、 cout<<"q不是素数,请重新输入:q="; cin>>q; } n=p*q; m=(p-1)*(q-1); }}}////////////////////////////////////加密////////////////////////////longckey(longed,longn,charc){longi,cc=1;for(i=0;i=n)cc=cc%n; if(cc==0&&i!=(ed-1)) cc=1;}returncc;}/////6、///////////////////////////////解密////////////////////////////longrkey(longed,longn,longc){longi,cc=1;for(i=0;i=n)cc=cc%n; if(cc==0&&i!=(ed-1)) cc=1;}returncc;}//////////////////////////主函数//////////////////////////////intmain(){longp,q,d,k,e,n,nn=0,i,j;stringc;ch7、arccc;intln=0;stringccn;longrc,rcn=1,rn;floatcn;boolok=true;while(ok){cout<<"请问您需要哪种服务?"<>k;}while(k!=1&&k!=2&&k!=3&&k!=4);if(k==4)ok=false;if(k==1)////////////////////密钥运算{creatkey(p,q,d);}if(
4、 cout<<"私钥:d="; cout<>p; while(judge_num(p)==0) { cout<<"p不是素数,请重新输入:p="; cin>>p; } cout<<"q="; cin>>q; while(judge_num(q)==0) {
5、 cout<<"q不是素数,请重新输入:q="; cin>>q; } n=p*q; m=(p-1)*(q-1); }}}////////////////////////////////////加密////////////////////////////longckey(longed,longn,charc){longi,cc=1;for(i=0;i=n)cc=cc%n; if(cc==0&&i!=(ed-1)) cc=1;}returncc;}/////
6、///////////////////////////////解密////////////////////////////longrkey(longed,longn,longc){longi,cc=1;for(i=0;i=n)cc=cc%n; if(cc==0&&i!=(ed-1)) cc=1;}returncc;}//////////////////////////主函数//////////////////////////////intmain(){longp,q,d,k,e,n,nn=0,i,j;stringc;ch
7、arccc;intln=0;stringccn;longrc,rcn=1,rn;floatcn;boolok=true;while(ok){cout<<"请问您需要哪种服务?"<>k;}while(k!=1&&k!=2&&k!=3&&k!=4);if(k==4)ok=false;if(k==1)////////////////////密钥运算{creatkey(p,q,d);}if(
此文档下载收益归作者所有