哈希值识别器

粘贴一串哈希,按长度、字符集与前缀签名三重匹配,判断它最可能是哪种算法;同长度的算法会并列列出,带 $2a$ 或 $argon2id$ 这类前缀的则唯一确定。识别只给候选,不还原原文。数据在浏览器本地计算,不上传。

—

本页的核心结论:同样的长度可能有多种算法,识别只能并列给候选,不能唯一确定,也不能还原原文——示例 32 位十六进制 d41d8cd98f00b204e9800998ecf8427e 同时符合 MD5、NTLM 与 MD4 三种长度口径;只有把盐与参数写进字符串的前缀型口令哈希(如 bcrypt 的 $2a$)才能被唯一认出。

使用方法

  1. 「待识别的哈希值」框服务端直出示例 d41d8cd98f00b204e9800998ecf8427e,脚本未执行时也不是空白。粘贴或输入后按 Enter,或点「识别算法」。
  2. 输入里的首尾空格会先被去掉:复制哈希时很容易连带一个尾随空格或换行,页面先 trim 再判定,避免把长度算错。
  3. 页面按「长度 + 字符集 + 前缀签名」三重匹配。先看有没有 $2a$、$argon2id$ 这类前缀,再按字符集判断是不是纯十六进制,最后用长度落到具体的候选列表。
  4. 结果区列出全部候选算法。同一长度的算法会一起给出,例如 32 位十六进制同时列 MD5、NTLM、MD4,而不是替你猜一个。
  5. 能唯一确定的只有带前缀的口令哈希:bcrypt 的 $2a$ / $2b$ / $2y$、Argon2 的 $argon2id$、PBKDF2 的 $pbkdf2$ 都把盐与参数写进了字符串,长度与字符集之外还多一层签名。
  6. 下方算法表列出本页覆盖的全部算法及其长度,默认展开六行,「加载更多」补全其余行;「复制对照表」取 TSV,「导出 CSV」下载带 UTF-8 BOM 的文件。

这个哈希值识别器能解决什么问题

在日志、数据库、抓包结果或配置里遇到一串看不出含义的定长字符串,第一件事往往是判断它是不是哈希、属于哪一种,这决定了后续该用什么工具去校验或生成。本页把「看一眼长度就大致知道是哪种」这件事做成一步操作:无需跑命令行、无需联网,粘贴即给候选。

它也能反向帮你避坑。很多系统把 40 位十六进制当成 SHA-1,其实也可能是 MySQL 的旧式 PASSWORD 函数输出;看到 32 位十六进制就断言是 MD5,同样忽略了 NTLM 与 MD4 这两条同长分支。本页坚持把同长算法并列列出,就是为了让使用者知道「长度只能缩小范围,不能落锤」。

识别与生成是互补的两件事:如果手里有一段明文、想知道它算出来长什么样,应该用 MD5 加密或 SHA256 加密工具生成;如果手里只有一串哈希、想判断它可能是哪一种,就用本页。两者配合可以完成一次「生成—比对—反推算法」的完整排查。

计算原理与变量说明

本页不改动输入,只做只读的判定。判定由三个维度叠加:长度、字符集、前缀签名。

为什么 32 位十六进制至少有三种可能:MD5、NTLM、MD4 的输出长度都是 128 位,十六进制表示后都是 32 个字符,字符集也完全一致,仅凭字符串本身没有任何信息能把三者区分开。三者只在用途上不同——MD5 是通用摘要且已被碰撞攻破,NTLM 是 Windows 口令哈希且不带盐,MD4 更老且早已被淘汰——但字符串外观一模一样。示例 d41d8cd98f00b204e9800998ecf8427e 恰好是空串的 MD5,本身仍无法从字符判断它一定是 MD5。

为什么前缀型口令哈希可以唯一确定:bcrypt、Argon2、PBKDF2 为了自描述,把算法标识、代价参数与盐都编进了同一个字符串。例如 bcrypt 的 $2a$10$ 头里,$2a$ 指明算法变体、10 指明迭代代价的对数;Argon2id 的 $argon2id$ 直接写明模式。这些前缀是格式的一部分,因此看到即可确定算法,长度与字符集只作为辅助确认。

为什么识别只能给候选、不能还原原文:哈希是单向函数,设计目标就是无法从摘要反推出输入。长度与字符集只是对外观做分类,与明文之间没有任何可逆关系。要「还原」只能靠穷举或彩虹表去猜常见口令,这与识别算法是两回事。页面因此把结论表述为候选,并明确提示无法还原。

为什么 CRC32 要单独看待:它的输出是 8 位十六进制、与其它十六进制哈希外观相似,但它是校验和而非密码学哈希,设计目标是快速发现传输错误,既不加盐也不抗碰撞,任何人都能随意构造出碰撞。看到 8 位十六进制时,应先考虑它是 CRC32 而不是某种短哈希。

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

下面八条样例都由本页的判定逻辑复算得到,各自给出长度与候选算法。

示例数值均为演示,不代表对任何具体数据的还原结果;即便知道是 MD5,也无法从摘要反推出原来的 hello。

哈希算法长度与候选对照表

下表是八条样例的判定结果。可以看到同长度会稳定落到同一组候选,长度 32 的三条样例给出的都是 MD5、NTLM、MD4。

样例(节选)长度候选算法
d41d8cd98f00b204e9800998ecf8427e32MD5 / NTLM / MD4
5f4dcc3b5aa765d61d8327deb882cf9932MD5 / NTLM / MD4
da39a3ee5e6b4b0d3255bfef95601890afd8070940SHA-1 / MySQL5
e3b0c44298fc1c149afbf4c8996fb924…64SHA-256 / SHA3-256
cf83e1357eefb8bd…(SHA-512)128SHA-512
$2a$10$N9qo8uLOickgx2Z…(bcrypt)60bcrypt
5d41402abc4b2a76b9719d911017c59232MD5 / NTLM / MD4
aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d40SHA-1 / MySQL5

下表列出本页覆盖的十二种算法及其长度与字符集。它是判定的核心依据:拿到一串字符先数长度,再到这张表里找对应的算法。

算法长度(字符)位数输出字符集备注
CRC32832十六进制校验和,非密码学哈希
MD532128十六进制已被碰撞攻破
SHA-140160十六进制已被碰撞攻破
SHA-22456224十六进制SHA-2 家族
SHA-25664256十六进制推荐
SHA-38496384十六进制SHA-2 家族
SHA-512128512十六进制推荐
SHA3-25664256十六进制与 SHA-256 同长
bcrypt60—带 $2a$ 前缀口令哈希,含盐
Argon2id变长—带 $argon2id$ 前缀口令哈希,推荐
NTLM32128十六进制与 MD5 同长,无盐
Unix DES crypt13—Base64 风格仅前 8 字节有效

下表把长度单独抽出来,便于快速定位候选。它也是本页判定的执行顺序:先按长度缩小,再用字符集与前缀收窄。

长度(字符)候选算法能否唯一确定
8CRC32唯一(但属校验和)
13Unix DES crypt唯一(Base64 风格)
32MD5 / NTLM / MD4不能,三种并列
40SHA-1 / MySQL5不能,两种并列
56SHA-224唯一
64SHA-256 / SHA3-256不能,两种并列
96SHA-384唯一
128SHA-512唯一

结果边界、舍入与适用说明

常见问题

为什么 32 位十六进制要列出 MD5、NTLM、MD4 三个而不是一个?

因为三者的输出都是 128 位,十六进制表示后都是 32 个字符,字符集也完全相同,仅凭字符串外观无法区分。示例 d41d8cd98f00b204e9800998ecf8427e 与 5d41402abc4b2a76b9719d911017c592 长度都是 32,页面一律并列 MD5、NTLM、MD4,不做猜测。

怎么才能唯一确定是哪种哈希?

只有带前缀签名的口令哈希才能唯一确定:bcrypt 用 $2a$ / $2b$ / $2y$,Argon2 用 $argon2id$,PBKDF2 用 $pbkdf2$,它们把算法与参数写进了字符串。其余固定长度的摘要算法只能给出候选集合,要唯一确定得结合上下文,例如系统文档写了用的是 SHA-256。

识别出来后能还原出原文吗?

不能。哈希是单向函数,设计目标就是无法从摘要反推输入,识别算法只做外观分类,与原文之间没有可逆关系。想知道原文只能靠穷举或彩虹表去猜常见口令,这属于暴力破解范畴,与识别是两回事。示例即便判定为 MD5,也还原不出原来的 hello。

8 位十六进制是什么算法?

最可能是 CRC32。它的输出是 32 位、十六进制表示后 8 个字符,但它属于校验和而不是密码学哈希:不加盐、不抗碰撞、任何人都能构造碰撞,只用于快速发现传输错误。看到 8 位十六进制,应先按校验和处理。

64 位十六进制为什么既可能是 SHA-256 又可能是 SHA3-256?

因为两者输出都是 256 位,十六进制后都是 64 个字符,且都使用十六进制字符集,仅凭字符串无法区分。区别只在内部结构:SHA-256 属 SHA-2 家族,SHA3-256 基于 Keccak 海绵结构,本页因此把两者并列列出。

输入里带了空格或换行会怎样?

页面会先去掉首尾的空格与换行再做判定。哈希在复制粘贴时很容易连带一个尾随空格,若不 trim 就会把长度多算一位、落到错误的候选。若字符中间出现空格,则会被视为非纯十六进制并给出相应提示。

这个工具免费吗?

免费,无需注册即可使用。

输入的数据安全吗?

安全。计算在当前浏览器本地完成,不会上传输入内容。

相关工具