Bcrypt 如何使解密变慢?
How Bcrypt makes decryption slow?
bcrypt
的算法内部发生了什么,人们说它比有或没有盐的md5、sha1和sha256慢?
SHA 系列算法旨在高效地为大量输入创建哈希。另一方面,bcrypt
旨在对小输入执行计算量大的操作(仅使用输入的前 72 个字节,尽管这对于大多数密码来说应该足够了)。
更具体地说,bcrypt
使用输入盐和消息为 Blowfish 块密码版本执行密钥设置,该版本已被修改以使密钥设置更昂贵。然后该算法使用该密码来加密已知明文 (OrpheanBeholderScryDoubt
)。这就是输入熵有 72 字节限制的原因 - Blowfish 算法需要初始化的子密钥数量有限。
BCrypt 有一个成本因素,它控制完成多少次哈希迭代。将来可以增加此成本因素以适应更快的硬件。
cost factor会被提高到2的次方,也就是说cost factor每增加1,计算时间就会翻倍。目前推荐值约为 10-12,具体取决于您的服务器。
bcrypt
的算法内部发生了什么,人们说它比有或没有盐的md5、sha1和sha256慢?
SHA 系列算法旨在高效地为大量输入创建哈希。另一方面,bcrypt
旨在对小输入执行计算量大的操作(仅使用输入的前 72 个字节,尽管这对于大多数密码来说应该足够了)。
更具体地说,bcrypt
使用输入盐和消息为 Blowfish 块密码版本执行密钥设置,该版本已被修改以使密钥设置更昂贵。然后该算法使用该密码来加密已知明文 (OrpheanBeholderScryDoubt
)。这就是输入熵有 72 字节限制的原因 - Blowfish 算法需要初始化的子密钥数量有限。
BCrypt 有一个成本因素,它控制完成多少次哈希迭代。将来可以增加此成本因素以适应更快的硬件。
cost factor会被提高到2的次方,也就是说cost factor每增加1,计算时间就会翻倍。目前推荐值约为 10-12,具体取决于您的服务器。