Contributed by
Zan Baldwin
in #21604.

Symfony 推荐使用 Bcrypt password hasher 来为你的程序密码加密。Bcrypt 专门设计成存储长文密码并被 PHP 原生支持。

但是,security 是一个快速发展的领域,新版最佳实践以及推荐用法持续出现。最近几个月 Argon2 加密算法受到爆发欢迎,尤其是在赢得了 2015 年的 Password Hashing 密码加密大赛中胜出之后。实际上,PHP 7.2 (2017年末推出) 包括了 对 Argon2 的内建支持

这也是为何我们决定 在 Symfony 3.4 中 Argon2i password hasher。首先,如果你不使用 PHP 7.2,添加对 Argon2 的支持要在你的服务器上安装 Libsodium PHP extension 或者在你的项目中添加 libsodium-php library。然后,使用 argon2i 作为 password hasher:

1
2
3
4
5
6
7
# app/config/security.yml
security:
    # ...

    encoders:
        Symfony\Component\Security\Core\User\User:
            algorithm: 'argon2i'

在现有程序中以合理的加密高代价来使用 Bcrypt,也就没有再使用 Argon2i 来对密码重新加密的迫切需求。但是,如果你正创建一个全新项目,不妨考虑这个新的密码加密算法。