哈希算法是一个单向函数。它可以将任何大小的数据转化为定长的“指纹”,并且无法被反向计算

依赖性

crypt() 函数需支持 CRYPT_BLOWFISH

常量

PASSWORD_BCRYPT

PASSWORD_DEFAULT

函数

1、string  password_hash($password, $algo[, $options = array()])

参数:

$password:密码

$algo:哈希算法

$options:选项

功能:将一段密码$password,通过哈希算法,将其转换成一段复杂的哈希值字符串

$pwd = "123456";
$hash = password_hash($pwd, PASSWORD_DEFAULT);
echo $hash;

输出类似:$2y$10$yA/6ibVYdlQ2NcgeQguDSen6zYealETVXa.g227EsHvlK2RI6etYi

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

2、bool password_verify($password, $hash)

参数:

$password:密码

$hash:哈希值

功能:校验密码是否和哈希值匹配

 $pwd = "123456";
$hash_pwd = password_hash($pwd,PASSWORD_DEFAULT);
$verify = password_verify($pwd, $hash_pwd);
var_dump($verify);

结果:如果该哈希值$hash_pwd是由$pwd通过password_hash函数生成的,那么由password_verify函数来校检的话,返回的是TRUE;相反,则生成FALSE

3、boolean password_needs_rehash ( string $hash , integer $algo [, array $options ] )

参数:

$hash:哈希值

$algo:哈希算法

$options:选项

功能:检验该$hash是否还需要进行哈希转换。如果,$hash是已经经过password_hash函数转换生成的结果,则不需要再进行哈希转换,password_needs_rehash函数返回FALSE;相反,返回TRUE

 $pwd = "123456";
$hash_pwd = password_hash($pwd,PASSWORD_DEFAULT);
$needrehash1 = password_needs_rehash($pwd,PASSWORD_DEFAULT);      //需要进行哈希转换,返回TRUE
$needrehash2 = password_needs_rehash($hash_pwd ,PASSWORD_BCRYPT);   //不需要再进行哈希转换,返回FALSE
var_dump($needrehash);

4、array  password_get_info($hash)

参数:

$hash:一个由password_hash函数创建的散列值(哈希值)。

功能:返回有关哈希数组信息

 $pwd = "123456";
$hash_pwd = password_hash($pwd,PASSWORD_DEFAULT);
$hashinfo = password_get_info($hash_pwd);
var_dump($hashinfo);

例:

CI框架 -- 密码哈希的更多相关文章

  1. CI框架使用PHPmailer发送邮件找回密码

    之前用PHP+Mysql+jQuery结合ThinkPHP做了一个用户验证邮箱找回密码功能<ThinkPHP之PHP+Mysql+jQuery发送邮箱找回密码>,现在分享一下用CI框架结合 ...

  2. 初学后台框架总结篇二——快速了解CI框架

    一.下载CI框架并安装,这里放置一张自己的项目目录结构图 目录框架搭建好之后开始将自己的项目与框架融合 二.更改相关配置 1.用任何文本编辑器打开 application/config/config. ...

  3. 各种demo——CI框架学习

    各种demo——CI框架学习   寒假学习一下CI框架,请各位多多指教! 一.CI的HelloWorld! 注意:CI禁止直接通过文件目录来访问控制器. ./application/controlle ...

  4. PHP CI框架最近学到的内容

    CI框架配置方面注意的细节 在config里面的database.php里面是和数据库配置相关的内容 $db['default'] = array( 'dsn' => '', 'hostname ...

  5. php上传zip文件在线解压文件在指定目录下,CI框架版本

    我从网上找的文件php在线解压zip压缩文件 文件为jy.php可以直接执行,但是怎样将其加到CI框架中呢?? jy.php文件 <?php header("content-Type: ...

  6. 浅谈PHP的CI框架(一)

    作为前端开发人员,掌握一门后端语言是必不可少的,PHP的CI框架是一个快速开发框架,基于MVC,比较接近原生PHP,在原有的PHP代码上封装了许多类,易上手,容易扩展,适用于小项目,并且CI的文档及案 ...

  7. 一个用户管理的ci框架的小demo--转载

    一个ci框架的小demo 最近在学习ci框架,作为一个初学者,在啃完一遍官方文档并也跟着官方文档的例程(新闻发布系统)做了一遍,决定在将之前练习PHP与MySQL数据库的用户管理系统再用ci框架实现一 ...

  8. CI框架入门教程

    1. URL常用的相关函数 url相关函数在辅助类url中第一,要使用它们必须先加载$this->load->helper('url')或者自动装载    site_url('控制器/方法 ...

  9. php CI框架基础知识

    一. CI框架的MVC导图 二. CI框架目录文件介绍 (1)index.php  单入口         整个框架对外暴露的唯一访问文件 (2)application  应用文件(放置用户信息,用户 ...

随机推荐

  1. K-th string

    这两天参加了hihocoder上的小竞赛,下面把自己做的记录一下!(最痛心的是,开始竟然把main函数,写成了mian,浪费了将近一个小时时间,伤不起啊) Description Consider a ...

  2. Spring和Mybatis整合过程中遇到的一个找不到sqlSessionFactory或sqlSessionTemplate的异常

    先看启动web项目时IDEA控制台抛出的异常(红色部分): D:\tomcat-kafka-\bin\catalina.bat run [-- ::,] Artifact Gradle : com.x ...

  3. 【转】Java HotSpot(TM) 64-Bit Server VM warning: Insufficient space for shared memory file:

    使用命令:JPS #jps  报错了 $jps Java HotSpot(TM) Server VM warning: Insufficient space for shared memory fil ...

  4. log4e下载地址

    Log4e的插件的下载地址:log4e.jayefem.de/content/view/3/1/

  5. Java springboot项目的jar发布方式

    做springboot的都知道,发布方式不是war发布了,是jar发布,启动jar就可以直接运行,并且环境都是集成的. 首先,先将项目打包成jar,这里假设你的eclipse已经安装了maven插件. ...

  6. Android studio 创建安卓项目hello

    Android studio是一个非常好用的软件,只不过在使用的最开始,由于各种问题,会失败,并且新手本身就不懂的情况下,更加的懵逼. 这里我来记录一下我遇到过的一点坑. 首先,Android stu ...

  7. thinkphp验证码乱码的解决办法

    很有可能是入口文件index.php和.htaccess文件要转换成 以UTF-8无BOM格式编码

  8. 定位被选中的select

    <script> var countryId = "{$user['country']}"; $("select[@name='country'] optio ...

  9. [Linux实用工具]Windows下同步Linux文件(Linux安装Samba和配置)

    场景需求: 安装了Ubuntu在虚拟机上,但是代码编辑或者其它更多的操作的时候,还是习惯在windows下进行.如果windows下编辑完再上传到服务器,再编译执行,就太繁琐了.一次两次还好说,这编译 ...

  10. How Not to Crash系列地址

    http://inessential.com/hownottocrash How Not to Crash #1: KVO and Manual Bindings How Not to Crash # ...