“算法:自动”的用户密码字段的最大长度?

the*_*uts 5 symfony symfony-4.3

Symfony 4.3 弃用了 bcrypt 算法,请参阅UPGRADE-4.3.md

使用 argon2i 或 bcrypt 配置编码器,因为算法已被弃用,请改用 auto。

所以我将 security.yaml 更改为:

encoders:
    App\Entity\User:
        algorithm: auto
Run Code Online (Sandbox Code Playgroud)

问题是,改成auto后,哈希后的字符串变长了:

'插入用户(...,密码,...)值(...)',参数为 [..., "$argon2id$v=19$m=65536,t=6,p=1$d2RhZjVuaWJsSnE0TW5haA $ycOn7EHjPOoBTSa6SHDOBWL2AvwfPNjAstlSTEMmPpU", ...]:

SQLSTATE[22001]:字符串数据,右截断:1406 对于第 1 行的列“密码”来说数据太长

该字符串的长度为 97 个字符,而我的密码列为 64。我没有找到任何有关“auto”属性的最大可能长度的文档,是 97 吗?或者还可以更多吗?

cha*_*asr 5

正如 @Cerad 在评论中所说,该auto模式可能总是会生成内置 PHP 函数支持的密码password_hash()(取决于平台)。因此,您可以安全地依赖password_hash()文档
给出的提示:

PASSWORD_DEFAULT - [...] 请注意,随着 PHP 中添加新的和更强大的算法,该常量会随着时间的推移而变化。因此,使用此标识符的结果长度可能会随着时间而变化。因此,建议将结果存储在可以扩展到超过 60 个字符的数据库列中(255 个字符将是一个不错的选择)。