RSA算法整理

1.随机取大质数 pq

2.设 n = p x q, n 的二进制位数就是密钥长度,一般为1024,2048.

3.计算n的欧拉函数 φ(n) = (p - 1)(q - 1)

4.从 1 - φ(n) 之间选择一个整数,且 eφ(n) 互质,计作 e

5.计算 e 对于 φ(n) 的模反元素d
ed ≡ 1 (mod φ(n))
意思就是 ed / φ(n) 余数 1
等价于 ed - 1 = k * φ(n), 由于dk 未知,相当于二元一次方程求解

  1. (n,e) 作为公钥, (n,d) 作为私钥

7.加密: me ≡ c (mod n) ,其中m (密文,整数)二进制长度不可超过n m:明文 c:密文

8.解密: cd ≡ m (mod n) 欧拉定理可证

9.暴力破解:

  • 因为解密需要私钥(n,d).
  • 根据 ed ≡ 1 (mod φ(n))
  • e 已经是公钥提供了,所以只要知道φ(n)就可以破解
  • 问题转化为求 φ(n):
    • φ(n), 根据 φ(n) = (p - 1)(q - 1)
    • 所以转求 p - 1q - 1, 根据n = p * q
    • 只要因数分解 n 得出pq 就可以计算φ(n) = (p - 1)(q - 1)
  • 但是,想要因数分解n为两个大质数的乘积,只能从最小的质数一点点循环的试,目前貌似只有768位的二进制被质因数分解了.再长还未公布.

你可能感兴趣的:(RSA算法整理)