RSA密码算法
RSA密码算法
实验目的
1) 学习RSA密码算法的原理
2) 学习RSA密码算法的编程实
RSA公钥加密算法是1977年由Ron Rivest、Adi Shamirh和LenAdleman在美国麻省理工学院开发的。RSA算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但那时想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。
算法原理
RSA算法是一种非对称密码算法,所谓非对称,就是指该算法需要一对密钥,使用其中一个加密,则需要用另一个才能解密。
为了产生RSA公私钥对,需要进行以下几个步骤:
1.选取两个大素数,p和q(目前两个数的长度都接近512bit是安全的),并计算他们的乘积得n=pq。
2.根据欧拉函数,不大于n 且与n 互质的整数个数为
3.随机选择整数 作为公钥,要求满足 ,即 。则e和n是公钥,d是私钥。
加密过程
(1)RSA密钥生成部分代码流程图:
RSA密钥生成流程图
(2)RSA加密部分流程图:
RSA加密部分流程图
(3)RSA解密部分流程图:
RSA解密部分流程
实验环境
Windows Server 2012 R2
实验工具在【C:\tools\RSA密码算法】
实验步骤
1.打开C盘,进入工具目录(C:\tools\RSA密码算法),单击【rsa.exe】,运行密码算法。如图1所示
2.输入【1】输入存放公钥和私钥的文件名,即可在程序同级目录下生成相应文件。如图2所示
3.选择【2】,输入存放公钥的文件名和需要加密的文件【hello.txt】和需要输出的文件名【enhello.txt】。如图3所示
4.对比明文文件内容和密文文件内容。如图4所示
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/