并没有什么卵用,都知道该咋用
我就发着玩 2333333
<?php
function password($password,$salt='') {
if (!$salt)
$salt = mcrypt_create_iv(16,MCRYPT_DEV_URANDOM);
$password = hash_pbkdf2("sha512",$password,$salt,10000);
return sprintf('sha512$10000$%s$%s',base64_encode($salt),$password);
}
function verify($password,$hash) {
list($algo,$iterations,$salt,$verify) = explode('$',$hash);
return explode('$',password($password,base64_decode($salt)))[3] === $verify;
}
$password = password('password');
var_dump($password);
// "sha512$10000$LbcjzVgnLQ/Pg+vPMySCoA==$a89c104f76595bdce5677c8f2f3209207493e8c47abe3dffcfdf37c217c7544dbcca079a36f379d5e495cb73d53a99e86da22132ead0df6d94ef4660af17ba6a
var_dump(verify('password',$password));
// bool(true)
iterations
到 100000
次也就 0.1s 左右一般
那么问题来了。不考虑计算成本的前提下,pbkdf2
bcrypt
scrypt
哪种方法更适合作为生产环境大规模应用的用户密码加密方法?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.