使用方法
- 把未知字符串粘贴到输入框中。
- 工具会运行所有解码器,列出能顺利解码的编码,可能性最高的排在最前面。
- 查看每个候选结果的解码预览(文本或字节)以及识别出的文件类型。
- 确定编码后,打开对应的工具页面进行解码、转换或下载。
识别原理
每种编码都有自己的规则,字符串要么符合,要么不符合。工具会用每个解码器尝试解码你的输入:遇到字母表之外的字符、不可能出现的长度或位置错误的填充,就排除该编码;剩下的再按解码结果的合理程度排序。
- 字符集。十六进制只用
0-9和a-f;Base58 不会出现0、O、I、l;出现+或/多半是 Base64,出现-和_则更像 Base64URL。 - 长度和填充。十六进制必须是偶数位;Base64 以 4 个字符为一组,Base32 以 8 个字符为一组,填充符
=只能出现在末尾。 - 解码结果是否可读。能解码成有效 UTF-8、并且由可打印字符组成的候选,远比解出一堆随机字节的候选更可信。
- 文件签名。如果解码后的字节以已知的文件头开头,例如 PNG、JPEG、PDF、ZIP 或 gzip,工具会同时显示文件类型。
data: URI 前缀、Adobe 的 <~ ~> 定界符、uuencode 的 begin 行等包装格式,对应的解码器都能识别。整个过程都在浏览器中完成。
为什么结果是排序,而不是定论
不同编码的字母表大量重叠。字符串 48656c6c6f 是 Hello 的十六进制形式,但这 10 个字符同样是合法的 Base64、Base36、Base58 和 Base62,只是解出的字节各不相同。只有按十六进制解读才能得到可读文本,所以十六进制排在第一位。像 cafe 这样的短单词几乎符合所有字母表,字符串本身无法说明它原本用的是哪一种。
输入越长,结论越清晰,因为偶然吻合的可能性会迅速降低。如果没有任何候选能解码成文本或已知文件类型,数据可能经过加密或压缩,也可能是哈希值。例如十六进制形式的 SHA-256 哈希完全是合法的十六进制,但它的字节本来就设计成看似随机。
常见编码的肉眼识别方法
| 编码 | 典型特征 |
|---|---|
| 十六进制 | 只有 0-9 a-f,长度为偶数。32、40 或 64 位常见于 MD5、SHA-1、SHA-256 哈希。 |
| Base64 | A-Z a-z 0-9 + /,长度是 4 的倍数,末尾可能有 = 或 ==。 |
| Base64URL | 用 - 和 _ 代替 + 和 /,通常不填充。用点号连接的三段内容是 JWT。 |
| Base32 | 大写 A-Z 加 2-7,用 = 填充到 8 的倍数。 |
| Base58 | 字母和数字,但没有 0 O I l。常见于比特币地址和以 Qm 开头的 IPFS 哈希。 |
| Ascii85、Base85 | 字母、数字和标点符号密集混排。Ascii85 有时包在 <~ ~> 之间。 |
常见问题
怎样判断一段字符串是不是 Base64?
看它是否只包含 A-Z、a-z、0-9、+ 和 /,长度是否为 4 的倍数,末尾是否最多有两个等号。粘贴到这里,看看能否解码成可读文本或已知文件类型。如果需要严格检查并定位错误位置,请使用 Base64 校验工具。
为什么会显示好几种编码?
很多字符串同时符合多个字母表,短字符串尤其如此。工具会列出所有能无错误解码的编码,并根据解码结果是否为可读文本、是否带有文件签名,把最可能的排在前面。
所有结果都不是可读文本,说明什么?
数据可能是二进制内容,比如图片或压缩文件,这时可以参考识别出的文件类型。它也可能是加密数据、哈希值,或者用非标准字母表编码的字节;后一种情况可以试试自定义字母表工具。
这个工具能解密字符串或破解哈希吗?
不能。Base64 这类编码不使用密钥,本身就是可逆的,所以能被识别和解码。加密数据没有密钥就无法读取,哈希值也无法还原成原始输入。
粘贴的字符串会发送到服务器吗?
不会。所有解码器都在浏览器本地运行,令牌、密钥和日志内容都不会离开你的设备。