PHP中使用Bcrypt对密码进行更安全的加密


使用BCRYPT进行加密,PHP5.5+中有一个函数password_hash可以使用,验证时使用password_verify函数。


1.加密方式

password_hash('明文密码',PASSWORD_BCRYPT [, array $options]);


每次都会生成不一样的加密字符串,长度始终为60个字符。如123456两次分别生成如下形式的密文:

$2y$10$ADMAPbONqjOxVb62hIcYXeX/1gcVAxi0ajDG9WoGR/qUezArcPkym

$2y$10$pfA0EjQwgvHgO28ymemNMOwd4T9pYupmGRZZQMgbx0r379LzYeXSa


2.验证方式

password_verify('明文密码','密码字符串'); 匹配返回true否则false



例,密码为test(当然,密码始终不推荐使用简单字符,否则什么加密方式都保护不了)

$cryptPassword = password_hash('test',PASSWORD_BCRYPT);
//echo $cryptPassword;//输出类似$2y$10$EOBbM1lnXfggBm5wtzo5fuIJ6KJVFUrxSNmgh6y0d0y1kvBFCAhoO,把这串存到数据库
     
if(password_verify('test','$2y$10$EOBbM1lnXfggBm5wtzo5fuIJ6KJVFUrxSNmgh6y0d0y1kvBFCAhoO'))
    echo '通过验证';
else
    echo '密码不正确';

简单使用md5之类加密方式进行加密,数据库泄漏的话密码就很危险。Bcrypt跟md5比,缺点是速度略慢。


password_hash: http://php.net/manual/en/function.password-hash.php

Bcrypt: https://zh.wikipedia.org/wiki/Bcrypt

类别:PHP   阅读(0)   评论(0)    发表时间:2015-11-17 21:04  星期二

评论区

发表评论

        姓名:
邮箱|网站:
        内容:

  (可按Ctrl+Enter提交)