RSA算法
简谈RSA算法
- RSA算法是一种非对称加密算法,是第一个较完善的公开密钥算法,它既能用于加密也能用于数字签名
- 所谓非对称,就是指该算法需要一对密钥,使用其中一个加密,则需要用另一个才能解密。
- RSA的理论基础是数论的欧拉定理,他的安全性依赖于对大整数的素因子分解的困难性
步骤
-
找出质数( P、Q)
-
计算公共模数( N)
-
欧拉函数 ( φ(N) )
-
计算公钥 E (E的范围:1<E< φ(N) ) E必须是整数且E和 φ(N) 为互质数
-
计算私钥D
-
用公钥进行加密
-
用私钥解密
注:公钥=(E,N) 私钥=(D,N) 对外我们只暴露公钥
公式
- 无
- N=P*Q
- φ(N) =(P-1)(Q-1)
- 无
- 计算私钥:E * D % φ(N) =1
- 加密:C = M^E mod N
- 解密:M=C^D % N
举例
- 找出质数 :P=3,Q=11(实际应用中,这两个质数越大,越难破解)
- N=3*11=33
- φ(N)=(3-1)(11-1)=20
- E的取值范围为{3,7,9,11,13,17,19},为了方便学习,我们这里取E=3(正常来说E越大加密效果越好)
- 要使3*D%20=1 ,计算出 D=7 私钥=(7,33)
- 假设我们要加密2这个数字,C=2^3%33=8
- 用私钥解密:M=8^7%33=2