PHP 5.5.0带来一个完整的新特性和
功能列表。一个新的API
密码哈希API,其中包含4个功能:password_get_info(),(),password_hash password_needs_rehash(),()和password_verify。让我们一步一步地
学习每一个
函数。
让我们与password_hash开始()函数,这将作为
创建新密码的哈希值,它包含三个
参数:密码、Hash算法,和
选项。第一个项目是必要的。你可以用下面的例子来使用这个功能:
密码= 'foo美元;
美元($ = password_hash哈希密码,password_bcrypt);
/ / 2y美元10美元uoegxj09qznqskvpfxr61uwjpjbxvdh2kgjqvnodzjnglhs2wtwhu
你会注意到,我们没有给Hashiga任何选项。选项现在只限于两:成本和盐。恶魔添加选项,你需要创建一个
关联数组。
美元= {成本选项= > 10,
盐= mcrypt_create_iv(22,mcrypt_dev_urandom)};
添加选项后的password_hash()函数,我们的哈希值发生了变化,这是更安全。
美元($ = password_hash哈希密码,password_bcrypt,$选项);
/ / 2y美元10美元jdj5jdewjdhsthv6sgviquprrhzngqsuetlk8iem0okh6hpycoo22
现在,Hashi已经完成,我们可以看到新的哈希与password_get_info()。(password_get_info)需要一个参数,并返回一个哈希值,包括算法(用整数表示的哈希算法),算法名称(使用可读的哈希算法名称)和选项(我们用来创建一个哈希选项关联数组)。
var_dump(password_get_info($哈希));
*
数组(3){
{al}
Int(1)
{alname} = >
字符串(6)BCrypt的
{ 选项>
数组(1){
{成本}
int(10)
}
}
* /
第一个是添加到密码哈希API(password_needs_rehash),它接受三个参数,哈希,哈希算法和选项,第一个是required.password_needs_rehash()是用来
检查是否一个散列值是使用特定的算法和选项创建的。这是非常有用的当你的数据库已
损坏,需要被
调整到哈希。利用password_needs_rehash()来检查每个哈希值,我们可以看到,无论是现有的哈希值匹配新的参数,它不仅
影响了老参数创造的价值。
最后,我们创造了我们的哈希值,看它是如何产生的,看是否需要重新散列,现在我们需要核实。核实纯
文本的哈希值,必须使用password_verify(),它需要两个参数,密码的哈希值,并将返回TRUE或FALSE。让我们检查散列我们要看它是否
正确。
为验证= password_verify('foo ',' 2y美元10美元jdj5jdewjdhsthv6sgviquprrhzngqsuetlk8iem0okh6hpycoo22);
/真
为验证= password_verify('bar ',' 2y美元10美元jdj5jdewjdhsthv6sgviquprrhzngqsuetlk8iem0okh6hpycoo22);
/ false
有了以上的知识,你可以创建一个哈希密码快速、安全地在新版本的PHP 5.5.0。