很多初学者认为,只要把明文中的字母全部打乱替换,密码就是绝对安全的。但人类语言并不是随机组合的。在正常的英文文本中,各个字母的出场概率存在着极其固定的规律。
例如,字母 e 是无可争议的“出场王”,它在英语单词中出现的概率通常在 11% 到 12.7% 之间;紧随其后的是 t、a、o、i、n 等高频字母;而 z、q、x 则是极少露面的“稀客”。
这种固有的概率分布,就是语言的 词频(Letter Frequency)。无论加密者如何改变字母的外衣(比如把所有的 e 换成 k),那种“在文本中出现次数最多”的概率特征是永远无法被抹除的。
假设一段明文文本的总字母数为 \( N \),某个字母 \( a_i \) 出现的次数为 \( C(a_i) \),那么它的实际出现频率 \( P(a_i) \) 为:
如果在单表替换加密中,明文字母 \( a_i \) 被映射成了密文字母 \( c_j \),那么在足够长的密文中,必然会满足以下概率等式:
这意味着,作为破译者,我们根本不需要拿到敌人的密码本。我们只需要统计密文里各个字母出现的频率,找到那个频率接近 12.7% 的密文字母,就可以有极大的把握断定:“它的真身就是 e!”
然而,单纯盯着密文去数数字、比对小数点是非常痛苦且低效的。这时候,**频率统计图(柱状图)**就展现出了它化腐朽为神奇的威力。
我们将标准的英文字母频率绘制成一张蓝色的柱状图,它有着独特的“山脉起伏”:e 处是最高峰,t 处是次高峰,结尾的 x, y, z 是一片平缓的低谷。随后,我们将密文的字母出现频率绘制成红色的柱状图。
在凯撒密码(移位密码)中,加密仅仅是让字母表整体偏移。反映在统计图上,就是**红色的密文“山脉”整体向左或向右平移了一段距离,但山峰的形状并没有改变**。