• 通俗易懂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<n。

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

     

    RSA解密

      对于密文0≤c<n,解密算法为: m≡ 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进行验签。

  • 相关阅读:
    java学习day03-循环结构
    java学习day03-运算符+分支结构
    java学习day02-标识符+关键字+注释+变量
    java学习day02-数据类型
    java学习day01-认识Java语言Hello world!
    私有仓库
    服务编排
    镜像原理
    docker部署应用
    docker数据卷和数据卷容器
  • 原文地址:https://www.cnblogs.com/jockming/p/12111579.html
Copyright © 2020-2023  润新知