CI框架 -- 密码哈希
哈希算法是一个单向函数。它可以将任何大小的数据转化为定长的“指纹”,并且无法被反向计算
依赖性
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框架 -- 密码哈希的更多相关文章
- CI框架使用PHPmailer发送邮件找回密码
之前用PHP+Mysql+jQuery结合ThinkPHP做了一个用户验证邮箱找回密码功能<ThinkPHP之PHP+Mysql+jQuery发送邮箱找回密码>,现在分享一下用CI框架结合 ...
- 初学后台框架总结篇二——快速了解CI框架
一.下载CI框架并安装,这里放置一张自己的项目目录结构图 目录框架搭建好之后开始将自己的项目与框架融合 二.更改相关配置 1.用任何文本编辑器打开 application/config/config. ...
- 各种demo——CI框架学习
各种demo——CI框架学习 寒假学习一下CI框架,请各位多多指教! 一.CI的HelloWorld! 注意:CI禁止直接通过文件目录来访问控制器. ./application/controlle ...
- PHP CI框架最近学到的内容
CI框架配置方面注意的细节 在config里面的database.php里面是和数据库配置相关的内容 $db['default'] = array( 'dsn' => '', 'hostname ...
- php上传zip文件在线解压文件在指定目录下,CI框架版本
我从网上找的文件php在线解压zip压缩文件 文件为jy.php可以直接执行,但是怎样将其加到CI框架中呢?? jy.php文件 <?php header("content-Type: ...
- 浅谈PHP的CI框架(一)
作为前端开发人员,掌握一门后端语言是必不可少的,PHP的CI框架是一个快速开发框架,基于MVC,比较接近原生PHP,在原有的PHP代码上封装了许多类,易上手,容易扩展,适用于小项目,并且CI的文档及案 ...
- 一个用户管理的ci框架的小demo--转载
一个ci框架的小demo 最近在学习ci框架,作为一个初学者,在啃完一遍官方文档并也跟着官方文档的例程(新闻发布系统)做了一遍,决定在将之前练习PHP与MySQL数据库的用户管理系统再用ci框架实现一 ...
- CI框架入门教程
1. URL常用的相关函数 url相关函数在辅助类url中第一,要使用它们必须先加载$this->load->helper('url')或者自动装载 site_url('控制器/方法 ...
- php CI框架基础知识
一. CI框架的MVC导图 二. CI框架目录文件介绍 (1)index.php 单入口 整个框架对外暴露的唯一访问文件 (2)application 应用文件(放置用户信息,用户 ...
随机推荐
- Win7中的路由转发配置实验
目的 Win7 两张网卡,两个网段的pc互通. 环境搭建 PC1通过交叉网线连接(如果是08年后的电脑,直通线交叉线都可以). PC2为笔记本电脑,一端用网口与pc连接,一端通过wifi与路由连接. ...
- C++用new来创建对象和非new来创建对象的区别
转:http://www.cnblogs.com/GODYCA/archive/2013/01/10/2854777.html 我们都知道C++中有三种创建对象的方法,如下: #include < ...
- html+css+jQuery+JavaScript实现tab自动切换功能
tab1.html内容 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> & ...
- Python3判断shell下进程是否存在&&启动&&邮件通知
判断进程是否存在 def isRunning(process_name): try: process = len(os.popen('ps aux | grep "' + process_n ...
- ctrl+z的ascii码是多少?
今天在使用中移动的模组的时候,发现: 突然把我难住了,ctrl+z要在我的数据包中通过TCP/IP发送,而结束字符肯定是需要我自己加在数据包的末尾的. 故,做如下测试: #include <st ...
- Netty系列之Netty线程模型
Reference: http://www.infoq.com/cn/articles/netty-threading-model 1. 背景 1.1. Java线程模型的演进 1.1.1. 单线程 ...
- spark练习题
site1,user1,-- :: site1,user2,-- :: site1,user3,-- :: site1,user3,-- :: site2,user4,-- :: site3,user ...
- TED Notes 1 (What leads to success)
1. the first thing is passion, do it for love, not for money2. if you do it for love, the money come ...
- hive之案例分析(grouping sets,lateral view explode, concat_ws)
有这样一组搜索结果数据: 租户,平台, 登录用户, 搜索关键词, 搜索的商品结果List {"tenantcode":"", "platform&qu ...
- 将html转换为Drupal模板文件的一般步骤
本篇文章以自定义page.tpl.php文件为例,介绍在Drupal主题开发工作中,将html文件转换为tpl模板文件的一般步骤. 仅保留html文件中body标记之间的内容(不含body标记),其他 ...