让我们与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){
{算法} = >
Int(1)
{algoname} = >
字符串(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