RSA算法实验C++

RSA算法实验C++

ID:39467899

大小:24.50 KB

页数:4页

时间:2019-07-04

RSA算法实验C++_第1页
RSA算法实验C++_第2页
RSA算法实验C++_第3页
RSA算法实验C++_第4页
资源描述:

《RSA算法实验C++》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、一、实验目的通过编程实现RSA的加密和解密过程,加深对公钥(非对称)密码算法的认识。二、实验环境软件工具:VisualC++6.0操作系统:windowsxp三、实验思想公钥密码算法是指一个加密系统的加密密钥和解密密钥是不同的,或者说不能用其中一个推导出另一个。在公钥密码算法的两个密钥中,一个是用于加密的密钥,它是可以公开的,称为公钥;另一个是用于解密的密钥,是保密的,称为私钥。公钥密码算法解决了对称密码体制中密钥管理的难题,并提供了对信息发送人的身份进行验证的手段,是现代密码学最重要的发明。RSA密码体制是目前为止最成功的公钥密码算法,虽然

2、它的安全性还未能得到理论证明,但经过20多年的密码分析和攻击,迄今仍然被实践证明是安全的。RSA算法描述如下:1.公钥选择两个互异的大素数p和q,n是二者的乘积,即n二pq使D(n)=(p-1)(q-1),D(n)为欧拉函数。随机选取正整数e,使其满足gcd(e,(D(n))=1,即e和D(n)互质,则将(n,e)作为公钥。2.私钥求出正数d,使其满足ed=1modD(n),则将(p,q,d)作为私钥。3.加密算法对于明文M,由C=Memodn,得到密文C。4.解密算法对于密文C,由M=Cdmodn,得到明文M如果窃密者获得了n,e和密文C,

3、为了破解密文必须计算出私钥d,为此需要先分解n为了提高破解难度,达到更高的安全性,一般商业应用要求n的长度不小于1024位,更重要的场合不小于2048位。四、实验数据(源程序)#defineMAX100//数组的最大长度#defineMARK('0'-1)char*Addition(chara[],charb[]);//实现加法char*Substraction(chara[],charb[]);//实现减法,若a

4、chara[],charb[]);//实现除法,结果向下取整。如Division("13","3")="4"charDiv_per_bit(chara[],inta_l,charb[]);//实现按位除voidSub_per_bit(chara[],charb[],int*count);//实现按位减,初始条件为a>bchar*Mode(chara[],charb[],charc[]);//实现取余运算(a^b)modcvoiddjs(chars[]);//生成大奇数sintRabin_Miller_Test(chars[]);//素数检验算

5、法生成100位的奇数voiddjs(chars[]){//生成大奇数sinti,j;srand(time(NULL));//修改随机数种子j=rand()%10;while(j==0)j=rand()%10;s[0]=j+'0';//最高位不为0保证产生的随机数有MAX位while(fmod(j,2)==0)j=rand()%10;s[MAX-1]=j+'0';//最低位为奇数保证产生的随机数为奇数for(i=1;i

6、t(chars[]){//素数检验算法chara[MAX],b[MAX],c[MAX],e[MAX];inti,j;i=0;//用于记录2整除s-1的次数strcpy(a,Substraction(s,"1"));strcpy(e,a);while(fmod(a[strlen(a)-1]-'0',2)==0){i++;strcpy(a,Division(a,"2"));}strcpy(b,a);//b用于记录余数//以下生成随机数a,且a小于sdjs(a);while(Compare(a,s)>=0)djs(a);j=0;strcpy(c,M

7、ode(a,b,s));if(Compare(c,"1")==0

8、

9、Compare(c,e)==0)return1;loop:if(j>0&&Compare(c,"1")==0)return0;j++;if(j

10、算(a^b)modcchara1[MAX],b1[MAX],c1[MAX],d[2*MAX],e[2*MAX];inti;strcpy(a1,a);strcpy(b

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。