Bcrypt哈希生成器 - 生成和验证Bcrypt哈希 在线工具
使用可配置的成本因子生成bcrypt密码哈希,并验证明文与现有bcrypt哈希的匹配性。100%客户端处理,您的密码永远不会离开浏览器。
推荐用于生产环境
常见问题
什么是bcrypt,为什么用它来哈希密码?
Bcrypt是一种密码哈希函数,由Niels Provos和David Mazieres于1999年基于Blowfish密码设计。与SHA-256等通用哈希函数不同,bcrypt专门为密码存储而设计。它包含内置盐值以防止彩虹表攻击,以及可调节的成本因子,可以随时间增加以跟上不断增长的计算能力。
如何使用这个bcrypt哈希生成器?
1. 切换到生成标签。2. 在输入框中输入您的密码或文本。3. 调整成本因子(轮数)滑块 — 默认值为10,生产环境建议12+。4. 点击生成哈希按钮并等待计算完成。5. 使用复制按钮复制生成的60字符bcrypt哈希。6. 要验证密码,请切换到验证标签,粘贴bcrypt哈希并输入要测试的明文。
我的密码安全吗?会被发送到服务器吗?
您的密码100%安全,永远不会离开您的浏览器。此工具使用bcryptjs JavaScript库完全在您的设备上执行所有bcrypt操作。没有任何密码数据、明文或生成的哈希会被传输到任何服务器、存储在任何数据库中或记录在任何地方。
应该使用什么成本因子(轮数)?
成本因子决定bcrypt执行多少次迭代(2^轮数)。更高的值更安全但更慢。建议:4-7仅用于测试和开发。10是默认值。12是生产使用的推荐最小值。14+适用于高安全性应用。
为什么相同的密码每次产生不同的bcrypt哈希?
Bcrypt为每次哈希操作自动生成唯一的128位随机盐值。此盐值被合并到哈希中,并作为输出字符串的一部分存储。当您两次哈希相同的密码时,会使用不同的盐值,产生不同的哈希输出。这是设计使然 — 它防止彩虹表攻击。
密码哈希中bcrypt和SHA-256有什么区别?
SHA-256是一种设计为快速的通用加密哈希函数,而bcrypt专门为密码哈希设计,故意缓慢。SHA-256在现代GPU上每秒可以计算数十亿个哈希,使暴力攻击变得可行。Bcrypt的可调成本因子将攻击者限制在每秒几千个哈希。
我可以将此工具用于生产密码哈希吗?
此工具专为测试、学习和开发目的而设计。生产密码哈希应在应用程序代码中服务器端执行。永远不要在生产中在客户端哈希密码。
代码示例
const bcrypt = require('bcryptjs');
// Generate a bcrypt hash
async function hashPassword(password, rounds = 12) {
const salt = await bcrypt.genSalt(rounds);
const hash = await bcrypt.hash(password, salt);
return hash;
}
// Verify a password against a hash
async function verifyPassword(password, hash) {
const isMatch = await bcrypt.compare(password, hash);
return isMatch;
}
// Parse bcrypt hash components
function parseBcryptHash(hash) {
const match = hash.match(/^\$(\w+)\$(\d{2})\$(.{22})(.{31})$/);
if (!match) return null;
return {
version: match[1],
rounds: parseInt(match[2], 10),
salt: match[3],
hash: match[4],
};
}
// Example usage
(async () => {
const password = 'MySecurePassword123!';
const hash = await hashPassword(password, 12);
console.log('Hash:', hash);
const isValid = await verifyPassword(password, hash);
console.log('Valid:', isValid); // true
const parsed = parseBcryptHash(hash);
console.log('Parsed:', parsed);
})();