PHP PBKDF2+sha512

2015-10-20 08:13:53 +08:00
 cevincheung

并没有什么卵用,都知道该咋用
我就发着玩 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)

iterations100000 次也就 0.1s 左右一般

那么问题来了。不考虑计算成本的前提下,pbkdf2 bcrypt scrypt哪种方法更适合作为生产环境大规模应用的用户密码加密方法?

3451 次点击
所在节点    PHP
12 条回复
nevernet
2015-10-20 09:02:18 +08:00
为啥很多都用 hash_hmac 呢?
GPU
2015-10-20 09:13:28 +08:00
看完刚刚的网易贴 。楼下讨论加密的人都高潮 。

还在思考什么是 pbkdf2
flyingfz
2015-10-20 09:30:14 +08:00
easychen
2015-10-20 09:43:42 +08:00
既然都用 PHP 了,干嘛不用原生的 API 。 http://php.net/manual/zh/faq.passwords.php
cevincheung
2015-10-20 10:04:48 +08:00
@easychen 自带的是 bcrypt 。 so~ pbkdf2 bcrypt scrypt~~~
Mrun
2015-10-20 11:42:13 +08:00
@nevernet 因为普通的 hash ( passwd+salt ),会被长度扩展攻击
windyboy
2015-10-20 12:00:59 +08:00
@flyingfz 感谢,学习了
kiritoalex
2015-10-20 12:17:58 +08:00
建议使用 scrypt
realpg
2015-10-20 12:46:17 +08:00
hook php 源代码的 md5 后使用
我的 md5 函数输出是 36 位……
hahasong
2015-10-20 13:51:20 +08:00
@nevernet
hash_hmac 平时用用就足够了,谷歌两步验证的算法也是用的这个。 python 官方文档也是建议使用此算法加密密码
cevincheung
2015-10-20 20:24:39 +08:00
@kiritoalex 一般 vps 都好慢好慢的。 :doge:
kiritoalex
2015-10-20 20:36:47 +08:00
@cevincheung 慢是借口吧,把用户的安全放在第一位就应该使用 scrypt

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/229405

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX