最简单的移位密码,两千年前由尤利乌斯·凯撒使用。密码学的历史就从这里开始。
想象你是古罗马的一位将军。你要给部队送去一道命令,但信使可能会被敌人抓住。怎样才能保证即使消息被截获,除了你的将领之外谁也看不懂?
这正是尤利乌斯·凯撒在 2000 多年前解决的问题。他的方法——把字母表中的字母简单地移位——成为迈向现代密码学的第一步。
如今凯撒密码已不用于保护真实数据——它几秒钟就能被破解。但它仍然是一个完美的教学工具,因为它清楚地展示了一些基本原理:
这个想法简单得惊人:消息中的每个字母都被替换成字母表中相隔固定位置的另一个字母。这个数叫作移位量或密钥。
字母表中的每个字母都有一个数字位置:А=0、Б=1、В=2……Я=32(俄文字母表)。
把密钥加到每个字母的位置上:新位置 = (原位置 + 密钥) mod N,其中 N 是字母表的大小。
解密时,接收方减去密钥:原位置 = (新位置 - 密钥 + N) mod N。
3 加密字母 ПТ3 解密 ТПmod N 运算让字母表“首尾相接”:最后一个字母之后又回到第一个字母。这个简单而强大的数学性质是许多现代密码的基础。在交互式模拟“凯撒密码”中,你不只是阅读理论——而是亲自成为密码学家:
你会看到绿色圆盘(明文)和蓝色圆盘(密文)转动,生动地展示加密与解密之间的对称性。
尤利乌斯·凯撒使用的密码由罗马历史学家苏埃托尼乌斯记载下来。凯撒把字母移动 3 个位置,但这个原理对任何密钥都适用。在很长一段时间里,这种方法被认为足够安全,直到阿拉伯学者发明了频率分析(9 世纪)。
尽管有重要的历史意义,凯撒密码却很容易被破解:
如果你想更深入地了解密码学,这里有一些关键主题:
语言统计如何帮助破解密码:字母、双字母组合和三字母组合的频率
一种被认为三个世纪无法破解的多表代换密码
唯一在理论上不可破译的密码:密钥与消息等长,且只使用一次
简单的代换如何演变成 AES、俄罗斯“Kuznyechik”标准和其他算法
用于频率分析和攻击凯撒密码的实用脚本
GOST 28147-89“Magma”、GOST R 34.12-2015“Kuznyechik”以及“Streebog”哈希函数
现在你已经了解了凯撒密码的数学和历史,正是亲手试一试的好时机!
在交互式模拟中,你可以加密自己的消息,并观察过程中的每一步