
并没有什么卵用,都知道该咋用
我就发着玩 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哪种方法更适合作为生产环境大规模应用的用户密码加密方法?
1 nevernet Oct 20, 2015 为啥很多都用 hash_hmac 呢? |
2 GPU Oct 20, 2015 看完刚刚的网易贴 。楼下讨论加密的人都高潮 。 还在思考什么是 pbkdf2 |
3 flyingfz Oct 20, 2015 |
4 easychen Oct 20, 2015 既然都用 PHP 了,干嘛不用原生的 API 。 http://php.net/manual/zh/faq.passwords.php |
5 cevincheung OP @easychen 自带的是 bcrypt 。 so~ pbkdf2 bcrypt scrypt~~~ |
8 kiritoalex Oct 20, 2015 建议使用 scrypt |
9 realpg PRO hook php 源代码的 md5 后使用 我的 md5 函数输出是 36 位…… |
11 cevincheung OP @kiritoalex 一般 vps 都好慢好慢的。 :doge: |
12 kiritoalex Oct 20, 2015 @cevincheung 慢是借口吧,把用户的安全放在第一位就应该使用 scrypt |