在RSA签名方案中,设p=7,q=17,公钥e=5,消息m的Hash值为19,试计算私钥d并给出对消息的签名和验证过程。

求私钥 的计算过程

已知参数:

  • 公钥

我们需要找到私钥 ,满足:

即:

5×d 与 1 在模 96 下是同余的

使用扩展欧几里得算法求解逆元

扩展欧几里得算法步骤:

  1. 使用欧几里得算法找到 的最大公约数:

    这里我们得到了

  2. 改写成扩展欧几里得算法形式:

    即:

    从而:

    因此:

  3. 将负数转为正数形式:

因此,私钥 为:

签名和验证过程

对消息的签名

消息 的 Hash 值

签名 为:

计算

用模重复平方方法计算

1
2
3
4
5
6
7
8
19^1 ≡ 19 (mod 119)
19^2 ≡ 19 * 19 ≡ 361 ≡ 4 (mod 119)
19^4 ≡ 4^2 ≡ 16 (mod 119)
19^8 ≡ 16^2 ≡ 256 ≡ 18 (mod 119)
19^16 ≡ 18^2 ≡ 324 ≡ 86 (mod 119)
19^32 ≡ 86^2 ≡ 7396 ≡ 18 (mod 119)
19^64 ≡ 18^2 ≡ 324 ≡ 86 (mod 119)
19^77 ≡ 19^64 * 19^8 * 19^4 * 19 ≡ 86 * 18 * 16 * 19 ≡ 470592 ≡ 66 (mod 119)

所以签名

签名验证

验证签名过程:

用模重复平方方法计算

1
2
3
4
66^1 ≡ 66 (mod 119)
66^2 ≡ 66 * 66 ≡ 4356 ≡ 72 (mod 119)
66^4 ≡ 72^2 ≡ 5184 ≡ 67 (mod 119)
66^5 ≡ 66^4 * 66 ≡ 67 * 66 ≡ 4422 ≡ 19 (mod 119)

因此:

验证通过,计算结果为19,等于消息的 Hash 值

总结

  • 私钥 :77
  • 签名 :66
  • 验证,验证通过。