加密标识符

您从数据库转储文件中提取出类似 $2y$10$...5f4dcc3b5aa765d61d8327deb882cf99 的字符串,在开始破解或逆向分析之前,必须明确这些字符串的具体含义。该识别器通过运用长度、字符集、结构及前缀等启发式方法,来推测密文样本背后最可能采用的算法或编码方式。

如何识别密文

  1. 1

    粘贴样本

    单个哈希值、密文数据块、令牌或编码字符串。

  2. 2

    查看匹配的格式

    所有模式与样本匹配的格式都会列在结果中。

  3. 3

    交叉核对

    如果多个格式匹配,请使用哈希破解器或解码器确认哪一个是正确的。

  4. 4

    注意不确定性

    仅凭样本进行识别很少能得出确定结论;如果没有任何匹配,工具会明确提示。

标识符使用的签名模式

基于长度(适用于十六进制编码的哈希值):

长度(十六进制字符数) 识别为
32 MD5
40 SHA-1
64 SHA-256
128 SHA-512

其他长度,例如 56 个字符的 SHA-224 或 96 个字符的 SHA-384,不会被识别为哈希(56 或 96 个字符的十六进制字符串会被归类为 Base64)。

基于前缀(仅识别 bcrypt 前缀):

  • $2a$ $2b$ $2y$ bcrypt

其他 crypt 风格的前缀($1$$5$$6$$argon2i$$argon2id$$pbkdf2$)不会被识别。

基于编码

  • [A-Za-z0-9+/=] 中的所有字符且长度为 4 的倍数:很可能为 Base64。
  • . 划分的三个片段,每个片段包含 [A-Za-z0-9_-] 字符:JWT。

PEM 封装器、OpenSSH 的 ssh-rsa/ssh-ed25519 数据块以及包含 -_ 的 Base64url 字符串不会被检测。

识别无法告诉你的信息

  • 100% 确定的精确算法。 64 个十六进制字符的字符串会被报告为 SHA-256,但也可能是 SHA3-256 或 BLAKE2s;仅凭密文无法区分它们。NTLM 哈希(同样为 32 个十六进制字符)与 MD5 看起来完全相同。
  • 密钥强度。 bcrypt 哈希在其前缀中显示成本因子($2y$10$ = 成本 10),但并不反映底层密码本身的强度。
  • 是否经过加盐处理。 现代密码哈希算法(如 bcrypt、Argon2)均会进行加盐处理;而旧版算法(如原始 MD5/SHA)则可能不加盐。
  • 明文。 识别无法逆转哈希值;破解是一个独立的过程,仅可对您自己的数据进行。

当标识符错误时

  • 自定义前缀标记。 应用程序有时会在哈希值后添加自己的前缀;请先移除该前缀。
  • 双编码问题。 使用 Base64 编码的二进制哈希值十六进制表示形式可能被错误识别。请尝试解码一次后重新运行。
  • 异常长度。 截断后的哈希值(使用 SHA-256 算法生成的前 16 个字符作为标识)会显示为“Base64”,因为字符与长度规则存在重叠。
  • 带框架或带包装的格式。 PEM 数据块、OpenSSH 密钥以及 Django 的 pbkdf2_sha256$... 不会被识别;请移除包装或前缀后重试,或使用专门的解析器。

使用场景

  • 安全审计:在加密算法迁移前,对整个代码库中的哈希类型进行归类记录。
  • CTF挑战:对未知数据块进行快速初步分析。
  • 事件响应:识别泄露的凭证格式。
  • 框架调试:确定库产生的编码类型。

伦理注意事项

识别哈希格式属于被动研究行为。未经授权破解他人生成的哈希值将违反大多数司法管辖区的计算机滥用法规。仅可对您拥有或获授权分析的哈希值进行操作。

常见问题

部分可以:MD5为32个十六进制字符,SHA-1则为40个。若两者长度处于相同范围,仅凭哈希值无法区分;通常需要结合上下文(如数据库列名、框架默认设置或泄露的表结构)才能确定。

不是。它只做识别。逆转哈希值或解密密文需要专门的工具(以及密钥,或破解所需的计算资源),且仅可对您自己的材料进行,方符合法律规定。

Argon2id(或采用高成本因子的bcrypt)是当前推荐方案;PBKDF2-SHA256和scrypt仍可接受;而普通MD5、SHA-1或未加盐处理的SHA-256则不适用于密码存储。

不会。您粘贴的值会发送到我们的服务器进行格式检查,但不会存储在任何数据库中,也不会添加到页面链接中。

相关工具

此工具还提供其他语言版本