文档库 最新最全的文档下载
当前位置:文档库 › 密码学实验-RSA公钥密码

密码学实验-RSA公钥密码

密码学实验-RSA公钥密码
密码学实验-RSA公钥密码

实验报告

实验八、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 公钥密码运行程序

相关文档