知识大全 PHP 5.5 创建和验证哈希最简单的方法

Posted

篇首语:知识是珍贵宝石的结晶,文化是宝石放出的光泽。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 PHP 5.5 创建和验证哈希最简单的方法相关的知识,希望对你有一定的参考价值。

PHP 5.5 创建和验证哈希最简单的方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

PHP 于昨天发布 并带来了一份完整的全新特性与函数的列表 全新API之一就是Password Hashing API 它包含 个函数 password_get_info() password_hash() password_needs_rehash() 和password_verify() 让我们分步来了解每个函数

 

我们首先讨论password_hash()函数 这将用作创建一个新的密码的哈希值 它包含三个参数 密码 哈希算法 选项 前两项为必须的 你可以根据下面的例子来使用这个函数

 

$password = &# ;foo&# ;;

$hash = password_hash($password PASSWORD_BCRYPT);

//$ y$ $uOegXJ qznQsKvPfxr uWjpJBxVDH KGJQVnodzjnglhs WTwHu  

你将注意到我们并没有给这个哈希加任何选项 现在可用的选项被限定为两个 cost 和salt 妖添加选项你需要创建一个关联数组

 

$options = [ &# ;cost&# ; =>

             &# ;salt&# ; => mcrypt_create_iv( MCRYPT_DEV_URANDOM) ];  

将选项添加到 password_hash() 函数后 我们的哈希值变了 这样更加安全

 

$hash = password_hash($password PASSWORD_BCRYPT $options);

//$ y$ $JDJ JDEwJDhsTHV SGVIQuprRHZnGQsUEtlk Iem okH HPyCoo  

现在哈希创建完毕了 我们可以通过 password_get_info() 查看新建哈希值得相关信息 password_get_info() 需要一个参数——哈希值——并返回一个包含算法(所用哈希算法的整数代表形式) 算法名(所用哈希算法的可读名称)以及选项(我们用于创建哈希值得选项)的关联数组

 

var_dump(password_get_info($hash));

/*

array( )

  ["algo"]=>

  int( )

  ["algoName"]=>

  string( ) "bcrypt"

  ["options"]=>

  array( )

    ["cost"]=>

    int( )

 

*/  

先一个被添加到 Password Hashing API 的是 password_needs_rehash() 它接受三个参数 hash hash 算法以及选项 前两个是必填项 password_needs_rehash()用来检查一个hash值是否是使用特定算法及选项创建的 这在你的数据库受损需要调整hash时非常有用 通过利用 password_needs_rehash() 检查每个hash值 我们可以看到已存的hash 值是否匹配新的参数 仅影响那些使用旧参数创建的值

 

最后 我们已经创建了我们的hash值 查阅了它如何被创建 查阅了它是否需要被重新hash 现在我们需要验证它 要验证纯文本到其hash值 我们必须使用 password_verify() 它需要两个参数 密码及hash值 并将返回 TRUE 或 FALSE 让我们检查一次我们获得的 hashed 看看是否正确

 

$authenticate = password_verify(&# ;foo&# ; &# ;$ y$ $JDJ JDEwJDhsTHV SGVIQuprRHZnGQsUEtlk Iem okH HPyCoo &# ;);

//TRUE

$authenticate = password_verify(&# ;bar&# ; &# ;$ y$ $JDJ JDEwJDhsTHV SGVIQuprRHZnGQsUEtlk Iem okH HPyCoo &# ;);

//FALSE  

cha138/Article/program/PHP/201404/30631

相关参考

知识大全 C#创建简单的验证码

C#创建简单的验证码  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  &nbs

知识大全 用EclipseME0.5.5创建简单的J2ME程序(图)

用EclipseME0.5.5创建简单的J2ME程序(图)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一

知识大全 PHP简单验证码类:字母+数字 字体随机扭曲

PHP简单验证码类:字母+数字字体随机扭曲  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  看了一

知识大全 .Net里的哈希表和串行化的简单介绍

.Net里的哈希表和串行化的简单介绍  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  本文介绍了里

知识大全 创建最简单物化视图

Oracle物化视图:创建最简单物化视图  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  物化视图

知识大全 PHP链接ACCESS数据库最简单的方法

PHP链接ACCESS数据库最简单的方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!<?&

知识大全 php验证用户输入的邮箱有效性和正确性

  functionvalidate_email($email)  $exp="^[az]+([_][az]+)*@([az]+([_][az]+))+$";  if(eregi($exp$email

知识大全 用MySQL和PHP创建XML

用MySQL和PHP创建XML  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  XML是作为数据交

知识大全 基于PHP和AJAX创建RSS聚合器

基于PHP和AJAX创建RSS聚合器  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  想象使用一个

知识大全 苹果6手机创建id成功后如何验证帐号

苹果6手机创建id成功后如何验证帐号到注册时候的邮箱里面去会有一封验证邮箱的点击验证下就可以了。苹果手机ID创建成功为什么下载软件还要输入密码你好。可以设置为不需要密码。进入设置-iTunesstor