密码哈希工具

用 OWASP 推荐的参数和随机盐,通过 Argon2id、bcrypt、scrypt 或 PBKDF2 对密码进行哈希,并用已存储的哈希验证密码。

每次点击都会生成新的 16 字节随机盐值,因此哈希每次都不同,但都能通过验证。参数遵循 OWASP 密码存储备忘单。请保存完整的编码字符串:其中包含算法、参数、盐值和哈希。

用哈希验证密码

完全在浏览器中运行,您的数据不会被上传。

什么是 密码哈希工具?

此工具使用 OWASP 密码存储备忘单中的最低参数和全新的随机盐,一键生成可直接存储的密码哈希。内置的验证器可对照任何 bcrypt、Argon2、scrypt 或 PBKDF2 哈希字符串检查密码。

如何使用 密码哈希工具

  1. 在密码栏中输入密码。
  2. 选择算法;推荐 Argon2id。
  3. 点击计算哈希并复制编码后的哈希。
  4. 要检查密码,请把哈希粘贴到用哈希验证密码中,输入密码并点击验证。

示例

输入
Password hunter2, Argon2id
输出
$argon2id$v=19$m=19456,t=2,p=1$ojaAuqtpNZXLTJQVRP8teg$52egAc/OkuGZUe+ByQP/IxYP4pL6RNdbCi6tx97q308

盐是随机的,所以每次得到的字符串都不同;每一个都能通过验证。

何时使用 密码哈希工具

适用于创建测试夹具、初始化管理员账号、查看哈希格式的样子,或在调试时用哈希验证密码。在生产环境中,请在服务器上使用受维护的库对密码进行哈希;绝不要在客户端哈希来代替服务器端哈希。

密码哈希工具 的工作原理

Argon2id(m=19 MiB,t=2,p=1)、bcrypt(cost 12)和 scrypt(N=2^17,r=8,p=1)由 hash-wasm(WebAssembly)计算;迭代 600,000 次的 PBKDF2-HMAC-SHA-256 使用浏览器的 Web Crypto API。每次运行都会用 crypto.getRandomValues 生成新的 16 字节盐。输出格式:bcrypt $2b$、Argon2 PHC 字符串 $argon2id$v=19$m=…,t=…,p=…$salt$hash、$scrypt$ln=…,r=…,p=…$salt$hash 以及 passlib 的 $pbkdf2-sha256$iterations$salt$hash。验证时会解析字符串,并用存储的参数重新计算哈希(常数时间比较)。

常见用例

  • 为数据库种子数据创建哈希后的管理员密码
  • 验证已存储的 bcrypt 哈希是否与密码匹配
  • 为认证代码生成测试夹具
  • 比较不同算法的哈希格式

安全提示

一切都在你的浏览器中运行。请避免在共用电脑上把生产环境的密码哈希与真实密码一起粘贴。

常见问题

我应该使用哪种算法?

新系统用 Argon2id。如果你的平台没有 Argon2,请使用 scrypt 或 bcrypt;需要符合 FIPS-140 时使用 PBKDF2。

为什么每次的哈希都不同?

每个哈希都会使用新的随机盐。盐存储在编码后的字符串里,所以验证仍然有效。

哈希可以被逆向吗?

不可以。攻击者只能猜测密码并对每次猜测进行哈希,而这些慢速算法使这件事代价高昂。

可以验证哪些哈希格式?

bcrypt($2a$、$2b$、$2y$)、Argon2 PHC 字符串、$scrypt$ 字符串、passlib 的 $pbkdf2-sha1/sha256/sha512$ 以及 Django 的 pbkdf2_sha256$ 哈希。

探索更多分类