RSA加密 过程与原理

参考

RSA加密与解密过程

生成公钥和私钥

  1. 生成两个大质数p和q(注意:p和q不要太接近),p和q的乘积为NN为密钥的长度,N越大越安全,但计算速度越慢。比如:
    1
    2
    3
    p = 3  //随机选择的大质数一
    q = 11 //随机选择的大质数二
    N = p * q = 33 //密钥的长度
  2. 运用欧拉函数计算T
    1
    T = (p - 1) * (q - 1) = 20
  3. 选取公钥E,公钥ET的互质,且小于TE取一个较大的质数,比如:
    1
    2
    规则:E为小于T的质数,且不是T的因子(就是T不能被E整除)
    比如:E = 7 //随机选择符合条件的公钥
  4. 计算私钥D
    1
    2
    规则:(D * E) % T = 1 说明D和E的乘积除以T的余数为1
    D = 3
  5. 成功获得公钥(E,N)即(7,33) 私钥(D,N)(3,33)

加密和解密

  1. 随机生成明文M,明文M小于N,比如:3
  2. 计算明文ME次幂,即3的7次方值 = 2187
  3. 计算幂对N的余数 2187 % 33 = 9
  4. 把最终的余数发送给服务器端
  5. 服务器端收到加密后的密文后,解密过程如下:
  6. 服务器端收到密文后,计算密文CD次幂,即9的3次方值 = 729
  7. 计算幂对N的余数 729 % 33 = 3 3就是明文