凯撒、维吉尼亚与 AES:三种加密强度差多少
一、凯撒密码:位移固定,25 种可能
原理简单:每个字母向后移固定的位数,超过 Z 就绕回 A。
Hello, World! 123 --(位移 3)--> Khoor, Zruog! 123
注意两件事:
- 数字、空格、标点原样保留,不参与位移;
- 解密就是反向位移:Khoor, Zruog! 123 位移 −3 回到 Hello, World! 123。
为什么它不安全:位移量只有 26 种取值(位移 0 等于没加密),实际只有 25 种有效可能。逐个试一遍就能恢复原文,选 3 还是 17 只是「先被猜到」和「后被猜到」的区别。它只适合做字谜和教学演示。
两个特例值得知道:
- ROT13:位移 13 位。因为字母表是 26 个字母的环,错 13 位再错 13 位正好转回原处,所以加密和解密是同一个操作——Hello → Uryyb → Hello;
- ROT47:动的不是字母,而是全部 94 个可打印 ASCII 字符(33~126),数字、标点、括号一起变,汉字等非 ASCII 不变。实测
Hello, World! 123→w6==@[ (@C=5P \ab`,输出比 ROT13 更难一眼看出来,但同样一戳就破。
二、维吉尼亚密码:密钥轮流决定位移
凯撒是「密钥只有一位」的维吉尼亚。 维吉尼亚让每一位的位移由密钥轮流决定:
| 明文 | A | T | T | A | C | K | A | T | D | A | W | N |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 密钥(LEMON 循环) | L | E | M | O | N | L | E | M | O | N | L | E |
| 位移量 | 11 | 4 | 12 | 14 | 13 | 11 | 4 | 12 | 14 | 13 | 11 | 4 |
| 密文 | L | X | F | O | P | V | E | F | R | N | H | R |
ATTACKATDAWN + 密钥 LEMON → LXFOPVEFRNHR,用同一密钥解密可完整还原(工具会同时对字母计数,实测 12 个字母、12 位被位移)。
强度提升来自密钥长度:凯撒只有 25 种可能;密钥长度为 n 时组合是 26ⁿ——5 位密钥就有 1188 万种。密钥越长、重复周期越长,越难通过重复片段猜出密钥长度。
互操作的关键约定:工具只位移字母,数字、空格、标点原样保留且不消耗密钥位。因为如果双方对「哪些字符算一位」的理解不一致,密钥就会错位、解出来全是乱码。保留标点还能让密文保持分词结构,方便核对:
Attack at dawn! --(LEMON)--> Lxfopv ef rnhr!
理论上密钥不短于明文、完全随机且从不重复使用时,维吉尼亚就是不可破解的(一次性密码本)——但手写长密钥极易出错也难以记忆,所以它始终停留在教学与谜题层面。
三、AES:现代加密的默认选择
| 参数 | 值 |
|---|---|
| 密钥长度 | 256 位 |
| 模式 | CBC |
| 密钥派生 | PBKDF2(可选迭代 1000 / 10000 / 50000 次) |
| 每次加密 | 随机生成盐与初始向量 |
为什么同一段文字、同一个口令,两次加密结果不一样:
第 1 次:uFTawvUdKuDrOTbSCuwk6ERTUBGvdC27ZJ1rviSbeFYnwSLb10U8DVhYaOaBdwxF
第 2 次:完全不同的密文(salt 与 iv 都不同)
每次加密都重新生成随机的盐与初始向量,它们随密文一起保存,所以解密不受影响。这种设计叫语义安全:相同明文不产出相同密文,攻击者无法通过观察密文判断两段内容是否一致。
盐与初始向量的分工:
- 盐用于从口令派生密钥。没有盐时,同一个口令在任何地方算出的密钥都相同,攻击者可以预先为常见口令建好对照表;加了随机盐,每份密文的密钥都不同,预计算就失效了;
- 初始向量用于让 CBC 模式的每一块密文都不相同,避免相同内容块产生相同密文。
两者都不需要保密,但解密时必须拿到原始值,所以打包进密文一起传。
一个实测细节:12 字节的明文(「机密内容」四个中文字)加密后是 16 字节密文——CBC 模式会把数据填充到 16 字节块的整数倍。
口令错了会怎样:直接报校验失败(INVALID),不会给出错误的明文。因为口令不对就算不出正确密钥,CBC 的填充校验会先失败。这也引出最重要的一条:
忘记口令无法解密,没有任何办法后门。 工具不保存口令、也不把口令藏在密文里。加密后必须先把口令记在稳妥的地方——这正是 AES 的意义,也意味着丢口令等于丢数据。
四、三种加密怎么选
| 用途 | 该用什么 |
|---|---|
| 教学演示、字谜游戏 | 凯撒 / ROT13 / ROT47 |
| 解谜、了解密码学历史 | 维吉尼亚 |
| 保护真实数据 | AES(配强口令) |
| 校验文件是否被改动 | 哈希(SHA-256、CRC32),不是加密 |
| 「换一种写法方便传输」 | Base64 / Base58,完全没有保密性 |
最后提醒:Base64 不是加密,任何人一键就能还原;而凯撒与维吉尼亚不要用于任何真实数据——它们的历史价值远大于实用价值。
五、直接算
→ 凯撒 / ROT 编解码:含 ROT13、ROT47 与暴力枚举破解
→ 维吉尼亚密码:自定义密钥,保留标点不消耗密钥位
→ AES 加密解密:AES-256-CBC,含随机盐与初始向量
→ 密码生成器:给 AES 生成一个够强的口令
本站文章为个人使用经验的原创整理,除已注明来源的引用外均为本人撰写。文中涉及的软件名称、商标、截图等归各自权利人所有,引用仅用于说明与交流。如认为本站内容侵犯了你的合法权益,请通过「关于本站」页面的联系方式告知,核实后将及时更正或删除。