Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/253.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 一次又一次地散列密码值得吗?_Php_Security_Hash_Cryptography_Passwords - Fatal编程技术网

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)的结构中使用一个精心选择的散列算法。不要自己滚!