您当前的位置: 首页 > 网站编程 > PHP教程 > PHP的password_hash()使用实例

PHP的password_hash()使用实例

作者:不详 来源:网络 发布时间: 2014-08-07 18:09 点击:
这篇文章主要介绍了PHP的password_hash()使用实例,需要的朋友可以参考下 一、前言 PHP5.5提供了许多新特性及Api函数,其中之一就是Password Hashing API(创建和校验哈希密码)。 它包含4个函数:password_get_info()、password_hash()、password_needs_rehash()、passwo

PHP的password_hash()使用实例

  这篇文章主要介绍了PHP的password_hash()使用实例,需要的朋友可以参考下

  一、前言

  PHP5.5提供了许多新特性及Api函数,其中之一就是Password Hashing API(创建和校验哈希密码)。

  它包含4个函数:password_get_info()、password_hash()、password_needs_rehash()、password_verify()。

  在PHP5.5之前,我们对于密码的加密可能更多的是采用md5或sha1之类的加密方式(没人像CSDN那样存明文吧。。),如:

  echo md5("123456"); //输出: e10adc3949ba59abbe56e057f20f883e

  但是简单的md5加密很容易通过字典的方式进行破解,随便找个md5解密的网站就能获取原始密码。

  二、Password Hashing API

  php5.5提供的Password Hashing API就能很好的解决这些问题。

  我们先来看password_hash()函数:

  代码如下:string password_hash ( string $password , integer $algo [, array $options ])

  它有三个参数:密码、哈希算法、选项。前两项为必须的。

  让我们使用password_hash()简单的创建一个哈希密码:

  复制代码 代码如下:$pwd = "123456";

  $hash = password_hash($pwd, PASSWORD_DEFAULT);

  echo $hash;

  上例输出结果类似:$2y$10$4kAu4FNGuolmRmSSHgKEMe3DbG5pm3diikFkiAKNh.Sf1tPbB4uo2

  并且刷新页面该哈希值也会不断的变化。

  哈希值创建完毕,我们可以用password_verify()来校验密码是否和哈希值匹配:

  复制代码 代码如下:boolean password_verify ( string $password , string $hash )

  它接收2个参数:密码和哈希值,并返回布尔值。检查之前生成的哈希值是否和密码匹配:

  代码如下:if (password_verify($pwd,'$2y$10$4kAu4FNGuolmRmSSHgKEMe3DbG5pm3diikFkiAKNh.Sf1tPbB4uo2')) {

  echo "密码正确";

  } else {

  echo "密码错误";

  }

  基本上使用以上这2个函数就能安全的创建和校验hash密码了,还有另外2个API函数:

  代码如下:password_get_info() //查看哈希值的相关信息

  password_needs_rehash() //检查一个hash值是否是使用特定算法及选项创建的

  三、点评

  虽然通过password_hash()创建的哈希密码更加安全,但是却降低了互操作性。

  如我们使用md5方式,在php中用标准的MD5加密,很容易通过其他语言来校验,如node.js:

  复制代码 代码如下:var hash = crypto.createHash('md5').update("123456").digest('hex');

  if(hash == "e10adc3949ba59abbe56e057f20f883e") console.log('密码正确');

  而使用password_hash()加密的哈希值基本只能通过PHP的password_verify来校验。

  这2种方法各有优劣,是使用md5(或sha1等)+salt(干扰字符串)的方式还是使用password_hash()大家根据具体情况取舍把。
分享到:
本文"PHP的password_hash()使用实例"由远航站长收集整理而来,仅供大家学习与参考使用。更多网站制作教程尽在远航站长站。
顶一下
(0)
0%
踩一下
(0)
0%
[点击 次] [返回上一页] [打印]
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码:
关于本站 - 联系我们 - 网站声明 - 友情连接- 网站地图 - 站点地图 - 返回顶部
Copyright © 2007-2013 www.yhzhan.com(远航站长). All Rights Reserved .
远航站长:为中小站长提供最佳的学习与交流平台,提供网页制作与网站编程等各类网站制作教程.
官方QQ:445490277 网站群:26680406 网站备案号:豫ICP备07500620号-4