首页 » 网站推广 » phppasswordhash道理技巧_PHP的password_hash函数封装及应用MD5SHA1的进级版本

phppasswordhash道理技巧_PHP的password_hash函数封装及应用MD5SHA1的进级版本

duote123 2024-12-08 0

扫一扫用手机浏览

文章目录 [+]

在我们的密码加密中常常利用md5或者sha1等,但是这些方法已经不是最优的办理方案,想到的方法是加盐,在php中加盐的方法有很多种,个中内置的方法password_hash比较经典,最近研究,觉得比md5、sha1等方法要好的多,特记之。

phppasswordhash道理技巧_PHP的password_hash函数封装及应用MD5SHA1的进级版本

封装的代码

<?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\公众; }

phppasswordhash道理技巧_PHP的password_hash函数封装及应用MD5SHA1的进级版本
(图片来自网络侵删)
标签:

相关文章

php多态的软件技巧_php多态性若何理解

多态性是指相同的操作或函数、过程可浸染于多种类型的工具上并得到不同的结果。不同的工具,收到同一将可以产生不同的结果,这种征象称为多...

网站推广 2024-12-10 阅读0 评论0

phpdate日期类技巧_PHP date 函数

PHP date( 函数PHP date( 函数可把韶光戳格式化为可读性更好的日期和韶光。韶光戳是一个字符序列,表示一定的事宜...

网站推广 2024-12-10 阅读0 评论0