我听说在数据库中以明文形式存储密码是不好的,所以我正在寻找一种很好的安全方式来存储传递工作。我做了一些研究,并有一个工作的例子。
$cost =10;
$salt =strtr(base64_encode(mcrypt_create_iv(16, MCRYPT_DEV_URANDOM)), '+', '.');
$salt = sprintf("$2a$%02d$",$cost).$salt;
$hash = crypt($password,$salt);
$ hash是保存到数据库中的最后一个字符串。要获得哈希密码,我有 // $ password =从登录时通过DB $ enterpass =传递 $ hash = crypt($ password,$ enterdPass); if($ enterdPass == $ hash)//输入的密码是正确的
我不是在寻找有史以来最好的哈希,只是作为一家小公司或其他东西在互联网上出售的东西
答案 0 :(得分:3)
从版本5.5开始,PHP有一个很好的密码散列API,并且它已被反向移植以用于从5.3.7开始的版本。
查看您可以使用的documentation和library。
与当前解决方案相比,它的优势在于,如果您决定在以后使用更好的算法或改进的设置,则允许升级密码哈希值。
示例:
$store_this = password_hash("rasmuslerdorf", PASSWORD_DEFAULT);
$true === password_verify('rasmuslerdorf', $store_this);