加密与哈希

BCrypt 哈希计算

在浏览器中计算输入字符串的 BCrypt 哈希值,输入内容不会发送到服务器。


文本
轮次

※哈希值在您的浏览器中计算,输入内容和哈希值均不会发送至服务器。

Tips

  • BCrypt 会自动添加盐值,因此即使相同的字符串,每次哈希结果也会各不相同
  • 增加轮次(成本因子)会提高计算开销,从而增强对暴力破解攻击的抵抗力。通常推荐值为 10~12。
  • 在 PHP 中使用 password_hash($password, PASSWORD_BCRYPT),在 Ruby 中使用 bcrypt-ruby gem,可生成等效的哈希值。
  • 哈希值开头的 $2y$ 是算法标识符,其后的数字表示轮次。
  • 也可考虑更新的 Argon2(PHP 7.2 起支持)作为另一种适合密码存储的算法。

闲话 ― 密码与哈希的攻防:为何选择 BCrypt

2012 年领英(LinkedIn)数据泄露事件中,约 650 万条密码仅以未加盐的 SHA-1 存储,通过彩虹表攻击,大部分在数天内被破解。这一事件为密码存储设计敲响了警钟。

现代高性能 GPU(如 NVIDIA RTX 4090)每秒可计算约 680 亿次 MD5。BCrypt 有意将计算开销设计得很高——在轮次为 12 的配置下,每秒仅能计算数千次——因此对暴力破解的抵抗力大幅提升。同等算力下,MD5 每秒可尝试 680 亿次,而 BCrypt 仅能尝试数千次,这一差距至关重要。

BCrypt 最初于 1999 年为 OpenBSD 设计。二十多年后的今天,它仍在广泛使用,与更新的 Argon2(PHP 7.2 起支持)并列为密码存储的标准选择。