RSA算法浅入浅出

RSA算法流程

生成公钥私钥

  1. 找出两个大质数p,q,位数最好超过1024位,质数越大破解难度越大,这两个质数不能公开
  2. n = p * q
  3. f(n) = (p - 1) * (q - 1)
  4. 公钥e,满足1 < e < f(n),且e与f(n)互质
  5. 私钥d,满足e * d % f(n) = 1

加密过程

  1. 加密方需要知道n,和公钥e。
  2. 设加密信息为m,m必须小于n,大于的话则将信息分组再传
  3. 加密过程:明文m -> m^e % n -> 密文c(注意这里的^是幂运算,不是异或,下同)

解密过程

  1. 解密方需要知道n,和私钥d
  2. 设收到的密码信息为c,解密过程:密文c -> c^d % n -> 明文m

补充

加解密过程可以互换,公钥加密的信息只有私钥才可以解密,所以可以用于给传递信息。

同理,私钥加密的内容公钥可以解密,因此可以用于验证信息。

大质数可以考虑通过Miller-Rabin素数检测算法生成,公钥的生成则选取与f(n)不重复的质因子来生成,私钥通过扩展欧几里得算法计算,加解密过程可使用快速幂

初次了解加密算法,可能理解的比较肤浅。先记录一下,日后有机会再深究。

猜你喜欢

转载自www.cnblogs.com/corvey/p/10469747.html