使用方法
- 把要处理的英文文本粘进左边的输入框,或直接在里面输入。页面打开时已经预置了一段示例,右边的结果区里展示的就是它的 ROT13 结果,不需要点任何按钮就能看到。
- 需要重新计算时点上面的转换 / 还原;在文本框里按 Ctrl + Enter(macOS 用 Cmd + Enter)也能立刻转换一次,普通回车留给换行,不会被误触发。
- 想还原一段 ROT13 文本,做法完全一样——把密文粘进来再转一次,因为 ROT13 是对合的,转两遍就会变回原文。
- 点载入示例随时还原上面那段样例;点复制结果把转换后的文本带走。输入框为空时本工具不会静默归零,而是提示你先输入内容。
这个 ROT13密码工具能解决什么问题
一是隐藏剧透与答案。网络论坛、习题答案、谜题提示里经常用 ROT13 把关键句先转一遍,读者想看就自己转回来,不想看就不会一眼扫到。这是它最经典的用途。
二是做可还原的趣味编码。因为位移固定为 13、又正好是 26 个字母的一半,转一次是密文、再转一次就是明文,不用另写一套解密逻辑,适合教学演示和临时混淆。
三是快速核对单表替换的对称性。当你要确认某个字母替换算法是不是对合的,拿 ROT13 当对照最直观:映射表里每一对字母互为 13 位位移,A 与 N、B 与 O 成对出现。
本页 ROT13密码工具不做这些事:它不是加密,不能提供任何机密性;它只处理 ASCII 大小写字母,带音调的拉丁字母和中文不会被替换;它也不做 Base64、URL、HTML 实体这类其它编码,需要那些请去页面底部的对应工具。
ROT13 转换原理与字母映射
ROT13 的算法只有一条规则:把每个英文字母在字母表里向后移动 13 个位置,超过 Z 就绕回 A。写成公式就是 ((码值 − 基准 + 13) % 26) + 基准,其中大写字母基准是 65(A 的码值),小写字母基准是 97(a 的码值)。取模运算用 % 26 实现字母表的循环回绕。
为什么偏偏是 13 而不是别的数字?因为 26 个字母的一半正好是 13,位移两次等于位移 26 位、也就是一位都没动,所以 ROT13 是自身的逆运算,加密和解密用同一段代码。这一点在 String.prototype.replace 里配合正则 [a-zA-Z] 就能完整表达:对每一个命中字母算出新码值再拼回。
字符的换算在 JavaScript 里用 String.fromCharCode 完成:先把字符转成码值,按上面的公式移位,再用 String.fromCharCode 变回字符;不是英文字母的字符原样返回。这套逻辑在 RFC 1345 里被正式记录,是公认的 ROT13 定义来源。
下面的映射表把 26 个字母逐一列出,既能当作查表工具,也能验证代码没有算错:每一行的大写和小写都满足「互相差 13 位」这一性质。
完整示例(数值为真实转换结果)
页面打开时输入框里就是示例原文,结果区里是它的真实 ROT13 输出,三处(输入框、结果区、下方示例)完全一致:
- 示例一:原文
Hello, World! 你好,世界→ ROT13Uryyb, Jbeyq! 你好,世界。其中逗号、空格、感叹号和中文共 9 个字符保持原样,只有 10 个英文字母被替换。 - 示例二(全字母句):原文
The quick brown fox jumps over the lazy dog→ ROT13Gur dhvpx oebja sbk whzcf bire gur ynml qbt。再转一次会精确还原成原句,可用来验证对合性质。 - 长度一致:两个示例的输出长度都等于输入长度(19 与 43),因为 ROT13 是 1 对 1 替换,不会增删任何字符。
输入范围与字母对照表
ROT13 只认 A–Z 和 a–z 这 52 个字符,下面给出完整 26 字母对照。表格默认显示前 12 行,点「加载更多」展开剩余行;需要离线保存可导出 CSV(带 BOM,Excel 直接不乱码)或 JSON(不带 BOM),也可一键复制 TSV 到剪贴板。
边界、精度与常见误用
- 只替换 ASCII 大小写字母:ROT13密码工具只认 A–Z 与 a–z,数字、空格、标点、中文全部原样保留;带音调的拉丁字母(如 é、ñ)不在 A–Z / a–z 范围里,也不会被替换。
- 输出与输入等长:ROT13 是单表替换,字符数 1 比 1,不会因为替换而变长或变短,方便做长度敏感的对比。
- 大小写各自独立:大写映射到大写、小写映射到小写,不会跨大小写改变,
Hello转完仍是首字母大写的Uryyb。 - 它不是加密:ROT13 的密钥是公开的(人人都知道位移 13),任何人都能在两步之内还原,所以它只能做混淆,不能替代任何真正的加密算法,也别用它保护敏感信息。
- 不存在「转错」的数值精度问题:因为只做整数码值加减与取模,没有浮点运算,所以不存在舍入误差;唯一要留意的是确认输入是纯文本而不是已经其它编码过的内容。
- 对合即自还原:正因为 13 是 26 的一半,连续应用两次结果等于原文,所以同一个按钮既能加密也能解密,不需要单独的解密入口。
常见问题
ROT13 和凯撒密码是一回事吗?
ROT13 是凯撒式单表替换里位移量固定为 13 的一个特例,区别在于 ROT13密码工具 的位移恰好是字母总数的一半,因此自带可逆性;一般的凯撒密码位移可以是 1 到 25 的任意值,解密需要按相反方向再移一次。本工具只做位移 13 这一种。
为什么我输入中文,结果里中文一点没变?
这是正常现象。ROT13 的定义只覆盖 A–Z 与 a–z,中文、数字、空格和标点本来就不在替换范围内,会原样保留。如果你想对中文做处理,本工具不适用,请改用页面底部的其它文本或编码工具。
ROT13 能当密码用吗?
不能。它没有任何密钥保密性,位移 13 是公开的常识,任何人都能立即还原。它只适合隐藏剧透、做趣味编码或教学演示,绝不要用它来「加密」账号、口令或私密内容。
转完再转一次为什么变回原文了?
因为字母表一共 26 个,位移 13 之后再位移 13 等于位移 26,绕了完整一圈回到起点。数学上就是 (x + 13 + 13) % 26 == x % 26,所以 ROT13 是自身的逆运算,这也是它最方便的地方。
带音调的字母(如 é、ü)会被替换吗?
不会。这些字符的码值不在 65–90 与 97–122 这两个 ASCII 字母区间里,本工具的判断条件只命中纯 ASCII 大小写字母,所以 é、ü 这类字符会原样保留,不会被误改成乱码。
转换结果的长度会和原文不一样吗?
不会。ROT13 是逐字符的 1 对 1 替换,字符总数保持不变;你看到的输出长度和输入长度始终相等,方便在长度受限的场景下直接互换使用。
输入框为空时会怎样?
本工具不会静默归零或给出空白结果,而是会在结果区下方提示「输入框为空」,并说明 ROT13 只处理英文字母、其它字符原样保留,引导你先填入内容再转换。
我输入的文本会被上传或保存吗?
不会。全部转换都发生在你的浏览器本地,页面不发起任何网络请求,也不会把输入写入浏览器存储。想验证的话可以打开开发者工具的 Network 面板,转换时观察不到任何请求。