当腌制密码时,这是正确的方法(或最有效的方法)?
一个。首先对密码进行哈希处理,然后使用盐对哈希密码进行哈希处理:
$password = "passwd";
$salt = "s0merndslt";
$password = sha1($password);
$salty = sha1($password.$salt);
B中。取密码和盐并将它们一起散列,如下所示:
$password = "passwd";
$salt = "s0merndslt";
$salty = sha1($password.$salt);
如果以前曾经问过这个问题,我很抱歉,但是我无法找到SO的这个特定部分的答案。
答案 0 :(得分:2)
实际上,无论是哪种情况。
但是,您的示例#1提供了时间权衡,这将(略微)减慢暴力密码查找器。
随着GPU的出现,只需将密码加密即可。一个GPU支持的暴力密码工具,当给定一组要查找的密码时,可以在几分钟(甚至几秒)内完成短密码。
这就是为什么存在bcrypt
或PBKDF#2等工具或算法的原因:它们多次迭代散列操作以产生大量工作负载,这使得在商品硬件上从散列中查找密码“不可行”。 / p>
如有疑问,请不要实施自己的密码哈希解决方案!使用bcrypt
或PBKDF#2。