首页 > 解决方案 > Symfony 5.3 密码哈希从“$argon2id”改回“$2y$13”

问题描述

我正在将 Symfony 应用程序从 5.2 更新到 5.3

我看到登录后,数据库中的密码从更改$argon2id$v=19$m=65536,t=4,p=...$2y$13$f...

在 4.4 中,我已经按照此处所述实现了迁移,现在我重命名password_hashers此处所述(但同样的事情发生在encoders)。

我不明白这种变化是否有意。我知道过去使用过这个算法$2y$13(我不知道它的名字,抱歉我不是加密专家),我有自 2020 年以来未登录的用户,他们的密码哈希仍然以$2$13y

他们是否将默认算法恢复为该算法?我没有找到任何相关信息,还是我做错了什么?在security.yaml我有:

password_hashers:
    App\Entity\User:
        algorithm: auto

标签: phpsymfonysymfony5symfony-security

解决方案


这也让我感到惊讶。还没有看到它记录在changelog上。

它在文档中被提及,但以一种非常微妙的方式(作为配置示例之一的注释,here)。

在 5.2 和 5.3 之间,选择auto作为选项时的默认算法从 Sodium 更改为 Bcrypt。实际更改是在此提交上执行的。

要点是:如果您想使用 Sodium,则必须在配置中显式启用它(使用 sodium而不是 auto)。

无论如何,您使用不同算法散列的密码都将被识别,并且由于您已经实现了PasswordUpgraderInterface,因此散列将被迁移回 Sodium。


推荐阅读