凯撒密码

按 0~25 的循环位移把英文字母整体平移,加密、解密、一键 ROT13、穷举 26 种位移破译一步到位。大小写各自独立循环,数字与汉字原样保留,出错时说明差在哪里,不会静默给一个错误结果。

方向: 位移:(0~25 的整数)
Phhw ph dw wkh jdwh dw qrrq

(加密方向,位移 3:27 个字符中 21 个字母被平移,6 个空格原样保留)

提示:输入框里按 Ctrl + Enter(macOS 用 Cmd + Enter)立即转换一次;Enter 留给换行,多行文本会整体一起转写。位移输入框内按 Enter 也会触发。示例已预置并直接出结果,点「载入示例」可随时还原。

使用方法

  1. 把明文或密文粘进输入框。页面打开时已预置 Meet me at the gate at noon,默认加密方向、位移 3,结果区直接显示密文 Phhw ph dw wkh jdwh dw qrrq,不用先点按钮。
  2. 选方向:加密把明文往后推位移位,解密则往前拉。同一个位移 3,A 加密变 D,解密时 D 变回 A——内部等价于把位移取 26 − 3 = 23 再做一次加密。
  3. 位移填 0~25 的整数。位移 13 就是 ROT13,点「一键 ROT13」等价于把位移设为 13 再执行;ROT13 是自逆的,对密文再做一次即还原,无需切换方向。
  4. 拿到一段不知位移的密文时,点「穷举 26 种位移」,结果区会并排出 26 行,逐行找可读的那一行。例如密文 Khoor Zruog 的可读行出现在位移 23:Hello World(26 − 3 = 23,与「用位移 3 加密」完全对应)。
  5. 全部转换完成后点「复制结果」带走;位移对照表支持导出 CSV 与 TSV 复制,方便查某一位移下 A 与 a 的去向。

这个凯撒密码工具能解决什么问题

一是教学演示古典密码的第一个实例。凯撒密码是几乎所有密码学课程和 CTF 入门题的第一站,本页把位移、绕回、大小写独立、非字母保留这些规则逐条做实——你在正文里看到的每个结果都能在输入框里复现。

二是破译凯撒风格的密文。网络流传的谜题、游戏彩蛋、老论坛里藏的头,很多就是简单位移。26 个密钥全部穷举也就 26 行,肉眼挑出可读行即可,例如 Khoor Zruog 穷举到位移 23 就是 Hello World。

三是快速使用 ROT13。剧透保护、谜题提示里常见的 ROT13 不需要算位移、也不需要分方向,一键完成且再点一次即还原。四是核对位移表:写作业或出题时想知道「位移 7 下 a 变成什么」,对照表一行就给出答案,不用手数字母表。

本页不做这些事:不做多表替换与关键词代换(那是「维吉尼亚密码工具」的领域)、不做摩斯电码滴答声与点划转换(请用「摩斯电码代码转换」)、不做任何真正保密用途的加密。这种古典密码只有 26 种密钥(约 4.70 bit 熵),机器穷举瞬间即破,绝不能用来保护真实数据。

转写原理:模 26 循环位移、码点偏移与大小写独立处理

凯撒转写的核心是一段纯算术转写:对每个字符取码点,落在 A–Z(码点 65~90)就用 (码点 − 65 + 位移) mod 26 + 65 算新字符,落在 a–z(码点 97~122)就用 (码点 − 97 + 位移) mod 26 + 97;其余字符一律原样返回。写进实现里就是 String.fromCharCode(...) 配合取模运算,没有查表、没有第三方依赖。

为什么先减 65 或 97 再取模。直接对码点取模会把大小写和标点搅在一起:65 到 90 之间共 26 个码点,减去 65 后恰好归一到 0~25,加位移取模再补回 65,就完成了「在 26 个字母内部循环」。两个字母表各转各的,所以大小写永不互串——aBcDeF 位移 1 得到 bCdEfG,大写仍大写、小写仍小写。若只转写不区分,Z(90)加 3 会落到 93,那是 ] 而不是 C;取模绕回后 (25 + 3) mod 26 = 2,补回 65 得 C,这正是循环的由来。

位移 0~25 的取舍。字母表只有 26 个位置,位移 26 与位移 0 等价,位移 27 等价于 1,所以有效密钥空间就是 0~25 共 26 个,任何超过 25 的输入先取模再参与运算。26 种密钥折算熵只有 log2(26) ≈ 4.70 bit,对比 AES-128 的 2128 种密钥差了一百多个数量级——这就是这种古典密码只能教学、不能保密的数学原因。注意对比:真正的现代密码密钥空间在 2128 量级,两者之间隔着天文数字。

ROT13 是位移 13 的特例。13 正好是 26 的一半,加密与解密是同一个操作(26 − 13 = 13),所以它天然自逆:Hello 变 Uryyb,Uryyb 再变回 Hello。它常被用于剧透遮蔽而非保密。

解密方向在实现上就是再加密一次。位移 k 的解密等于位移 26 − k 的加密:位移 3 的密文用 23 解开(Khoor Zruog → Hello World),位移 25 的密文用 1 解开。非字母不受影响,因此空格与标点原样保留——这既是易用性优点也是安全缺陷:词长与词频模式全部暴露,配合穷举几乎不需要分析就能破。例如 你好, World! 123 位移 5 得到 你好, Btwqi! 123,数字、逗号、汉字与空格纹丝未动。

完整示例(数值仅作演示)

示例条件与页面打开时输入框里的内容完全一致:明文 Meet me at the gate at noon,加密方向,位移 3。逐段拆解:

穷举演示:对密文 Khoor Zruog 点「穷举 26 种位移」,位移 0 行是密文本身,位移 10 行是 Uryyb Jbeyq(即 Hello World 的 ROT13),位移 23 行出现可读的 Hello World——它就是答案,且与「用位移 3 加密」严格对应。

位移 0~25 对照表(加密方向)

下表给出每个位移下 A 与 a 的去向,其余字母按同一序号顺推(如位移 3 时 B→E、b→e)。解密方向读表反向即可,或用 26 − 位移 查加密列。

位移加密时 A 变为加密时 a 变为说明
0Aa恒等,输出与输入相同
1Bb最小可见位移
2Cc
3Dd经典凯撒位移,据传尤利乌斯·凯撒用于军事信函
4Ee
5Ff
6Gg
7Hh
8Ii
9Jj
10Kk
11Ll
12Mm半程
13NnROT13,自逆:再执行一次即还原
14Oo
15Pp
16Qq
17Rr
18Ss
19Tt
20Uu
21Vv
22Ww
23Xx等于解密位移 3(26 − 3)
24Yy等于解密位移 2
25Zz等于解密位移 1,Z 加密后绕回 C 是位移 3 的另一端

输入范围、边界与精度说明

常见问题

位移填 30 可以吗?为什么工具不让?

可以数学上等价于位移 4(30 mod 26),但工具要求 0~25 的原始值,不自动取模。原因很简单:出题与核对场景里,输入 30 还是 4 直接影响结果是否与答案一致,替你取模反而掩盖了输入错误。想用等价位移,自己减 26 再填即可。

为什么汉字和数字没被转写?

凯撒密码的定义只在 26 个英文字母内循环,这是历史原貌。汉字不在码点 65~90 与 97~122 两个区间内,数字也不在,实现按定义原样保留。如果你需要转写其他字母表,那已经是广义代换密码,超出它的范围。

穷举出来的 26 行,怎么判断哪一行是明文?

先看哪一行有常见英文单词,再看哪一行读起来通顺。位移式转写保留词长与标点,句子结构全部可见,通常一两眼就能锁定。若密文没有空格,可以结合高频字母试读:英文里 e 出现最多,密文中的高频字母大概率对应 e。

ROT13 和位移 13 是一回事吗?

是。ROT13 就是凯撒密码位移 13 的别名,因为 13 是 26 的一半,加密和解密完全重合,对文本做两次 ROT13 即还原原文。本页「一键 ROT13」按钮就是设位移 13 后执行,不需要切换方向。

解密时位移该填多少?

填加密时的那个位移,方向切到「解密」即可,工具内部自动换成 26 减去它。如果你忘了加密位移,直接用穷举:可读行所在位移 k 满足 26 − k 等于原加密位移,两种读法结果相同。

凯撒密码安全吗?能用它保护密码吗?

完全不安全。密钥空间只有 26 个(约 4.70 bit),穷举 26 行就结束了;词频分析甚至不需要穷举。它只适合教学、谜题和轻度混淆。要保护真实数据请用现代加密(如 AES-256),并用「安全密码生成器」类工具产生高熵密钥。

转换后大小写会变吗?多行会乱吗?

都不会。大写区间 65~90 与小写区间 97~122 各自独立取模,aBcDeF 位移 1 得 bCdEfG;换行符与空格同属保留字符,多行文本转写后行数与行内容结构不变,只有字母被平移。

输入的内容会被上传或保存吗?

不会。位移转写、穷举、对照表全部在页面里用纯算术完成,没有任何网络请求,也不写入浏览器存储。想自行验证,打开开发者工具的 Network 面板,多点几次「开始转换」,可以看到没有新请求发出。

相关工具