By Long Luo
注
本文是从之前个人网站上解析RSA加解密算法移植过来的。
1. RSA说明
RSA公钥加密算法是1977年由Ron Rivest、Adi Shamirh和LenAdleman在(美国麻省理工学院)开发的。RSA取名来自开发他们三者的名字。
RSA算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。
2. RSA算法实现
RSA算法是一种非对称密码算法,所谓非对称,就是指该算法需要一对密钥,使用其中一个加密,则需要用另一个才能解密。
详细加密过程如下:
- 选择两个大素数P、Q
- 计算N = P*Q
- 选择一个公钥(加密密钥)E,使其不是(P-1)与(Q-1)的因子
- 选择私钥(解密密钥)D,满足如下条件:
(D*E) mod (P-1)(Q-1) = 1
- 加密时,明文PT计算密文CT如下:
CT = PTE mod N
- 解密时,从密文CT计算明文PT如下:
PT = CTD mod N 这也是SSL中会用一种密钥交换算法。
源码如下所示:
1 | /******************************************************************************************** |
输出结果如下所示:
通过以上,我们就了解了RSA算法的原理及其实现。
By Long Luo transfer at 2016-6-5 17:30:58 @Shenzhen, China.