RSA加密算法
字数 1782 2025-10-27 08:13:40

RSA加密算法

题目描述
RSA是一种非对称加密算法,广泛应用于数据加密和数字签名。题目要求:

  1. 理解RSA的密钥生成、加密和解密过程。
  2. 给定两个质数 \(p = 5\)\(q = 11\),公钥指数 \(e = 3\),对明文 \(M = 9\) 进行加密,再对密文解密还原明文。

解题过程

步骤1:密钥生成

  1. 计算模数 \(n\)

\[ n = p \times q = 5 \times 11 = 55 \]

\(n\) 是公钥和私钥的共用模数。

  1. 计算欧拉函数 \(\phi(n)\)

\[ \phi(n) = (p-1)(q-1) = 4 \times 10 = 40 \]

\(\phi(n)\) 用于生成私钥。

  1. 选择公钥指数 \(e\)
    给定 \(e = 3\),需满足 \(1 < e < \phi(n)\)\(\gcd(e, \phi(n)) = 1\)
    验证:\(\gcd(3, 40) = 1\),符合要求。

  2. 计算私钥指数 \(d\)
    \(d\)\(e\)\(\phi(n)\) 的乘法逆元,即满足:

\[ e \times d \equiv 1 \pmod{\phi(n)} \]

通过扩展欧几里得算法求解:

  • 方程:\(3d + 40k = 1\)
  • 试算:\(3 \times 27 = 81\)\(81 \bmod 40 = 1\)
  • 解得 \(d = 27\)(取最小正整数解)。

密钥对

  • 公钥:\((e, n) = (3, 55)\)
  • 私钥:\((d, n) = (27, 55)\)

步骤2:加密过程

明文 \(M = 9\),加密公式为:

\[C = M^e \bmod n \]

代入计算:

\[C = 9^3 \bmod 55 = 729 \bmod 55 \]

  • \(55 \times 13 = 715\)
  • \(729 - 715 = 14\)
    得到密文 \(C = 14\)

步骤3:解密过程

密文 \(C = 14\),解密公式为:

\[M' = C^d \bmod n \]

代入计算:

\[M' = 14^{27} \bmod 55 \]

优化计算(模幂运算避免大数直接计算):

  1. 分解指数:\(27 = 16 + 8 + 2 + 1\)
  2. 分步计算模55:
    • \(14^1 \bmod 55 = 14\)
    • \(14^2 = 196 \bmod 55 = 31\)(因 \(55 \times 3 = 165\)\(196 - 165 = 31\)
    • \(14^4 = (14^2)^2 = 31^2 = 961 \bmod 55 = 26\)\(55 \times 17 = 935\)\(961 - 935 = 26\)
    • \(14^8 = (14^4)^2 = 26^2 = 676 \bmod 55 = 16\)
    • \(14^{16} = (14^8)^2 = 16^2 = 256 \bmod 55 = 36\)
  3. 组合结果:

\[ 14^{27} = 14^{16} \times 14^8 \times 14^2 \times 14^1 = 36 \times 16 \times 31 \times 14 \bmod 55 \]

分步取模:

  • \(36 \times 16 = 576 \bmod 55 = 26\)\(55 \times 10 = 550\)
  • \(26 \times 31 = 806 \bmod 55 = 31\)\(55 \times 14 = 770\)
  • \(31 \times 14 = 434 \bmod 55 = 9\)\(55 \times 7 = 385\)

最终解密得到明文 \(M' = 9\),与原始明文一致。


关键点总结

  1. RSA安全性依赖大数分解难题(已知 \(n\) 难求 \(p, q\))。
  2. 加密/解密需用模幂运算,避免直接计算大指数。
  3. 私钥 \(d\) 必须通过 \(\phi(n)\) 计算,且保密。
RSA加密算法 题目描述 RSA是一种非对称加密算法,广泛应用于数据加密和数字签名。题目要求: 理解RSA的密钥生成、加密和解密过程。 给定两个质数 \( p = 5 \),\( q = 11 \),公钥指数 \( e = 3 \),对明文 \( M = 9 \) 进行加密,再对密文解密还原明文。 解题过程 步骤1:密钥生成 计算模数 \( n \) \[ n = p \times q = 5 \times 11 = 55 \] \( n \) 是公钥和私钥的共用模数。 计算欧拉函数 \( \phi(n) \) \[ \phi(n) = (p-1)(q-1) = 4 \times 10 = 40 \] \( \phi(n) \) 用于生成私钥。 选择公钥指数 \( e \) 给定 \( e = 3 \),需满足 \( 1 < e < \phi(n) \) 且 \( \gcd(e, \phi(n)) = 1 \)。 验证:\( \gcd(3, 40) = 1 \),符合要求。 计算私钥指数 \( d \) \( d \) 是 \( e \) 模 \( \phi(n) \) 的乘法逆元,即满足: \[ e \times d \equiv 1 \pmod{\phi(n)} \] 通过扩展欧几里得算法求解: 方程:\( 3d + 40k = 1 \) 试算:\( 3 \times 27 = 81 \),\( 81 \bmod 40 = 1 \) 解得 \( d = 27 \)(取最小正整数解)。 密钥对 : 公钥:\( (e, n) = (3, 55) \) 私钥:\( (d, n) = (27, 55) \) 步骤2:加密过程 明文 \( M = 9 \),加密公式为: \[ C = M^e \bmod n \] 代入计算: \[ C = 9^3 \bmod 55 = 729 \bmod 55 \] \( 55 \times 13 = 715 \) \( 729 - 715 = 14 \) 得到密文 \( C = 14 \)。 步骤3:解密过程 密文 \( C = 14 \),解密公式为: \[ M' = C^d \bmod n \] 代入计算: \[ M' = 14^{27} \bmod 55 \] 优化计算 (模幂运算避免大数直接计算): 分解指数:\( 27 = 16 + 8 + 2 + 1 \) 分步计算模55: \( 14^1 \bmod 55 = 14 \) \( 14^2 = 196 \bmod 55 = 31 \)(因 \( 55 \times 3 = 165 \),\( 196 - 165 = 31 \)) \( 14^4 = (14^2)^2 = 31^2 = 961 \bmod 55 = 26 \)(\( 55 \times 17 = 935 \),\( 961 - 935 = 26 \)) \( 14^8 = (14^4)^2 = 26^2 = 676 \bmod 55 = 16 \) \( 14^{16} = (14^8)^2 = 16^2 = 256 \bmod 55 = 36 \) 组合结果: \[ 14^{27} = 14^{16} \times 14^8 \times 14^2 \times 14^1 = 36 \times 16 \times 31 \times 14 \bmod 55 \] 分步取模: \( 36 \times 16 = 576 \bmod 55 = 26 \)(\( 55 \times 10 = 550 \)) \( 26 \times 31 = 806 \bmod 55 = 31 \)(\( 55 \times 14 = 770 \)) \( 31 \times 14 = 434 \bmod 55 = 9 \)(\( 55 \times 7 = 385 \)) 最终解密得到明文 \( M' = 9 \),与原始明文一致。 关键点总结 RSA安全性依赖大数分解难题(已知 \( n \) 难求 \( p, q \))。 加密/解密需用模幂运算,避免直接计算大指数。 私钥 \( d \) 必须通过 \( \phi(n) \) 计算,且保密。