Php 一次又一次地散列密码值得吗?
可能重复:Php 一次又一次地散列密码值得吗?,php,security,hash,cryptography,passwords,Php,Security,Hash,Cryptography,Passwords,可能重复: 我这样做有什么好处?它会减慢散列。。。它会自动减少从散列中找出密码的可能性吗 $password = '123456'; $iterations = 8; $is_first = true; for ($i = 0; $i < $iterations; ++$i) { if ($is_first === true) { $hashed_password = hash('sha256', $password); } else {
我这样做有什么好处?它会减慢散列。。。它会自动减少从散列中找出密码的可能性吗
$password = '123456';
$iterations = 8;
$is_first = true;
for ($i = 0; $i < $iterations; ++$i) {
if ($is_first === true) {
$hashed_password = hash('sha256', $password);
} else {
$hashed_password = hash('sha256', $hashed_password);
}
$is_first = false;
}
$password='123456';
$iterations=8;
$is_first=true;
对于($i=0;$i<$iterations;++$i){
如果($is_first==true){
$hashed_password=hash('sha256',$password);
}否则{
$hash_password=hash('sha256',$hash_password);
}
$is_first=false;
}
如果答案是肯定的。。。有多少次迭代是可选的
您还推荐哪些其他选项来提高密码安全性(除了盐和花生)?减慢散列速度是很好的
如果一个敌人得到了你的密码哈希值,你希望他被迫花很长时间来尝试每个哈希值。你可以通过在开始时设置
$hashed\u password=$password
来简化代码,然后省去大的If/else块……投票结束:“还有什么其他选项可以提高密码安全性?”太宽泛了,不能作为一个简单的问题来回答。@Amber:不管怎样,你都是在复制东西。我喜欢这样,因为所有的逻辑在词汇上都很接近。@Tomalak-你喜欢7行而不是2行吗?@Amber:不需要7行<代码>$hashed\u password=hash('sha256',$is\u first?$password:$hashed\u password)$is_first=false代码>是我要做的。我数了三行。你们有行号限制吗?将hash
逻辑复制到词汇上较远的地方会降低可维护性和易读性。即使在攻击者没有您的哈希的情况下,这也是正确的,只是粗暴地强制您的安全机制。@奥利:您应该有更好的防御措施。我一直建议使用多种哈希技术。例如,hash('md5',$salt.$password)。hash('sha256',$salt.$password)
。这通常会使查找与哈希匹配的重复密码变得更加困难。我们还强制用户使用“密码短语”而不是密码。“我的生日是1月1日”是一个更难用暴力破解的密码,用户更容易记住。@Jeremy:而且更难正确记住。我是否添加了st
?我是写了is
还是用了缩略语?我是否在上写了?我是否包括了这一年?@Jeremy实际上,这只提供了一个(小的)持续因素改善,请参见:。相反,您应该在设计用于减缓密码散列(如PBKDF2)的结构中使用一个精心选择的散列算法。不要自己滚!