RSA

RSA加密算法是一种非对称加密算法,是1977年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的。

RSA基于一个数学难题:

对两个质数相乘容易,而将其合数分解很难的这个特点进行的加密算法。 n=p1*p2,已知p1、p2求n简单,已知n求p1、p2困难。

例如很快就能算出53*61=3233, 但已知3233算出53和61恐怕得一会。目前已经算出最长RSA密钥长度为768位,目前使用的密钥长度一般为1024或2048位。

密钥生成

RSA密钥由一对公私钥组成,这对密钥如何生成,里头都包含什么?

密钥生成过程:

  1. 随机选择两个不相等的质数p和q,N = pq
  2. φ(n) = (p-1)(q-1)
  3. 随机选择一个整数E,条件是1< E < φ(n),且E与φ(n) 互质
  4. ED MOD φ(n) = 1 (扩展欧几里得算法)
  5. 将N和E封装成公钥,N和D封装成私钥
公钥 E 和 N
私钥 D 和 N
加密 密文=明文^E % N
解密 明文=密文^D % N

这里不去推导数学公式)。

假设攻击者获取到公钥和密文,明文=密文^D % N。N=pq,由于大整数因数分解很难,所以攻击者无法获取到pq,同理也无法获取到D,如果有一天找到有效的方法计算出N=pq,那么RSA算法就被破解了。

results matching ""

    No results matching ""