vlambda博客
学习文章列表

非对称加密的数学运算过程

RSA非对称加密:

  1. 密钥有一对

  2. 2个密钥相互可以解密另一个密钥的加密数


如签名验证运算过程:



那么从数学原理上是如何实现的,其实并不深奥:

  1. 基本知识:

    1. 质数:只能被1和自己整除的数

    2. 互质数:公因数只有1的2个或多个非0自然数

    3. 阿贝尔群:数字集合中的任何2个数,交换前后顺序进行某种运算的结果相同(如a,b是整数,则对于加法a+b=b+a),则此数字集合与运算一起构成了一个阿贝尔群(如(1,2,3)和加法运算构成了一个阿贝尔群)

    4. 阿贝乐有限群:数字集合大小有限的阿贝尔群

    5. 乘法取模运算的阿贝尔群:数字集合只能有自然数,运算是相乘后对数字n取模的阿贝尔群(数字集合中任意2个数字互换顺序后,相乘后对n取模的结果相同)。


    RSA的运算方法如下:

    1.    随机生成2个很大的质数(如2的1024次幂)p和q

    2.    计算p和q的乘积n

    3.    计算乘法取模(对n取模)阿贝尔群的大小 o

            细节先不讲,如果p和q是质数,大小是(p-1)*(q-1)

    4.    计算o的互质数r

    5.    计算d,d乘r再与o取模等于1

    6.    r与n组成公钥, d与n组成私钥

    7.    用公钥对数据加密

            a.计算原文数字(或hash值)的r次幂 (非对称加密一般是对一个较大的数字加密,如签名运算时对消息的哈希值进行加密)

             b.幂运算的结果对n取模,结果就是加密后的数字

    8.    用私钥对加密的数据解密

            a.计算密文数字(如签名结果)的d次幂

            b.对幂运算的结果对n取模,结果就是解密后的数字。


以上是运算流程。


详细推导过程细节比较多,此篇文章不讲解。


参考资料:


算法导论第31章:Number-Theoretic Algorithms