RSA密码算法

Author Avatar
Euan 9月 10, 2019
  • 在其它设备中阅读本文章

RSA密码算法

实验目的

1) 学习RSA密码算法的原理

2) 学习RSA密码算法的编程实

RSA公钥加密算法是1977年由Ron Rivest、Adi Shamirh和LenAdleman在美国麻省理工学院开发的。RSA算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但那时想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。

算法原理

RSA算法是一种非对称密码算法,所谓非对称,就是指该算法需要一对密钥,使用其中一个加密,则需要用另一个才能解密。

为了产生RSA公私钥对,需要进行以下几个步骤:

1.选取两个大素数,p和q(目前两个数的长度都接近512bit是安全的),并计算他们的乘积得n=pq。

2.根据欧拉函数,不大于n 且与n 互质的整数个数为s11

3.随机选择整数2 作为公钥,要求满足3 ,即 4 。则e和n是公钥,d是私钥。

加密过程

(1)RSA密钥生成部分代码流程图:

5

RSA密钥生成流程图
(2)RSA加密部分流程图:

6

RSA加密部分流程图

(3)RSA解密部分流程图:

7

RSA解密部分流程

实验环境

Windows Server 2012 R2

实验工具在【C:\tools\RSA密码算法】

实验步骤

1.打开C盘,进入工具目录(C:\tools\RSA密码算法),单击【rsa.exe】,运行密码算法。如图1所示

uO0076.png

2.输入【1】输入存放公钥和私钥的文件名,即可在程序同级目录下生成相应文件。如图2所示

uO0rtO.png

3.选择【2】,输入存放公钥的文件名和需要加密的文件【hello.txt】和需要输出的文件名【enhello.txt】。如图3所示

uO0w0x.png

4.对比明文文件内容和密文文件内容。如图4所示

uO0DAK.png

5.解密文件,进行类似的操作即可

实验思考

1.RSA密码算法的安全性在于什么?

RSA算法的安全在于,e、p、N,是随机生成的。知道e和N,想寻找p,在计算上是不可行的。问题是,我们使用的软件工具,生成这些随机材料时,真的是“随机”的吗?如果算法的提供者留下什么后门,或者提前做了什么准备工作,人家看到e和n,或许就能有办法得到p呢

本文使用 CC BY-NC-SA 3.0 中国大陆 协议许可
具体请参见 知识共享协议

本文链接:https://zyhang8.github.io/2019/09/10/cipher-exp4/