首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用password_hash时生成的哈希的最大长度?

使用password_hash时生成的哈希的最大长度?
EN

Stack Overflow用户
提问于 2014-01-31 20:03:25
回答 2查看 16.8K关注 0票数 13

我正在使用

代码语言:javascript
复制
password_hash($password, PASSWORD_BCRYPT);

对密码进行加密以存储在数据库中。据我所知,生成的散列没有长度限制,但我需要知道最大长度,这样我才能在数据库中定义适合所有密码散列的字段(在最坏的情况下)。

如果我将明文密码限制为20个字符,那么password_hash()结果将有多长?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-01-31 20:06:05

password_hash documentation

目前支持以下算法:PASSWORD_DEFAULT -使用bcrypt算法(默认为PHP5.5.0)。请注意,此常量旨在随着PHP中添加新的更强大的算法而随着时间的推移而变化。因此,使用此标识符得到的结果的长度可以随时间变化。因此,建议将结果存储在数据库列中,该列可以扩展到超过60个字符(255个字符将是一个不错的选择)。

PASSWORD_BCRYPT -使用CRYPT_BLOWFISH算法创建哈希。这将产生一个使用"$2y$“标识符的标准crypt()兼容散列。如果失败,则结果始终为60个字符的字符串,否则为FALSE。

因此,使用PASSWORD_BCRYPTpassword_hash的结果将是一个60个字符的字符串。

票数 22
EN

Stack Overflow用户

发布于 2014-01-31 22:09:59

BCrypt的结果始终是一个60个字符的字符串。Limitless只是函数的输入,这意味着您不(也不应该)对输入的密码设置限制。

实际上,BCrypt在内部仅使用大约72个字符,但它可以接受任何长度的密码。

如果你想像这样使用函数的未来证明形式(注意PASSWORD_DEFAULT)...

代码语言:javascript
复制
password_hash($password, PASSWORD_DEFAULT);

...then你应该让你的数据库字段更大。较新的PHP版本可能会用另一个默认散列算法替换BCrypt,这可能会生成更长的散列。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21479655

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档