实验3 非对称密码算法RSA
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验3 非对称密码算法RSA
一、实验目的
通过实际编程了解非对称密码算法RSA的加密和解密过程,加深对非对称密码算法的认识。
二、实验原理
对称密码算法要求通信双方通过交换密钥实现使用同一个密钥,这在密钥的管理、发布和安全性方面存在很多问题,而非对称密码算法解决了这个问题。
加密密钥和解密密钥是不同的,其中加密密钥是可以公开的,解密密钥是要求保密的,并且不能用其中的一个推导出另一个。
它的安全性是建立在“大数分解和素性检测”这个数论难题的基础上,即将两个大素数相乘在计算上容易实现,而将该乘积分解为两个大素数因子的计算量相当大。
虽然它的安全性还未能得到理论证明,但经过30年的密码分析和攻击,迄今仍然被实践证明是安全的。
三、实验环境
运行Windows或者Linux操作系统的PC机,具有gcc(Linux)、VC(Windows)等C语言编译环境。
四、实验内容和步骤
1、为了加深对RSA算法的了解,根据已知参数:2
q
p,手工
=M
=
11
,3=
,
计算公私钥,并对明文进行加密,然后对密文进行解密。
2、编写RSA程序,实现对数字和字符进行加密,了解RSA算法原理。
其中p、q不要求为大素数,实现基本功能流程即可。
参考:
/*扩展欧几里德算法
例如,求5关于模14的乘法逆元:
14=5*2+4
5=4+1
说明5与14互素,存在5关于14的乘法逆元。
1=5-4=5-(14-5*2)=5*3-14
因此,5关于模14的乘法逆元为3。
Extended Euclid (d,f) //算法求d关于模f的乘法逆元d-1 ,即d* d-1 mod
f = 1
1 。
(X1,X2,X3) := (1,0,f);(Y1,Y2,Y3) := (0,1,d)
2。
if (Y3=0) then return d-1 = null //无逆元
3。
if (Y3=1) then return d-1 = Y2 //Y2为逆元
4。
Q := X3 div Y3 //整除
5。
(T1,T2,T3) := (X1 - Q*Y1,X2 - Q*Y2,X3 - Q*Y3)
6 。
(X1,X2,X3) := (Y1,Y2,Y3)
7。
(Y1,Y2,Y3) := (T1,T2,T3)
8。
goto 2
*/
代码:
signed __int64 gcd1(signed __int64 a, signed __int64 b)
{
signed __int64 c,d=a;
signed __int64 q0=0,q1=1,q2;
do{
c=a%b;
if (c)
q2 = -1*a/b*q1+q0;
q0=q1,q1=q2;
a=b;
b=c;
}while(c);
return q2>0?q2:q2+d;
}。