go to index

密码学学习笔记 - 重合指数

read time 3 min read
密码学 重合指数 古典密码

原理

重合指数(Index of Coincidence, IC),又称Friedman测试,是通过分析文本中相同字母出现的频率来破解多表密码(例如,维吉尼亚密码)的一种常用方法。

数学公式

重合指数的数学公式为:

[ \mathbf{IC} = \frac{\sum_{i=1}^{c} n_i (n_i - 1)}{N(N-1)/c} ]

其中:

  • ( N ) 是文本字符的总长度,
  • ( n_i ) 是字母(1-26)出现的次数。

对于英文语言,结合英文字母的频率,我们可以将公式换算为:

重合指数公式

其中 ( d ) 为密钥的长度。

应用场景

通过重合指数,我们能够区分密文是单表代换密码还是多表代换密码。具体来说:

  • 单表代换密码:如果密文的重合指数较高(接近 0.0700),类似于纯文本,则消息可能已使用转置密码或单字母替换加密。
  • 多表代换密码:如果密文的重合指数较低(接近 0.0385),类似于随机文本,则消息可能已使用多字母密码加密。

例如,密钥长度为 4-8 的维吉尼亚密码,IC 指数一般为 0.045 ± 0.05。

示例分析

考虑以下密文片段:

plaintext
QPWKA LVRXC QZIKG RBPFA EOMFL JMSDZ VDHXC XJYEB IMTRQ WNMEA
IZRVK CVKVL XNEIC FZPZC ZZHKM LVZVZ IZRRQ WDKEC HOSNY XXLSP
MYKVQ XJTDC IOMEE XDQVS RXLRL KZHOV

我们分别带入密钥长度 1-10 来计算重合指数(这里计算的是集合):

密钥长度IC 重合指数
11.12
21.19
31.05
41.17
51.82
60.99
71.00
81.05
91.16
102.07

从上表可以看出,密钥长度为 5 和 10 时,IC 指数显著高于其他长度,这提示我们密钥长度可能是 5 或 10。


参考文献