最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

RSA算法(论文+代码)

IT圈 admin 35浏览 0评论

2024年4月17日发(作者:潘心)

RSA加密算法设计报告

课题名称: RSA加密算法

设计人(姓名):

设计人(学号):

指导教师:

评阅成绩:

评阅意见:

提交报告时间:20 年 月 日

RSA加密算法

计算机科学与技术 专业

学生 指导老师

[摘要] RSA算法是第一个能同时用于加密和数字签名的算法,也易于理

解和操作。RSA是由Ron Rivest、Adi Shamir、Len Adleman与1997年在MT

开发的。RSA是被研究得最广泛的公钥算法,采用分块加密的思想,明文和密

文都是0到n—1中的某个整数,从提出到现在已近二十年,经历了各种攻击的

考验,逐渐为人们接受,普遍认为是目前最优秀的公钥方案之一。RSA算法是

一种非对称密码算法,所谓非对称,就是指该算法需要一对密钥,使用其中一

个加密,则需要用另一个才能解密。 RSA的安全性依赖于大数的因子分解,

但并没有从理论上证明破译RSA的难度与大数分解难度等价。即RSA的重大

缺陷是无法从理论上把握它的保密性能如何,而且密码学界多数人士倾向于因

子分解不是NPC问题。

关键词: RSA 公钥 NPC

-1-

一.设计环境

1.硬件环境:Inter(R)Core(TM)*********************

2.软件环境:操作系统:Windows xp操作系统

编译软件:Visual C++

二.算法描述

1.

选择两质数p、q

2.

计算n = p*q。

3.

计算n的欧拉函数 (n)=(p-1)(q-1)。

4.

选择整数e,使e与 (n)互质,且1

5.

计算d,使d*e=1 mod (n)。

6.

其中,公钥 KU={e,n},私钥 KR={d,n}。

7.

加密:C=Me mod n

8.

解密:M=Cd mod n=(Me)d mod n= Med mod n 。

三.源程序清单:

#include

using namespace std;

int main()

{

int p,q,N;

int i,D,E,PT,CT;

cout<<"*****RSA加密算法*****"<

cout<<"输入两个素数p和q:n";

cin>>p;

cin>>q;

N=(p-1)*(q-1);

for(i=2;i

{

if(N%i==0)

{

-2-

}

cout<

}

}

cout<<"nn输入一个数,该数不等于上面的任何一个数!"<

cin>>E;

i=1;

while(i>0)

{

if((i*E)%N==1)

{

D=i;

cout<

break;

}

i++;

}

cout<<"输入需要加密的明文!"<

cin>>PT;

int j=PT;

for(i=1;i

{

PT*=j;

}

cout<<"n加密后的密文是:";

CT=PT%(p*q);

cout<

cout<<"n*****RSA解密算!*****nn";

cout<<"接收的密文是 "<

cout<<"密钥是:"<

cout<<"解密后的明文是:n";

PT=CT;

for(j=1;j

{

PT=(PT*CT)%(p*q);

}

cout<

return 0;

-3-

四.运行结果:

1.输入素数:

2.输入公钥、输出公钥

3.输入明文进行加密、解密

-4-

一个完整的RSA截屏

五.RSA算法分析分析

RSA的缺点主要有:

1. 产生密钥很麻烦,受到素数产生技术的限制,因而难以做到一次一密。

2. 分组长度太大,为保证安全性,n 至少也要 600 bits以上,使运算代价很

高,尤其是速度较慢,较对称密码算法慢几个数量级;且随着大数分解技术的

发展,这个长度还在增加,不利于数据格式的标准化。

RSA 的安全性:

RSA的安全性依赖于大数分解,但是否等同于大数分解一直未能得到理论上

的证明,因为没有证明破解 RSA就一定需要作大数分解。假设存在一种无须

分解大数的算法,那它肯定可以修改成为大数分解算法。目前, RSA 的一些

变种算法已被证明等价于大数分解。不管怎样,分解n是最显然的攻击方法。

现在,人们已能分解多个十进制位的大素数。因此,模数n 必须选大一些,因

具体适用情况而定。

-5-

RSA的速度:

由于进行的都是大数计算,使得RSA最快的情况也比DES慢上好几倍,无

论是软件还是硬件实现。速度一直是RSA的缺陷。一般来说只用于少量数据

加密。

。参考文献

【1】 网络安全基础应用与标准(第二版 中文版) Willian Stallings(张英 王景新译)

中国电力出版社 2004年6月

【2】 现代密码学原理与实践 于工 牛秋娜 西安电子科技大学出版社 2009年1月

【3】 应用密码学 刘嘉勇 清华大学出版社 2008年9月

-6-

2024年4月17日发(作者:潘心)

RSA加密算法设计报告

课题名称: RSA加密算法

设计人(姓名):

设计人(学号):

指导教师:

评阅成绩:

评阅意见:

提交报告时间:20 年 月 日

RSA加密算法

计算机科学与技术 专业

学生 指导老师

[摘要] RSA算法是第一个能同时用于加密和数字签名的算法,也易于理

解和操作。RSA是由Ron Rivest、Adi Shamir、Len Adleman与1997年在MT

开发的。RSA是被研究得最广泛的公钥算法,采用分块加密的思想,明文和密

文都是0到n—1中的某个整数,从提出到现在已近二十年,经历了各种攻击的

考验,逐渐为人们接受,普遍认为是目前最优秀的公钥方案之一。RSA算法是

一种非对称密码算法,所谓非对称,就是指该算法需要一对密钥,使用其中一

个加密,则需要用另一个才能解密。 RSA的安全性依赖于大数的因子分解,

但并没有从理论上证明破译RSA的难度与大数分解难度等价。即RSA的重大

缺陷是无法从理论上把握它的保密性能如何,而且密码学界多数人士倾向于因

子分解不是NPC问题。

关键词: RSA 公钥 NPC

-1-

一.设计环境

1.硬件环境:Inter(R)Core(TM)*********************

2.软件环境:操作系统:Windows xp操作系统

编译软件:Visual C++

二.算法描述

1.

选择两质数p、q

2.

计算n = p*q。

3.

计算n的欧拉函数 (n)=(p-1)(q-1)。

4.

选择整数e,使e与 (n)互质,且1

5.

计算d,使d*e=1 mod (n)。

6.

其中,公钥 KU={e,n},私钥 KR={d,n}。

7.

加密:C=Me mod n

8.

解密:M=Cd mod n=(Me)d mod n= Med mod n 。

三.源程序清单:

#include

using namespace std;

int main()

{

int p,q,N;

int i,D,E,PT,CT;

cout<<"*****RSA加密算法*****"<

cout<<"输入两个素数p和q:n";

cin>>p;

cin>>q;

N=(p-1)*(q-1);

for(i=2;i

{

if(N%i==0)

{

-2-

}

cout<

}

}

cout<<"nn输入一个数,该数不等于上面的任何一个数!"<

cin>>E;

i=1;

while(i>0)

{

if((i*E)%N==1)

{

D=i;

cout<

break;

}

i++;

}

cout<<"输入需要加密的明文!"<

cin>>PT;

int j=PT;

for(i=1;i

{

PT*=j;

}

cout<<"n加密后的密文是:";

CT=PT%(p*q);

cout<

cout<<"n*****RSA解密算!*****nn";

cout<<"接收的密文是 "<

cout<<"密钥是:"<

cout<<"解密后的明文是:n";

PT=CT;

for(j=1;j

{

PT=(PT*CT)%(p*q);

}

cout<

return 0;

-3-

四.运行结果:

1.输入素数:

2.输入公钥、输出公钥

3.输入明文进行加密、解密

-4-

一个完整的RSA截屏

五.RSA算法分析分析

RSA的缺点主要有:

1. 产生密钥很麻烦,受到素数产生技术的限制,因而难以做到一次一密。

2. 分组长度太大,为保证安全性,n 至少也要 600 bits以上,使运算代价很

高,尤其是速度较慢,较对称密码算法慢几个数量级;且随着大数分解技术的

发展,这个长度还在增加,不利于数据格式的标准化。

RSA 的安全性:

RSA的安全性依赖于大数分解,但是否等同于大数分解一直未能得到理论上

的证明,因为没有证明破解 RSA就一定需要作大数分解。假设存在一种无须

分解大数的算法,那它肯定可以修改成为大数分解算法。目前, RSA 的一些

变种算法已被证明等价于大数分解。不管怎样,分解n是最显然的攻击方法。

现在,人们已能分解多个十进制位的大素数。因此,模数n 必须选大一些,因

具体适用情况而定。

-5-

RSA的速度:

由于进行的都是大数计算,使得RSA最快的情况也比DES慢上好几倍,无

论是软件还是硬件实现。速度一直是RSA的缺陷。一般来说只用于少量数据

加密。

。参考文献

【1】 网络安全基础应用与标准(第二版 中文版) Willian Stallings(张英 王景新译)

中国电力出版社 2004年6月

【2】 现代密码学原理与实践 于工 牛秋娜 西安电子科技大学出版社 2009年1月

【3】 应用密码学 刘嘉勇 清华大学出版社 2008年9月

-6-

发布评论

评论列表 (0)

  1. 暂无评论