在PHP 5.5中生成密码哈希并设置成本选项。

8 浏览
0 Comments

在PHP 5.5中生成密码哈希并设置成本选项。

我知道PHP 5.5还处于alpha阶段,但我正在提前制作这个类以利用它的哈希功能,使用function_exists()函数。

我查看了password_hash文档。第三个参数$options目前支持两个选项,'salt'和'cost'。

文档中说明如下:

cost,表示应该使用的算法成本。这些值的示例可以在crypt()页面上找到。

当我进入crypt()页面时,文档给出的说明是:

使用以下形式的salt进行Blowfish哈希:"$2a$", "$2x$"或"$2y$",一个两位数的成本参数,"$",以及来自字母"./0-9A-Za-z"的22个数字。在salt中使用这个范围之外的字符将导致crypt()返回一个长度为零的字符串。两位数的成本参数是基于2的对数的迭代次数,用于基于Blowfish的底层哈希算法,必须在04-31范围内,超出此范围的值将导致crypt()失败。PHP 5.3.7之前的版本只支持"$2a$"作为salt前缀:PHP 5.3.7引入了新的前缀来修复Blowfish实现中的安全弱点。请参阅»此文档以获取有关安全修复的完整详细信息,但总结起来,只针对PHP 5.3.7及更高版本的开发人员应优先使用"$2y$"而不是"$2a$"。

我似乎无法理解这个。它说PHP 5.3.7及更高版本应该使用$2y$,但我应该使用什么成本值来得到这个值,而且它是最好的选择吗?他们提供的示例使用了一个值为7,但根据上述说明,它可以高达31,使用4和31之间的值有什么不同呢?

0