两千多年前的古罗马战场上,统帅想给远方的将军传一条军事情报,又怕信使半路被敌人截获、情报落入对方手里,该怎么办?据古罗马历史学家苏埃托尼乌斯记载,尤利乌斯·凯撒当时用的方法简单到有点朴素——把要传的话里每一个字母,都往字母表后面挪固定的几位。
假设挪 3 位:字母 A 换成 D、B 换成 E、C 换成 F,以此类推,挪到末尾的 X、Y、Z 就绕回开头接着算。这样一句原本一眼就能看懂的话,换算之后就变成一串看起来毫无意义的字母,不知道「挪了几位」这个规律的人,压根看不出原文写的是什么。这种「按固定规则整体替换」的加密方式,后来就被称为「凯撒密码」。
放到今天看,这种加密方式弱到不堪一击,但放在两千多年前的战场环境里,已经够用了——当时大部分士兵、甚至不少敌方将领本身识字率就不高,就算截获了信件,能不能读懂原本的拉丁文都是问题,更别说意识到这背后藏着一套「挪位」的规律。对当时的威胁场景来说,这层简单的伪装已经能挡住大部分「顺手拆看」的风险了。
凯撒密码的破解方法其实很直接——英文字母一共就 26 个,挪位的可能性满打满算也就 25 种,一种种试过去(这在密码学里叫「穷举法」),很快就能试出正确答案。就算不用穷举,还有更聪明的办法:每种语言里,不同字母出现的频率是不一样的(比如英文里 E 是最常出现的字母),把加密后文本里出现次数最多的字母,对应到「英文里最常出现的字母」上,猜出挪了几位并不难。这种思路叫「频率分析」,是密码学历史上很经典的一招。
凯撒密码本质上属于「替换密码」这个大类里最简单的一种——规则单一、固定,破解起来自然容易。现代真正用于保护数据安全的加密算法(比如你每天用的网银、聊天软件背后的加密机制),原理复杂得多,不仅规则本身在不断变化,还会结合数学上极难被逆向推算的运算方式,这才是凯撒密码和现代加密之间隔着的那两千年技术鸿沟。
我把凯撒密码工具里的算法原样跑了一遍(大小写各自处理,非字母原样保留,位移量可选 1 到 25)。明文 Attack at Dawn!,位移 3,得到的密文是 Dwwdfn dw Gdzq!:A 变 D,t 变 w,D 变 G,空格和感叹号纹丝不动。把密文反向位移 3 位,又完整还原成 Attack at Dawn!。再看暴力破解:工具的暴力破解面板正好列出 25 行候选,位移 0 和 26 等于没加密,所以不用试。对上面的密文逐行看,位移 1 是 Cvvcem cv Fcyp!,位移 25 是 Exxego ex Hear!,这些都是乱码,只有位移 3 那一行是通顺的英文。也就是说,哪怕完全不知道位移量,最多试 25 次就一定能找到答案,这就是前面说它「弱到不堪一击」的具体数字依据。
虽然早就没有实战价值了,但凯撒密码依然是了解「加密」这个概念最好的入门案例——规则简单、一看就懂,很适合体验一下「加密」和「解密」到底是怎么一回事。想亲手试试看,可以用凯撒密码工具,输入一段话、随便挪几位,看看原本熟悉的文字变成一串「乱码」是什么感觉。