古典密码解码
编码所有处理都在浏览器本地完成,数据不上传服务器
输入
把文件拖到这里可直接载入
输出
用这类工具的真实场景多半是拿到一段不知道被怎么处理过的文本(谜题、CTF、朋友发来的乱码),而不是「我知道它是凯撒,帮我解」。所以默认把常见变换一次全列出来,一眼扫过去看哪一行读得通 —— 想只做一种时再在上面选具体方法。 只动该动的字符。 凯撒、Atbash、维吉尼亚都只动字母,标点、数字、空格原样保留:把它们一起移位会毁掉文本结构,而且解不回来。唯一的例外是 ROT47 —— 它的定义就是在可打印 ASCII 上整体转 47 位,所以连标点都会变,这一点在结果里写明了。
功能
- 默认列出全部:ROT13、Atbash、ROT47、ROT18、ROT5 一次给全,一眼看出哪一行读得通
- 凯撒可选任意位移,也能暴破(25 种位移全列出来)
- 维吉尼亚支持自定义密钥;密钥下标只跟着密钥走,标点不消耗密钥字母
- 波利比奥斯方阵编码与解码
- ⚠️ ROT47 是唯一会改标点与数字的一种,结果里写明了原因
- ⚠️ 方阵把 I 与 J 合并,所以解码时 J 会变成 I —— 这是密码本身的性质,结果里也写明了
- 不做培根密码:它有两套字母表(24 字母与 26 字母),编出来的码完全不同,而文本本身看不出用的是哪一套
使用方法
- 把要处理的文本粘进去
- 默认「全部列出」会给出所有常见变换;想只做一种就在「方法」里选
- 要解凯撒又不知道位移,勾上「凯撒暴破」逐行看
常见问题
- 为什么不把所有字符都一起移位?
- 因为古典密码的定义就只管字母。凯撒、Atbash、维吉尼亚都是对字母表做置换,标点、数字、空格不参与 —— 把它们也一起移位会毁掉文本的可读结构,而且再解一次也回不到原文。唯一的例外是 ROT47,它按定义就是在可打印 ASCII 上整体转 47 位。
- ROT13 为什么「加密」和「解密」是同一个操作?
- 因为英文字母表有 26 个,转 13 位正好是一半 —— 转两次就回到原处。Atbash 和 ROT47 同理(后者是 94 个可打印字符转 47 位,也是一半)。所以这几个方法不需要「方向」这个选项,工具也不会假装它们有。
- 维吉尼亚的密钥里有数字和符号会怎样?
- 它们会被忽略,只取字母。这是常见做法 —— 密钥是用来决定位移量的,而位移量只能是 0–25,数字与符号没有对应的位移。另外密钥的推进只跟着密钥字母走:密文里的标点与空格不消耗密钥字母,否则同一段明文会因为多了几个空格而整体错位。
- 为什么没有培根密码?
- 因为它有两套互不兼容的字母表:原始版本是 24 个字母(I/J 与 U/V 各占一格),后来的版本改成 26 个。同一串 A/B 在两套下解出来的是不同的文字,而文本本身完全看不出用的是哪一套。给一个「解出来了」的结果,用户没有办法核对 —— 所以不做,而不是给一个可能错一半的答案。
相关工具
Base64 编解码
编码把文本转成 Base64,或把 Base64 还原成文本,中文与 emoji 都按 UTF-8 正确处理。全部在浏览器本地完成,内容不上传。
URL 编解码
编码把中文、空格与符号转义成 %XX,或把 %XX 还原成文本;整条 URL 与单独的参数值要选对方式,选错不会报错,但链接会打不开。全部在浏览器本地完成。
HTML 实体编解码
编码把 < > & 与引号转成 HTML 实体,也能把实体还原成字符,而且只解一遍:&lt; 得到的是 < 而不是尖括号。全部在浏览器本地完成。
JWT 解析与验签
编码把 JWT 拆成 header、payload、signature,支持用密钥验证 HS256/384/512 签名,并把 exp、nbf 换算成可读时间。全部在浏览器本地完成。
Unicode 转义
编码把中文、emoji 这类非 ASCII 字符转成 \uXXXX、\xXX 或 &#xXXXX; 的转义写法,也能还原回来。全部在浏览器本地完成,不上传。
文件转 Base64
编码拖入任意文件即可得到 Base64 与可直接粘进 src / url() 的 data URL,并列出 MIME、体积与编码后的长度。文件不上传。