通俗易懂RSA

一、RSA算法是什么?

  1977年,三位数学家 Rivest、Shamir 和 Adleman 设计了一种算法,可以实现非对称加密。算法用他们三个人的名字命名,叫做 RSA 算法。

  RSA是第一个非对称密码算法,密钥成对存在(公钥和私钥),密钥容易管理,容易分发,私钥可用于解密和签名,公钥可用于加密和验签。但是算法复杂,用于加密大量数据时效率低下且随着保密等级的提高,其密钥长度成指数增加。

  直到现在,RSA 算法仍是最广泛使用的"非对称加密算法"。毫不夸张地说,只要有计算机网络的地方,就有 RSA 算法。

 

二、其安全性由什么决定?

  大质数做因数分解困难

 

三、公私钥生成流程:

  第一步:随机找两个质数 P 和 Q ,P 与 Q 越大,越安全。(例如:61和53)

  第二步:计算p和q的乘积n。(n = 61×53 = 3233,n的长度就是密钥长度。3233写成二进制是110010100001,一共有12位,所以这个密钥就是12位。)

  第三步:计算 n 的欧拉函数 φ(n)。(根据公式φ(n) = (p-1)(q-1)算出φ(3233)等于60×52,即3120)

  第四步:随机选择一个整数 e,条件是1< e < φ(n),且 e 与 φ(n) 互质。(条件是1< e < φ(n),且e与φ(n) 互质。1到3120之间,随机选择了17。)

  第五步:有一个整数 d,可以使得 e*d 除以 φ(n) 的余数为 1。(e*d ≡ 1 (mod φ(n)),即17*2753 mode 3120 = 1)

  第六步:将n和e封装成公钥,n和d封装成私钥。(n=3233,e=17,d=2753,所以公钥就是 (3233,17),私钥就是(3233, 2753)。)

 

四、RSA加密:

  首先对明文进行比特串分组,使得每个分组对应的十进制数小于n(密钥长度),然后依次对每个分组m做一次加密,所有分组的密文构成的序列就是原始消息的加密结果,即m满足0≤m

  加密算法为: c≡ me mod n; c为密文,且0≤c

 

五、RSA解密:

  对于密文0≤cd mod n。

 

六、RSA签名验证:

  RSA密码体制既可以用于加密又可以用于数字签名。

  已知公钥(e,n),私钥d。

    1.对于消息m签名为:sign ≡ md mod n

    2.验证:对于消息签名对(m,sign),如果m ≡ signe mod n,则sign是m的有效签名

 

七、图解RSA算法:

  msg = “待加密字符串”;

  msgHash = “待签名字符串,由msg进行hash得到”;

  encryptedMsg = “msg加密后的字符串”;

  signedMsg = “msgHash签名后的字符串”;

 

  注意:

  B在签名操作的时候,需要将原文msg和签名后的signedMsg一起发送给A。

  A在验签操作的时候,需要将原文msg进行hash得到msgHash,再对signedMsg进行验签。

你可能感兴趣的:(通俗易懂RSA)