哈希识别工具

粘贴一个哈希值,即可查看可能生成它的算法,并按可能性排序。支持十六进制和 Base64 摘要以及多种密码哈希格式,还可以用你自己的文本验证猜测。

完全在浏览器中运行,不会上传任何数据。

使用方法

  1. 粘贴一个哈希值。请去掉 0x、sha256=、sha384- 之类的标签,但密码哈希要完整保留,包括开头的 $、{ 或 *。
  2. 查看结果:先是识别出的形式及其位数,然后是可能的算法,并标出最可能的项。如果字符串中包含 bcrypt 的成本因子,或 sha256crypt、sha512crypt、PBKDF2 的轮数,也会一并显示。
  3. 对于 MD5、SHA-1、SHA-256、SHA-512、CRC-32 和 CRC-32C 候选项,点击“打开工具”可以跳转到对应的计算器。
  4. 如果你知道或猜到原始文本,把它输入“用文本验证”框,即可查看哪种算法能得到这个哈希。

如何识别哈希类型

每种哈希算法的输出长度都是固定的,而十六进制每个字节占两个字符,所以十六进制字符串的长度是最重要的线索。工具还会检查字符集,并查找密码哈希格式写在开头的前缀。

十六进制字符数位数常见算法
832CRC-32、CRC-32C、Adler-32
32128MD5、NTLM、MD4
40160SHA-1、RIPEMD-160
56224SHA-224、SHA3-224
64256SHA-256、SHA3-256、BLAKE2s、Keccak-256
96384SHA-384、SHA3-384
128512SHA-512、SHA3-512、BLAKE2b、Whirlpool

仅凭长度无法下定论,因为好的哈希看起来就像随机数据,其中并没有标明算法。一个 32 个字符的值可能是 MD5、MD4,也可能是 Windows 用于账户密码的 NTLM(即 UTF-16LE 编码密码的 MD4)。因此工具会按常见程度为候选算法排序:通常 MD5 排在最前;如果哈希全部为大写,则把 NTLM 排在最前,因为一些 Windows 密码导出工具以大写形式输出。同样,以太坊使用的 Keccak-256 与标准化的 SHA3-256 只在填充方式上不同,输出都是 64 个十六进制字符。

Base64 摘要与密码哈希格式

有些系统用 Base64 而不是十六进制书写摘要:24 个字符对应 16 字节(MD5,例如 Content-MD5 请求头),28 个字符对应 SHA-1,44 个对应 SHA-256,64 个对应 SHA-384(例如子资源完整性 SRI 属性),88 个对应 SHA-512。工具会把长度换算回字节数,并列出同样的候选算法。缺少填充或使用 URL 安全字符都没有问题,但请先去掉 sha384- 之类的前缀。

密码哈希格式是自描述的:开头的前缀标明算法,盐值和成本参数也写在字符串里。现代格式都加了盐,并且刻意设计得很慢;表格最后两行的 LDAP 和 MySQL 格式则是快速的 SHA-1 构造,其中只有 {SSHA} 加了盐。

开头格式常见于
$2a$、$2b$、$2y$bcrypt,总长固定为 60 个字符;紧随其后的两位数字是成本因子,每加 1 计算量翻倍各类 Web 框架、PHP 的 password_hash()
$argon2id$Argon2id,带有内存(m)、时间(t)和并行度(p)参数现代应用,OWASP 推荐
$6$、$5$sha512crypt、sha256crypt,可带 rounds=Linux 的 /etc/shadow
$y$yescrypt许多较新 Linux 发行版的 /etc/shadow
$1$、$apr1$md5crypt、Apache MD5较旧的 Unix 系统、.htpasswd
pbkdf2_sha256$PBKDF2-SHA256,带迭代次数Django
{SHA}、{SSHA}SHA-1、加盐 SHA-1LDAP 目录
* 加 40 个十六进制字符MySQL 4.1+ 的 PASSWORD()MySQL 用户表

识别不等于破解

哈希是单向的。识别工具只分析字符串的形态,无法揭示、解密或查询原始输入,也不会把任何内容发送到服务器或在线数据库。想找到原始输入,唯一的办法是猜测候选值并逐个计算哈希,hashcat、John the Ripper 等密码恢复工具在确定算法后做的就是这件事。bcrypt、Argon2 这类加盐的慢速格式,正是为了让这种猜测代价高昂。请只测试你有权处理的哈希。

用文本验证用来检验一个具体的猜测:它把你输入的文本按 UTF-8 编码,分别计算 MD5、SHA-1、SHA-256、SHA-384、SHA-512、CRC-32 和 CRC-32C,并告诉你哪一个与哈希一致,无论哈希是大小写十六进制还是 Base64。它无法验证加盐的密码哈希或 HMAC,因为这些还取决于盐值或密钥;对于带密钥的值,请在 HMAC 生成器中填入密钥计算。

常见问题

这个工具能告诉我原始文本或密码吗?

不能。它只能指出可能使用的算法。哈希函数无法逆向计算;网上所谓的“哈希解密”只是在常用词和泄露密码的哈希表中查找,只对弱口令、未加盐的输入有效。

为什么一个哈希会列出好几种算法?

输出长度相同的算法会生成长度和字符集都相同的字符串,哈希本身并没有记录使用了哪种算法。工具会根据各算法的常见程度,把最可能的一项排在最前。要确认结果,只能用已知输入重新计算哈希。

32 个字符的十六进制字符串一定是 MD5 吗?

通常是,但并不总是。NTLM、MD4、MD2 和 RIPEMD-128 的长度都一样,任何以十六进制书写的 128 位值也是如此,例如去掉连字符的 UUID 或随机令牌。要结合上下文判断:Windows 密码哈希通常是 NTLM,文件校验值通常是 MD5。

为什么“用文本验证”提示不一致?
文本必须逐字节完全相同。常见原因有:末尾多了换行符(echo 会自动加上换行,可改用 echo -n 或 printf);空格或大小写不同;原文是用 UTF-8 以外的编码计算的;带有盐值或密钥,例如密码哈希和 HMAC;或者所用算法不在验证范围内,例如 SHA-3、BLAKE2 或 NTLM。
把密码哈希粘贴到这里安全吗?

分析完全在你的浏览器中进行,哈希不会被传输或保存。不过,任何拿到真实系统密码哈希的人都可以离线尝试猜测,因此请把这类哈希视为敏感信息,不要放进工单、聊天记录或截图中。