PHP 5.5 创建和验证哈希最简单的方法详解
近期,PHP 5.5.0版本发布了,带来了全新的特性与函数列表,其中包括一项重要的全新API——Password Hashing API。这个API包含了四个非常有用的函数:password_get_info()、password_hash()、password_needs_rehash()和password_verify(),每个函数都有其独特的功能和应用场景。让我们分步了解这些函数的特性和用途。
我们首先关注的是password_hash()函数。这个函数用于创建一个新的密码哈希值,它接受三个参数:密码、哈希算法和选项。其中,密码和哈希算法是必需的。使用这个函数,你可以轻松地为密码生成安全的哈希值。举个例子,假设你有一个名为“foo”的密码,你可以使用以下代码生成一个基于bcrypt算法的哈希值:
```php
$password = 'foo';
$hash = password_hash($password, PASSWORD_BCRYPT);
echo $hash; // 输出类似:$2y$10$uOegXJ09qznQsKvPfxr61uWjpJBxVDH2KGJQVnodzjnglhs2WTwHu
```
关于选项参数,目前可用的选项主要是cost和salt。如果你想使用自定义的cost和salt选项,可以创建一个关联数组并将其作为第三个参数传递给password_hash()函数。例如:
```php
$options = [
'cost' => 10,
'salt' => mcrypt_create_iv(22, MCRYPT_DEV_URANDOM)
];
$hash = password_hash($password, PASSWORD_BCRYPT, $options);
echo $hash; // 输出类似:$2y$10$JDJ5JDEwJDhsTHV6SGVIQuprRHZnGQsUEtlk8Iem0okH6HPyCoo22
```
接下来,我们可以通过password_get_info()函数查看新创建的哈希值的相关信息。这个函数接受一个哈希值作为参数,并返回一个包含算法信息、算法名称和选项的关联数组。例如:
```php
var_dump(password_get_info($hash));
```
输出可能类似于:
```php
array(3) {
["algo"]=> int(1)
["algoName"]=> string(6) "bcrypt"
["options"]=> array(1) {
["cost"]=> int(10)
}
}
```
除了上述函数,Password Hashing API还提供了password_needs_rehash()函数。这个函数用于检查一个哈希值是否使用了特定的算法和选项创建。当你的数据库需要调整哈希时,这个函数非常有用。通过检查每个哈希值,你可以确定哪些值需要使用新的参数重新哈希。为了验证纯文本密码与其哈希值是否匹配,我们可以使用password_verify()函数。这个函数接受密码和哈希值作为参数,并返回TRUE或FALSE来表示验证结果。例如:
```php
$authenticate = password_verify('foo', '$2y$10$JDJ5JDEwJDhsTHV6SGVIQuprRHZnGQsUEtlk8Iem0okH6HPyCoo22'); // TRUE
$authenticate = password_verify('bar', '$2y$10$JDJ5JDEwJDhsTHV6SGVIQuprRHZnGQsUEtlk8Iem0okH6HPyCoo22'); // FALSE
```
这就是PHP 5.5.0中Password Hashing API的四个函数的介绍和使用方法。它们为我们提供了强大的密码哈希管理功能,帮助我们更安全地存储和处理密码。
编程语言
- PHP 5.5 创建和验证哈希最简单的方法详解
- php多文件上传下载示例分享
- vue内置组件transition简单原理图文详解(小结)
- php倒计时出现-0情况的解决方法
- php inc文件使用的风险和注意事项
- Joomla调用系统自带编辑器的实现方法
- vue移动端html5页面根据屏幕适配的四种解决方法
- .NET 4.5 异步IO 相关实例
- PPJOKE 0.1 (网页嵌入聊天)提供下载
- PHP基本语法实例总结
- 深入理解Node module模块
- 浅谈php命令行用法
- asp添加数据实现代码
- ajax智能提示+textbox动态生成下拉框示例代码
- js代码验证手机号码和电话号码是否合法
- 使用ThinkPHP生成缩略图及显示