Hill 密码解码器

使用已知密钥解密 Hill 密码,或执行已知明文攻击以恢复密钥矩阵。

密文
0 letters
明文
Matrix Size
Key Matrix (K)
det = 9 (mod 26)
Inverse (K⁻¹)
Click calculate to show

Matrix values: 0-25 (A=0, Z=25)

Determinant must be coprime with 26

希尔密码解密原理

解密希尔密码需要计算密钥矩阵模 26 的逆矩阵,然后将每个密文块与该逆矩阵相乘。公式为:

P = (K^-1 x C) mod 26

本工具支持两种模式:使用已知密钥进行标准解密,以及从匹配的明文-密文对中恢复未知密钥的已知明文攻击

计算逆矩阵

2x2 示例

对于密钥矩阵 K = [[3, 3], [2, 5]]:

第一步 -- 行列式: det(K) = (3 x 5) - (3 x 2) = 15 - 6 = 9

第二步 -- 行列式的模逆元: 找 x 使得 9x = 1 (mod 26)。测试:9 x 3 = 27 = 26 + 1,所以 det^-1 = 3

第三步 -- 伴随矩阵: 对于 [[a,b],[c,d]],伴随矩阵为 [[d, -b], [-c, a]]: adj(K) = [[5, -3], [-2, 3]] = [[5, 23], [24, 3]] (mod 26)

第四步 -- 相乘: K^-1 = 3 x [[5, 23], [24, 3]] = [[15, 69], [72, 9]] = [[15, 17], [20, 9]] (mod 26)

3x3 矩阵

计算 3x3 逆矩阵涉及余子式展开、九个余子式计算和伴随矩阵转置——比 2x2 复杂得多。本解码器自动完成整个过程。手工练习时,请先掌握 2x2 逆矩阵。

解密演示

使用密钥 K = [[3, 3], [2, 5]] 解密"HIAT":

使用上面计算的逆矩阵 K^-1 = [[15, 17], [20, 9]]:

块 1: 密文 H(7), I(8)

[[15,17],[20,9]] x [7,8] = [15x7+17x8, 20x7+9x8] = [241, 212]

Mod 26:[241 mod 26, 212 mod 26] = [7, 4] = HE

块 2: 密文 A(0), T(19)

[[15,17],[20,9]] x [0,19] = [15x0+17x19, 20x0+9x19] = [323, 171]

Mod 26:[323 mod 26, 171 mod 26] = [11, 15] = LP

结果: HIAT 解密为 HELP

已知明文攻击

希尔密码的纯线性结构使其在攻击者拥有匹配的明文-密文对时容易受到密码分析攻击。

工作原理

由于 C = K x P (mod 26),知道 P 和 C 的攻击者可以求解 K:

K = C x P^-1 (mod 26)

矩阵大小所需字符数方程数
2x24(2 个块)4 个方程,4 个未知数
3x39(3 个块)9 个方程,9 个未知数

此攻击是确定性的——给定正确的对,它以 100% 的准确率恢复精确密钥。这不是概率性猜测,而是源于密码线性特性的数学必然性。

使用攻击工具

在上方解码器中切换到"已知明文攻击"模式:

  1. 输入要解密的完整密文
  2. 提供匹配的明文-密文对(2x2 至少 4 个字符,3x3 至少 9 个)
  3. 点击"查找密钥"以恢复加密矩阵
  4. 工具随后自动解密整个消息

此攻击演示了为什么希尔密码尽管数学上优雅,但面对即使只有少量已知明文的攻击者时也无法提供安全性。

常见问题

如何在不知道密钥的情况下解密希尔密码?

使用已知明文攻击。如果拥有至少 n² 个匹配的明文-密文字符(2x2 需要 4 个,3x3 需要 9 个),可以通过求解线性方程组来恢复完整的密钥矩阵。切换到上方解码器的"已知明文攻击"模式自动尝试。

如果密钥矩阵在 mod 26 下不可逆怎么办?

如果行列式与 26 有公因子(被 2 或 13 整除),则不存在模逆元,使用该密钥的解密将变得不可能。mod 26 下的有效行列式为:1, 3, 5, 7, 9, 11, 15, 17, 19, 21, 23, 25。请选择具有互质行列式的其他密钥矩阵。

能在线解码 3x3 希尔密码吗?

可以。选择"3x3"作为矩阵大小,输入密钥矩阵和密文,然后点击"解密"。工具使用余子式展开和伴随矩阵方法自动计算 3x3 逆矩阵,然后将其应用于每个 3 字符块。

希尔密码的解密公式是什么?

P = (K^-1 x C) mod 26,其中 K^-1 = det(K)^-1 x adj(K) mod 26。逆矩阵通过"撤销"原始矩阵乘法来逆转加密变换。详细计算请参见我们的示例页面

相关工具与资源