密码哈希工具
用 OWASP 推荐的参数和随机盐,通过 Argon2id、bcrypt、scrypt 或 PBKDF2 对密码进行哈希,并用已存储的哈希验证密码。
每次点击都会生成新的 16 字节随机盐值,因此哈希每次都不同,但都能通过验证。参数遵循 OWASP 密码存储备忘单。请保存完整的编码字符串:其中包含算法、参数、盐值和哈希。
用哈希验证密码
完全在浏览器中运行,您的数据不会被上传。
什么是 密码哈希工具?
此工具使用 OWASP 密码存储备忘单中的最低参数和全新的随机盐,一键生成可直接存储的密码哈希。内置的验证器可对照任何 bcrypt、Argon2、scrypt 或 PBKDF2 哈希字符串检查密码。
如何使用 密码哈希工具
- 在密码栏中输入密码。
- 选择算法;推荐 Argon2id。
- 点击计算哈希并复制编码后的哈希。
- 要检查密码,请把哈希粘贴到用哈希验证密码中,输入密码并点击验证。
示例
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$ 哈希。