密码哈希解码器

密码哈希使用带盐值和可配置工作因子的单向函数安全地存储凭证。此工具自动检测并解析模块化加密格式(MCF)、PHC 字符串格式和 LDAP 方案的哈希,显示算法、参数、盐值、哈希输出和安全评估。

规范

常见用例

  • 识别数据库使用的密码哈希算法
  • 在渗透测试或安全审查中审计密码哈希安全性
  • 验证 bcrypt 成本因子和 Argon2 参数是否满足 OWASP 建议
  • 理解 LDAP 目录密码存储方案
  • 通过检查哈希格式和参数调试认证问题

功能

  • 自动检测 MCF($1$、$2b$、$5$、$6$、$sha1$、$apr1$)、PHC($argon2id$、$scrypt$、$pbkdf2$)和 LDAP({SSHA}、{SHA}、{MD5})格式
  • 显示算法、变体、参数(成本、轮数、内存、并行度)、盐值和哈希输出
  • 安全评估:严重(MD5/无盐)、弱(SHA-1/低成本)、中等(SHA-crypt)、强(bcrypt 12+/argon2/scrypt)
  • 颜色编码的安全评估建议
  • 哈希编码格式显示(base64、hex 等)
  • 从多行输入中解析多个哈希
  • 显示哈希位长度和编码格式
  • 每种算法的相关规范链接

示例

bcrypt 密码哈希

试试看 →

一个成本因子为 12 的 bcrypt 哈希——新应用程序的推荐最低值。

$2b$12$LJ3m4ys3Lg2VBe5E5Ij25eNsaDl3JK8i3pg7jBepGQhWcqMpqXA4q

Argon2id 密码哈希

试试看 →

64 MB 内存、3 次迭代和 4 个线程的 Argon2id——当前最佳实践。

$argon2id$v=19$m=65536,t=3,p=4$c29tZXNhbHQ$RdescudvJCsgt3ub+b+daw

提示

  • OWASP 推荐 bcrypt 成本因子 12 以上。每增加一级,计算时间翻倍。
  • Argon2id 是当前最佳实践——它结合了侧信道抗性(argon2i)和 GPU 抗性(argon2d)。
  • LDAP {SSHA} 是加盐的 SHA-1——比 {SHA} 好但仍是快速哈希。建议迁移到 bcrypt 或 Argon2。
  • 粘贴编码面板的密码哈希输出到此处进行解码和验证。

理解 密码哈希解码器

密码哈希是将密码以单向加密哈希形式存储而不是明文的做法。当用户设置密码时,系统对其进行哈希并存储哈希值。登录时,系统对提交的密码进行哈希并将结果与存储的哈希进行比较。因为哈希函数是单向的,获得哈希数据库的攻击者无法直接恢复密码。

现代密码哈希算法有意设计为缓慢且内存密集,以抵抗暴力破解攻击。bcrypt 使用可配置的成本因子,每增加一级计算时间翻倍。Argon2(2015 年密码哈希竞赛的获胜者)增加了可配置的内存使用以抵抗基于 GPU 的攻击。scrypt 同样需要大量内存。这些"慢哈希"与快速哈希(MD5、SHA-256)根本不同,后者是为速度设计的,不适合密码存储。

密码哈希使用标准化的字符串格式以实现可移植性。模块化加密格式(MCF)使用 $ 分隔符:$2b$12$... 表示 bcrypt,$5$ 表示 SHA-256-crypt,$6$ 表示 SHA-512-crypt。PHC 字符串格式(用于 Argon2)添加了命名参数:$argon2id$v=19$m=65536,t=3,p=4$salt$hash。LDAP 系统使用方案前缀:{SSHA}、{PBKDF2}。

每个哈希都包含盐值——在哈希前与密码组合的随机数据,确保相同的密码产生不同的哈希。没有盐值,攻击者可以使用预计算的彩虹表立即查找常见密码哈希。盐值与哈希一起存储(它不是秘密),并为每个密码随机生成。

对于新应用程序,OWASP 推荐 Argon2id 为当前最佳实践。如果你的框架不支持 Argon2,成本因子 12 以上的 bcrypt 是次优选择,scrypt 也是可接受的。MD5、SHA-1 和纯 SHA-256 绝不应用于密码——它们太快了,在现代 GPU 上可以每秒暴力破解数十亿次。MD5 特别是被设计为快速校验和算法,不是为密码存储设计的,且存在已知的碰撞漏洞。无盐的 MD5 哈希也容易受到彩虹表攻击。

bcrypt 成本因子($2b$ 后的数字)是控制计算时间的指数。成本 10 意味着 2^10 = 1,024 次迭代,而成本 12 意味着 2^12 = 4,096 次迭代——比成本 10 慢四倍。OWASP 推荐最低成本 12。每增加一级时间翻倍,因此从 10 增加到 12 使哈希对服务器和任何攻击者都慢 4 倍。

盐值和胡椒值在密码安全中扮演不同的角色。盐值是与哈希一起存储的随机数据,每个密码唯一,确保相同的密码产生不同的哈希——盐值不是秘密。胡椒值是应用于所有密码的秘密密钥(通常通过 HMAC),与数据库分开存储在应用程序配置或硬件安全模块中。如果数据库被泄露但胡椒值没有,即使有盐值,攻击者也无法破解哈希。同时使用两者提供了纵深防御。

← 返回所有工具