当前位置:文档之家› 密码学实验-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<e<f(n),满足gcd(e,f(n))=1,e是公开的加密密钥Step4:计算d,满足de=1(mod f(n)),d是保密的解密密钥
2.p=17,q=23,n=pq=391,f(n)=(p-1)(q-1)=352,明文空间为{0,1,2,····390,391}。

2.运行程序如下:
#include <math.h>
#include <stdlib.h>
#include <time.h>
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<e;i++){
C=C*M;
C=fmod(C,n);
}
cout<<"计算出密文为:"<<C<<endl; }
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 公钥密码运行程序。

相关主题