PHP的password_hash函数封装及应用(MD5、sha1的升级版本)
来源:互联网 发布:云免ip怎么换成域名 编辑:程序博客网 时间:2024/06/03 10:58
在我们的密码加密中常常使用md5或者sha1等,但是这些方法已经不是最优的剞劂方案,想到的方法是加盐,在php中加盐的方法有很多种,其中内置的方法password_hash比较经典,最近研究,感觉比md5、sha1等方法要好的多,特记之。
以下是本人封装的代码:
<?phpclass hlinfo_Hash {private $algo=PASSWORD_DEFAULT;private function readCost(){$timeTarget = 0.05; // 50 毫秒(milliseconds)$cost = 8;do {$cost++;$start = microtime(true);password_hash("test", PASSWORD_BCRYPT, ["cost" => $cost]);$end = microtime(true);} while (($end - $start) < $timeTarget);return $cost;}private function options(){return ['cost' => $this->readCost(),];}public function pwd($pwd){return password_hash($pwd, $this->algo, $this->options());}public function verify($pwd,$hash){$msg=array("success"=>false,"newhash"=>false,"msg"=>"");if (password_verify($pwd, $hash)) {if (password_needs_rehash($hash, $this->algo, $this->options())) {$newHash = $this->pwd($pwd);$msg=array("success"=>true,"newhash"=>true,"msg"=>$newHash);}else{$msg=array("success"=>true,"newhash"=>false,"msg"=>"");}} else {$msg=array("success"=>false,"newhash"=>false,"msg"=>"");}return $msg;}}
使用例子:
<?php $cyh=new hlinfo_Hash(); #获取密码的hash值存库, $hash=$cyh->pwd("123456"); echo "hash str:".$hash."; #验证密码的正确性,$hash为存库的hash值, $hrs=$cyh->verify("123456", $hash); if($hrs['success']){ #程序判断是否重新生成hash值, if($hrs['newhash']){ #重新生成hash值,更新数据库的hash值 $nhash=$hrs['msg']; echo "认证成功,hash:".$nhash; }else{ echo "认证成功,hash未更新!"; } }else{ echo "verify false"; }
阅读全文
0 0
- PHP的password_hash函数封装及应用(MD5、sha1的升级版本)
- php的密码加密password_hash
- PHP的password_hash()使用实例
- 关于PHP中的sha1和md5的加密函数
- CRC、MD5与SHA1的应用
- android获取应用的MD5,SHA1值
- PHP sha1() md5()函数漏洞
- 一个封装了MD5,SHA1等加密算法的类
- ★ 封装了MD5,SHA1等加密算法的类
- 封装了MD5,SHA1等加密算法的类
- password_hash的使用方法
- password_hash的使用方法
- AndroidStudio 获取debug和release版本的SHA1和MD5
- PHP 中的sha1()和MD5()函数漏洞
- 获取android应用签名证书的SHA1,MD5,SHA256值
- Android Studio 下获取应用的数字签名MD5、SHA1方法
- JAVA计算文件的MD5及SHA1等值
- Sql Server 2005下的MD5、SHA1算法函数
- 细说JDK动态代理的实现原理
- C++ 动态规划-LCS最长公共子序列
- 快速排序
- 欢迎使用CSDN-markdown编辑器
- 校园交易平台后台系统git操作全过程
- PHP的password_hash函数封装及应用(MD5、sha1的升级版本)
- 秦九韶算法
- HAVING和WHERE的区别
- 学习php2
- 657.Judge Route Circle
- 2017-10-14总结第四天(补)
- MYSQL主从复制
- Ubuntu上安装Eclipse
- python学习笔记(四)--杂项