PHP的password_hash()使用实例
PHP的password_hash()函数:一种安全密码存储方式的实例
一、前言
PHP 5.5版本带来了许多新特性和API函数,其中就包括Password Hashing API。这个API为我们提供了创建和验证哈希密码的功能。它包括四个函数:password_get_info()、password_hash()、password_needs_rehash()和password_verify()。在对密码进行存储和验证时,采用旧式的加密方式如md5或sha1等已经显得不够安全。PHP的Password Hashing API为我们提供了一个更加安全的解决方案。
二、Password Hashing API详解
我们来看一下password_hash()函数。这个函数用于创建密码的哈希值,其语法为:string password_hash ( string $password , integer $algo [, array $options ])。它有三个参数:密码、哈希算法和选项。其中,密码和哈希算法是必需的。
使用password_hash()函数创建一个哈希密码的示例代码如下:
```php
$pwd = "123456";
$hash = password_hash($pwd, PASSWORD_DEFAULT);
echo $hash;
```
上述代码会输出一个类似"$2y$10$4kAu4FNGuolmRmSSHgKEMe3DbG5pm3diikFkiAKNh.Sf1tPbB4uo2"的哈希值。值得注意的是,每次刷新页面,这个哈希值都会发生变化。
接下来,我们可以使用password_verify()函数来验证密码和哈希值是否匹配。这个函数接收两个参数:密码和哈希值,并返回一个布尔值。示例代码如下:
```php
if (password_verify($pwd,'$2y$10$4kAu4FNGuolmRmSSHgKEMe3DbG5pm3diikFkiAKNh.Sf1tPbB4uo2')) {
echo "密码正确";
} else {
echo "密码错误";
}
```
使用以上两个函数,我们就可以安全地创建和验证哈希密码了。除此之外,还有另外两个API函数:password_get_info()(查看哈希值的相关信息)和password_needs_rehash()(检查一个哈希值是否使用了特定的算法和选项创建)。
三、点评与取舍
虽然使用password_hash()创建的哈希密码更加安全,但它降低了互操作性。传统的加密方式如md5,在PHP中使用标准的MD5加密后,可以通过其他语言(如Node.js)进行校验。使用password_hash()加密的哈希值基本上只能通过PHP的password_verify进行校验。每种方法都有其优缺点,具体选择哪种方式要根据实际情况来决定。
在选择加密方式时,我们需要权衡安全性和互操作性之间的取舍。无论是使用md5(或sha1等)加上salt(干扰字符串)的方式,还是使用PHP的Password Hashing API,我们都需要根据具体的需求和场景来做出决策。无论如何,确保密码安全始终是我们需要关注的重要问题。
编程语言
- PHP的password_hash()使用实例
- .net搜索查询并实现分页实例
- ASP.NET笔记之Calender的使用说明
- php 数组处理函数extract详解及实例代码
- jQuery的Ajax接收java返回数据方法
- 在asp.net(c#)下实现调用cmd的方法
- php精度计算的问题解析
- ASP.NET中URL Routing和IIS上URL Rewriting的区别
- vue登录注册及token验证实现代码
- 检查表单元素的值是否为空的实例代码
- jquery及js实现动态加载js文件的方法
- node.js多个异步过程中判断执行是否完成的解决方
- AngularJS模仿Form表单提交的实现代码
- CodeIgniter基本配置详细介绍
- js对象数组和对象的使用实例详解
- PHP钩子实现方法解析