这看起来像一个安全的盐与密码一起使用吗?任何改进或建议或明显的缺陷?这看起来像是一个密码的强盐
$salt = '';
for ($i = 0; $i < 50; $i++) {
$salt .= chr(rand(33, 126));
}
这看起来像一个安全的盐与密码一起使用吗?任何改进或建议或明显的缺陷?这看起来像是一个密码的强盐
$salt = '';
for ($i = 0; $i < 50; $i++) {
$salt .= chr(rand(33, 126));
}
您不需要使盐时间很长,并且加密安全并不重要。盐的重点在于简化彩虹表攻击,因为密码和哈希之间不再有1对1的映射关系。 (他们也跟上目光流连管理员从数据库中看到482c811da5d5b4bc6d497ffa98491e38然后知道乔的密码是“password123”。)
即使是一个4字节的盐就绰绰有余了,你现在就得2 &约;任何密码都有40亿个潜在的哈希值。
我会用mt_rand
因为它更快,但这是绝对盐足够。
我不认为rand
是一个很好的PRNG。如果我记得正确的话,它直接映射到c PRNG,在许多实现中它有一个可怕的小(如32位)内部状态。
它也不是很好的种子。但是由于盐的最重要的作用是防止预先计算的彩虹表,这个代码所做的就应该足够了。
我通常分割我的两个部分盐:
这样一个攻击者只能访问数据库而不能访问配置文件(如果攻击使用SQL注入,很可能出现这种情况),他仍然无法破解密码。
长度是主要使盐安全。随机性并不是非常重要,只要它对每个用户都不同。反正你最终会以纯文本的方式存储它,所以你可以在散列时使用它。
你必须知道盐!这不仅仅是单向哈希,它是一次哈希!这是没用的。 – aliqandil 2014-04-03 03:27:11