zoukankan      html  css  js  c++  java
  • 通俗易懂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进行验签。

  • 相关阅读:
    《易中天中华史》——易中天
    《易中天品三国》——易中天
    Excel 实现多列文本合并/合并单元格内容 的三种方法
    Excel函数OFFSET的用法、举例
    【转】链接服务器"(null)"的 OLE DB 访问接口 "Microsoft.Jet.OLEDB.4.0" 返回了消息 "未指定的错误"。+SQL Server Management Studio中访问EXCEL 2007(XLSX)文件的方法
    SQL 2005启用组件Ad Hoc Distributed Queries
    FTP 550 Permission denied 只能建文件夹,没法删除及上传文件的原因说明
    Access中"''80004005''"操作必须使用一个可更新的查询"错误的解决办法
    修改 打开方式为Excel
    VMware10新建虚拟机
  • 原文地址:https://www.cnblogs.com/jockming/p/12111579.html
Copyright © 2011-2022 走看看