RSA 算法原理

RSA 算法是一种非对称加密算法,它的名字来源于三位发明者 Rivest、Shamir 和 Adleman 的姓氏首字母。与对称加密不同,非对称加密使用一对密钥:公钥私钥。公钥可以公开给任何人,用于加密数据;而私钥必须由用户自己保管,用于解密数据。RSA 的核心在于利用了两个数学难题:大整数质因数分解欧拉函数

密钥生成过程

密钥生成是 RSA 算法的基础,这个过程决定了公钥和私钥的值

  1. 选择大质数:随机选择两个非常大的质数 p 和 q。为了确保安全性,这两个质数必须足够大且不能太接近

  2. 计算模数:计算它们的乘积 n=p×q。这个 n 就是 RSA 的模数,它既是公钥的一部分,也是私钥的一部分

  3. 计算欧拉函数:计算欧拉函数 ϕ(n)=(p−1)(q−1)。欧拉函数 ϕ(n) 表示小于或等于 n 且与 n 互质的正整数的个数

  4. 选择公钥指数:选择一个整数 e,它必须满足以下条件:

    • 1<e<ϕ(n)

    • e 与 ϕ(n) 互质(即最大公约数为 1)

      通常,为了计算效率,会选择一些常见的质数,比如 65537。这个 e 就是公钥的指数

  5. 计算私钥指数:计算一个整数 d,它必须满足以下条件:

    • d × e ≡ 1 (mod ϕ(n))

      这个等式意味着 d × e 除以 ϕ(n) 的余数为 1。我们可以使用扩展欧几里得算法来高效地找到这个 d。这个 d 就是私钥的指数

至此,密钥生成完成。公钥为 (n,e),可以公开;私钥为 (n,d),必须严格保密

加密和解密过程

有了公钥和私钥,就可以进行数据的加密和解密了

加密

假设发送方想向你发送一条消息 M

  1. 发送方获取你的公钥 (n,e)

  2. 将明文消息 M 转换为一个整数(通常通过 ASCII 或其他编码方式)

  3. 使用公钥进行加密,计算密文 C:

    C = Me (mod n)

解密

当接收方收到密文 C 后,就可以使用自己的私钥进行解密

  1. 接收方使用自己的私钥 (n,d)

  2. 使用私钥进行解密,计算出原始明文 M:

    M = C^d (mod n)

这里看起来很简单,但其背后的数学原理是:

(M^e)^d ≡ M^ed ≡ M (mod n)

这正是欧拉定理在起作用,它保证了加密和解密的可逆性

Copyright © 版权信息 all right reserved,powered by Gitbook该文件修订时间: 2025-09-25 03:13:11

results matching ""

    No results matching ""