哈希算法识别工具(逆向判定)|自动判断 MD5・SHA-1・SHA-256・SHA-512・SHA-3・BCrypt・Argon2

只需粘贴一段疑似哈希值的字符串,本工具即可根据字符数、字符种类和前缀,判断它最可能是由 MD5、SHA-1、SHA-256、SHA-512、SHA-3、BCrypt、Argon2 中的哪种算法生成的。判定过程完全在浏览器内完成。

哈希值本身并不会记录生成时所用的算法名称。由于多种算法可能产生相同的输出长度,此判定结果只是基于字符数、字符种类和前缀得出的"最可能的推测",并非100%确定的结论。

哈希判定小提示

  • 判定仅以字符数、字符种类(十六进制还是 Base64)和前缀为线索,并不会实际重新计算哈希值进行验证。它只是展示"从格式上可以推测出的候选项"。
  • BCrypt($2a$/$2b$/$2y$)和 Argon2($argon2id$ 等)的前缀本身就嵌入了算法名称和参数,因此可以以较高的置信度判定。
  • 64位十六进制最常见的是 SHA-256,但 SHA3-256 也是相同的位数,如果知道来源系统所用的语言或库,也请一并参考该信息。
  • 多行复制的哈希转储(以换行符或空格分隔)也会在判定前自动去除内部的空白字符,因此可以直接粘贴使用。
  • 如果对判定结果没有把握,最可靠的方法是查看生成该哈希值的应用程序源代码或文档。

常见问题

仅凭哈希值本身是不可能做到的。由于存在像 SHA-256 和 SHA3-256 这样输出位数完全相同的算法,仅看输出结果无法下定论。若要确切知道,需要查看生成该哈希值的应用程序的源代码或文档。

这是因为 BCrypt 和 Argon2 是专为密码存储而设计的,它们采用了一种"模块化加密格式",会在哈希值开头以文本形式嵌入 $2b$$argon2id$ 之类的算法名称和参数。只要能读取到这些信息,就能唯一确定所使用的算法。

不能。本工具仅根据哈希值的"外观"推测算法种类,完全不提供从哈希值还原原始数据(例如暴力破解)的功能。

MD5 和 SHA-1 的抗碰撞性已被攻破,如果在密码存储场景中发现它们,应将其视为安全风险处理。建议将系统迁移到专为密码存储设计的 BCrypt 或 Argon2id。

可以。使用本站的哈希批量计算与比较工具,输入相同的字符串即可实际计算出 MD5、SHA-1、SHA-256、SHA-512、SHA-3、BCrypt、Argon2id 的值,并与此判定结果进行核对。
ツールくん

闲话 ― 为什么仅凭哈希值无法确定所使用的算法

哈希函数的职责是"将输入数据转换为固定长度的输出",而这个输出(摘要)本身并不包含任何指明算法名称的元数据。这是设计上的必然结果:如果嵌入元数据,输出长度就会发生变化,从而破坏"固定长度"这一密码学哈希函数的重要性质。因此,我们能够依据的线索只有输出的"外观"——即字符数和字符种类。

这一局限性在 SHA-2 系列与 SHA-3 系列的关系上表现得最为明显。SHA-256 与 SHA3-256 的内部结构完全不同(SHA-2 采用 Merkle–Damgård 结构,SHA-3 采用海绵结构),但两者都被设计成输出 256 位、即十六进制 64 位的结果。SHA-224 与 SHA3-224、SHA-384 与 SHA3-384、SHA-512 与 SHA3-512 之间也存在同样的关系,仅凭输出长度无法断定究竟是哪一个。由于在实际应用中 SHA-2 系列的普及率远高于 SHA-3 系列,本工具在位数一致时会优先给出 SHA-2 系列作为候选,但这终究只是基于统计趋势的推测。

另一方面,BCrypt 和 Argon2 这类专为密码哈希设计的算法,为了消除这种不确定性,采用了一种被称为"模块化加密格式"的自描述格式。例如 $2b$12$...$argon2id$v=19$...,会将算法名称、版本和参数以文本形式嵌入到开头,使得仅凭哈希值本身就能唯一还原出计算方式。遇到这种格式的哈希值时,就可以进行确定性的判定。

这类判定工作在实际场景中确有用武之地,例如调查从遗留系统中发掘出的密码转储数据,或是在被称为 CTF(夺旗赛)的安全竞赛中进行密码破译挑战。只要能从哈希值缩小算法范围,就能高效地决定接下来应尝试哪种分析工具或破解手法(例如在 Hashcat 中选择哪种攻击模式)。

→ 查看全部趣味知识