欢迎来到天天文库
浏览记录
ID:39570426
大小:1.27 MB
页数:14页
时间:2019-07-06
《密码算法安全分析与算法攻击》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、实验项目与实验报告(1)学科:信息与网络安全学号:20134088141姓名:羊波时间:10月11日实验项目:RSA加密解密算法的实现(使用工具软件与代码实现)及RSA的安全性分析实验目的:通过利用RAS工具的使用实现加密和解密过程,加深对公钥(非对称)密码算法的认识。一、实验步骤:1.完成实验教程1-32.登录网络平台修改作业发布密码,上传实验报告一3.注册百度知道号,并加入知行网络团队。二、实验内容:实验原理:公钥密码算法是指一个加密系统的加密密钥和解密密钥是不同的,或者说不能用其中一个推导出另一个。在公
2、钥密码算法的两个密钥中,一个是用于加密的密钥,它是可以公开的,称为公钥;另一个是用于解密的密钥,是保密的,称为私钥。公钥密码算法解决了对称密码体制中密钥管理的难题,并提供了对信息发送人的身份进行验证的手段,是现代密码学的最重要的发明。RAS算法描述如下:1.公钥选择两个不同的大素数p和q(一般都为100位左右的十进制数字),n是二者的乘积;计算乘积:n=pq;计算欧拉函数值:φ(n)=(p-1)(q-1);随机选取正整数e,使其满足13、数d,使其满足ed≡1modφ(n),即(de-1)modφ(n)=0,由此推出:ed=tφ(n)+1(t是大于等于1的正整数);则将(p,q,d)作为私钥。3.加密算法RAS加密消息m时(这里假设m是以十进制表示的),首先将消息分成大小合适的数据分组,然后对分组分别进行加密。每个分组的大小应该比n小。设C为明文分组M加密后的密文,则加密公式为:C=M^emodn得到密文C。4.解密算法:对每一个密文分组进行如下运算M=C^dmodn得到明文M。如果窃密者获得了n,e和密文C,为了破解密文必须计算出私钥d,为4、此需要先分解n,为了提高破解难度,达到更高的安全性,一般商业应用要求n的长度不小于1024位,更重要的场合不小于2048位。使用RSATool2.14工具软件实现操作步骤如下:1.打开RSA-Tool工具软件窗口,如下图1所示:图12.在“NumberBase”组合框中选择进制为10,如下图2所示:图23.单击“Start”按钮,然后随意移动鼠标直到提示信息框出现,以获取一个随机数种子,如下图3所示:图34.在“KeySize(Bits)”编辑框中输入32,如下图4所示:图41.单击“Generate”按钮生5、成,如下图5所示:图56.复制“Prime(P)”编辑框中的内容到“PublicExp.(E)”编辑框,如下图6所示:图67.在“NumberBase”组合框中选择进制为16,如下图7所示:图78.记录下“Prime(P)”编辑框中的十六进制文本内容:BCF3。9.再次重复第2步。10.在“KeySize(Bits)”编辑框中输入你所希望的密钥位数,从32到4096,位数越多安全性也高,但运算速度越慢,一般选择1024位足够了;单击“Generate”按钮生成,如下图8,图9所示:图8图911.单击“Test6、”按钮测试,在“Messagetoencrypt”编辑框中随意输入一段文本,然后单击“Encrypt”按钮加密,再单击“Decrypt”按钮解密,看解密后的结果是否和所输入的一致,如果一致表示所生成的RSA密钥可用,否则需要重新生成,如图10所示:图1012.到此生成完成,“PrivateExp.(D)”编辑框中的内容为私钥如下图11,第7步所记录的内容为公钥(BCF3),“Modulus(N)”编辑框中的内容为公共模数如下图12,请将上述三段十六进制文本保存起来即可。图11图12使用代码实现:#includ7、e#includeunsignedlongprime1,prime2,ee;unsignedlong*kzojld(unsignedlongp,unsignedlongq)//扩展欧几里得算法求模逆{unsignedlongi=0,a=1,b=0,c=0,d=1,temp,mid,ni[2];mid=p;while(mid!=1){while(p>q){p=p-q;mid=p;i++;}a=c*(-1)*i+a;b=d*(-1)*i+b;temp=a;a=c;c=temp8、;temp=b;b=d;d=temp;temp=p;p=q;q=temp;i=0;}ni[0]=c;ni[1]=d;return(ni);}unsignedlongmomi(unsignedlonga,unsignedlongb,unsignedlongp)//模幂算法{unsignedlongc;c=1;if(a>p)a=a%p;if(b>p)b=b%(p-1);while(b!=0){while
3、数d,使其满足ed≡1modφ(n),即(de-1)modφ(n)=0,由此推出:ed=tφ(n)+1(t是大于等于1的正整数);则将(p,q,d)作为私钥。3.加密算法RAS加密消息m时(这里假设m是以十进制表示的),首先将消息分成大小合适的数据分组,然后对分组分别进行加密。每个分组的大小应该比n小。设C为明文分组M加密后的密文,则加密公式为:C=M^emodn得到密文C。4.解密算法:对每一个密文分组进行如下运算M=C^dmodn得到明文M。如果窃密者获得了n,e和密文C,为了破解密文必须计算出私钥d,为
4、此需要先分解n,为了提高破解难度,达到更高的安全性,一般商业应用要求n的长度不小于1024位,更重要的场合不小于2048位。使用RSATool2.14工具软件实现操作步骤如下:1.打开RSA-Tool工具软件窗口,如下图1所示:图12.在“NumberBase”组合框中选择进制为10,如下图2所示:图23.单击“Start”按钮,然后随意移动鼠标直到提示信息框出现,以获取一个随机数种子,如下图3所示:图34.在“KeySize(Bits)”编辑框中输入32,如下图4所示:图41.单击“Generate”按钮生
5、成,如下图5所示:图56.复制“Prime(P)”编辑框中的内容到“PublicExp.(E)”编辑框,如下图6所示:图67.在“NumberBase”组合框中选择进制为16,如下图7所示:图78.记录下“Prime(P)”编辑框中的十六进制文本内容:BCF3。9.再次重复第2步。10.在“KeySize(Bits)”编辑框中输入你所希望的密钥位数,从32到4096,位数越多安全性也高,但运算速度越慢,一般选择1024位足够了;单击“Generate”按钮生成,如下图8,图9所示:图8图911.单击“Test
6、”按钮测试,在“Messagetoencrypt”编辑框中随意输入一段文本,然后单击“Encrypt”按钮加密,再单击“Decrypt”按钮解密,看解密后的结果是否和所输入的一致,如果一致表示所生成的RSA密钥可用,否则需要重新生成,如图10所示:图1012.到此生成完成,“PrivateExp.(D)”编辑框中的内容为私钥如下图11,第7步所记录的内容为公钥(BCF3),“Modulus(N)”编辑框中的内容为公共模数如下图12,请将上述三段十六进制文本保存起来即可。图11图12使用代码实现:#includ
7、e#includeunsignedlongprime1,prime2,ee;unsignedlong*kzojld(unsignedlongp,unsignedlongq)//扩展欧几里得算法求模逆{unsignedlongi=0,a=1,b=0,c=0,d=1,temp,mid,ni[2];mid=p;while(mid!=1){while(p>q){p=p-q;mid=p;i++;}a=c*(-1)*i+a;b=d*(-1)*i+b;temp=a;a=c;c=temp
8、;temp=b;b=d;d=temp;temp=p;p=q;q=temp;i=0;}ni[0]=c;ni[1]=d;return(ni);}unsignedlongmomi(unsignedlonga,unsignedlongb,unsignedlongp)//模幂算法{unsignedlongc;c=1;if(a>p)a=a%p;if(b>p)b=b%(p-1);while(b!=0){while
此文档下载收益归作者所有