Contributed by
Dominik Müller
in #26175.

在 Symfony 3.4 中我们引入了 Argon2i password hasher,把它作为 Bcrypt hasher 的终结者。如果你使用了 Bcrypt,你可以配置 cost 性能,它定义了加密密码时所需的CPU线程数量。

Argon2i 比 Bcrypt 拥有更多的配置项,这就是为何 Symfony 4.1 引入了若干配置信息选项给 Argon2i hasher:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# config/packages/security.yaml
security:
    # ...
    encoders:
        App\Entity\User:
            algorithm: 'argon2i'
            # maximum memory (in KiB) that may be used to compute the Argon2 hash
            # 
            memory_cost: 1024
            #  number of times the Argon2 hash algorithm will be run
            # 
            time_cost: 2
            # number of threads to use for computing the Argon2 hash
            # 
            threads: 2

密码加密是一个快速演进的领域因此需要持续更新。实际上,有个官方 RFC 说的是在下一PHP版本中 替换掉目前的 Argon2i 算法,引入更新的 Argon2id 变体。多亏了有 Symfony,你可以无视这些争论,而确保自己的程序安全,享受最新的 security 实践。