我知道PHP 5.5还处于alpha版本,但我正在提前创建这个类,以利用它的哈希特性,方法是使用function_exists()。
我查看了password_hash
文档。第三个参数$options目前支持两个选项,'salt'和'cost'。
文档中如下所述:
cost表示应该使用的算法成本。可以在crypt()页面上找到这些值的示例。
当我进入crypt()页面时,它给出的文档是:
Blowfish哈希,其盐如下:"$2a$"、"$2x$"或"$2y$",一个两位数的成本参数"$"和来自字母表"./0-9A-Za-z"的22位数字。在盐之外使用这个范围的字符将导致crypt()返回一个零长度字符串。两位数的成本参数是基于基于Blowfish的哈希算法器的迭代次数的以2为底的对数,并且必须在04-31范围内,超出此范围的值将导致crypt()失败。PHP 5.3.7之前的版本仅支持"$2a$"作为盐前缀: PHP 5.3.7引入了新的前缀来修复Blowfish实现中的安全漏洞。请参阅»此文件以获取有关安全修复的完整详细信息,但是总结一下,仅针对PHP 5.3.7及更高版本的开发人员应首选"$2y$"。
我似乎无法理解这个。它说PHP 5.3.7及更高版本应该使用$2y$,但我要使用哪个cost值来得到它,而且它是最好的选择吗?他们提供的示例使用了一个7的值,但根据上述内容,它可以达到31,使用4和31有什么区别呢?