实验报告
实验八、RSA公钥密码
实验目的:
熟练掌握RSA公钥密码算法原理及实现。
实验内容:
1、写出RSA公钥密码算法及其实现。
2、当取两素数分别为17、23,加密密钥为35时,写出其明文空间,并求出下列明文的密
文:1、15、17、23、48、235。
3、当取两素数分别为17、23,加密密钥为35时,求相应的解密密钥。
实验结果:
1.算法:
Step1:选取两个大素数p和q,p和q保密
Step2:计算n=pq,f(n)=(p-1)(q-1),n公开,f(n)保密
Step3:随机选取正整数1 2.p=17,q=23,n=pq=391,f(n)=(p-1)(q-1)=352,明文空间为{0,1,2,····390,391}。 2.运行程序如下: #include #include #include void main() { int i; double M,C,e,n,p,q,t; cout<<"请输入素数p:"; cin>>p; cout<<"请输入素数q:"; cin>>q; n=p*q; t=(p-1)*(q-1); cout<<"请输入加密密钥e:"; cin>>e; cout<<"输入明文M:"; cin>>M; C=1; for(i=0;i C=C*M; C=fmod(C,n); } cout<<"计算出密文为:"< 3.运行结果如下: (1)密文1的加密结果为: (2)密文15的加密结果为: (3)密文17的加密结果为: (4)密文23的加密结果为: (5)密文48的加密结果为: (6)密文235的加密结果为: 4. gcd (e ,f (n ))=1即gcd (35,352)=1可求得解密密钥d=171,容易验证35*171=1(mod 352)。即391mod mod 171c n c m d == 总结与分析: 通过本次实验熟练掌握RSA 公钥密码算法原理。不仅能运算出简单的RSA 公钥密码,也能通过程序迅速的解决复杂的RSA 公钥密码。在以后的学习过程中还需要熟练知识结构。 附录:ch8 RSA 公钥密码运行程序