问题描述
我发现 Symfony 4.4 使用 Libsodium (sodium) 作为密码的编码方法,并在未安装钠时使用 Bcrypt。
sodium 是否比 Bcrypt 更好?
如果是这样,为什么更好?有什么区别?
解决方法
我对密码哈希也很陌生,我自己也想知道类似的东西,所以这是我发现的。
documentation 声明如下:
Argon2i 支持是通过 libsodium 库提供的,它 选择 Argon2 变体(argon2d、argon2i 或 argon2id) 自动基于主机系统。
那么它实际上归结为Argon2 vs Bcrypt。
好吧,an explanation (2018) 介绍了您应该使用 Argon2 的原因。
话虽如此,从 Symfony 5.3 开始,the "auto" password hasher is Bcrypt。
所以你可能会想,他们为什么选择 Bcrypt?好吧,如果您查看此 PR,它会链接到 this tweet (2019),说明以下有关 Argon2 的内容:
在运行时间
我假设他们(审查公关和索赔的人)认为此声明/人是可信的,但对于该声明是否确实正确以及是否有任何证据支持此声明存在争议。因此,有关详细信息,您可以查看 this thread (2021)。
阅读以上所有内容后,我现在会坚持使用 Bcrypt。