一、前言
php5.5提供了许多新的功能和API函数,其中一个是密码哈希API(创建和检查哈希密码)。
它包含4个功能:password_get_info(),password_hash(),(),()password_verify password_needs_rehash。
php5.5加密密码之前,我们可能更加密的MD5或SHA1。(没有人以同样的方式作为CSDN等。):
回声MD5(123456); / /输出:e10adc3949ba59abbe56e057f20f883e
但是简单的MD5加密很容易通过字典破解,而一个MD5解密的网址就能得到原始密码。
二、密码散列API
密码散列php5.5提供的API可以很好的解决这些问题。
让我们在password_hash看()函数的第一:
复制代码如下:password_hash字符串(字符串的密码算法,整数美元{,}数组的选项)
它有三个参数:密码、散列算法和选项。前两个项目是必需的。
让我们用password_hash()简单地创建一个哈希密码:
复制代码如下:$ pwd =123456;
美元($ pwd,hash = password_hash password_default);
回波哈希;
这类似的输出:2y美元10美元4kau4fnguolmrmsshgkeme3dbg5pm3diikfkiaknh.sf1tpbb4uo2
然后刷新页面,哈希值也会改变。
后的哈希值被创建,我们可以用password_verify()检查是否密码哈希值匹配。
复制代码如下:布尔password_verify(字符串的密码字符串的哈希)

它接收2个参数:密码和散列值,并返回布尔值。检查前生成的哈希值是否与密码匹配:
复制代码代码如下:如果(password_verify($ pwd,2y美元10美元4kau4fnguolmrmsshgkeme3dbg5pm3diikfkiaknh。sf1tpbb4uo2 ')){

返回正确的密码;
{人}
密码错误;
}

基本上使用这2个函数,哈希密码可以安全地创建和检查,并且还有2个其他API函数:
复制代码如下:(password_get_info) / /查看哈希值信息
(password_needs_rehash) / /检查哈希值是使用特定的算法和选项创建
三。回顾
虽然通过password_hash哈希代码()更安全,减少了互操作性。
当我们使用MD5加密,我们在PHP与标准的MD5,便于检查在其他语言中,如Node.js:
复制代码如下:var hash = crypto.createhash('md5)。更新(123456)消化('hex);
如果(hash = =e10adc3949ba59abbe56e057f20f883e )console.log('password);
使用password_hash加密哈希值()基本上是由PHP的password_verify检查。
这2种方法有好有坏,使用MD5(或SHA1)+盐(干扰字符串)或password_hash使用()人选择根据具体情况。