在 PHP 5.5 中生成密码哈希并设置成本选项
我知道PHP 5.5处于alpha阶段,但是我正在制作的这个类只是提前制作的,以通过使用function_exists()来利用它的哈希功能。
我查看了password_hash
文档。第三个参数是针对$options目前支持两个选项,“盐”和“成本”。
它声明如下:
cost,表示应使用的算法成本。这些值的示例可以在 crypt() 页面上找到。
当我进入crypt()页面时,它给出的文档是:
河豚用盐散列如下:“$2a$”,“$2x$”或“$2y$”,两位数的成本参数“$”和字母表中的22位数字“./0-9A-Za-z”。在 salt 中使用此范围之外的字符将导致 crypt() 返回长度为零的字符串。两位数成本参数是基于 Blowfish 的底层哈希算法生成器的迭代计数的 base-2 对数,并且必须在 04-31 范围内,超出此范围的值将导致 crypt() 失败。5.3.7 之前的 PHP 版本仅支持“$2a$”作为 salt 前缀:PHP 5.3.7 引入了新的前缀来修复 Blowfish 实现中的安全漏洞。有关安全修复的完整详细信息,请参阅»本文档,但总而言之,仅针对PHP 5.3.7及更高版本的开发人员应使用“$2y$”而不是“$2a$”。
我似乎无法将我的头缠绕在这件事上。它说PHP 5.3.7及更高版本应该使用$ 2y $,但是我用什么成本值来获得那个,它是选择的最佳价值吗?他们提供的示例使用值7,但根据上面的值,它可以上升到31,使用说4而不是说31有什么区别?