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