使用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