把一句话里每个字母都往后挪三位,A变D,B变E,DOG就变成GRJ——这就是凯撒密码的全部操作。两千年前罗马的尤利乌斯·凯撒用这套手法给前线将领传信,记载里偏移量固定用三,奥古斯都还用过偏移一位的变体,可见这套思路当时已经流传开。
苏维托尼乌斯的记载里能找到它用于军事通信的描述,高卢战争时期传令兵一旦被俘,对方拿到的也只是一串看不懂的字母。这种简单替换的思路统治了密码史上千年,直到频率分析思路出现才被撼动。
原理就这么简单
它属于替换式密码里最基础的移位密码:约定一个偏移量k,加密时字母表整体循环右移k位,解密时再左移回来。英文26个字母,偏移量有25种有效选择,按字母序号写成0到25,循环取余用模运算处理。放在密码学框架里看,偏移量就是密钥,原信是明文,发出去的是密文。以今天的标准衡量,凯撒密码的密钥空间只有25个,现代密码动辄128位密钥,两者差了几十个数量级,但作为人类最早有记载的加密方法之一,它的历史意义远大于实用价值。
现在还用在哪
- 密码学课堂的第一课,用它讲密钥、明文、密文这三个基本概念。
- CTF新手题和密室逃脱、解谜游戏的机关,偏移量经常藏在题目提示里。
- ROT13是它的特例,偏移十三位,早期新闻组里用来遮住剧透和谜底。
- 编程启蒙课常拿它当第一个小项目,几行代码就能跑出结果。
真实系统里早就不用它了。现代通信靠AES这类分组密码配合密钥交换协议,安全性完全不在一个量级。凯撒密码的价值在于把加密就是按规则变换这个思想具象化,特别适合编程入门练手。
想动手试的话,思路是拿ASCII码做偏移运算,注意字母表末尾要绕回开头,大小写分开处理,写完先拿ABCD这种短串验证。练完可以再琢磨一个思考题:为什么随便换一种统计角度,它的规律就藏不住了,这个问题会把你自然引向后来几百年密码学演进的起点。