2011-07-03 18 views
2

可能性の重複:
Is “double hashing” a password less secure than just hashing it once?パスワードを何度も繰り返しハッシュする価値がありますか?

私はそれをすることによって何を得るのですか?それはハッシュを遅くする...それは自動的にハッシュから何とかパスワードを見つける可能性を減らすか?

$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; 
} 

答えが「はい」の場合は、何回繰り返されますか?

他のどのような方法でパスワードのセキュリティを改善することをお勧めしますか(塩とピーナッツを除く)?

+1

最初に '$ hashed_pa​​ssword = $ password'を設定してから大きなif/elseブロックを省いてコードを単純化することができます... – Amber

+1

"パスワードセキュリティを改善するその他のオプション " *遠すぎ*広すぎるので、SOの質問として答えることはできません。 –

+0

@Amber:あなたは何かを複製しています。私はそれがすべての論理が語彙的に近くにあるので、この方法を好む。 –

答えて

1

遅いハッシングは、です。

敵がパスワードハッシュを取得した場合、各ハッシュを試すには長い時間がかかることがあります。

+1

これは、攻撃者があなたのハッシュを持っていないシナリオであっても、単純にあなたのセキュリティ機構を強引に強制する。 –

+1

@Oli:あなたはそれに対してより良い防御を持つべきです。 – SLaks

+0

私は常に複数のハッシュ技術を推奨してきました。たとえば、 'hash( 'md5'、$ salt。$ password).hash( 'sha256'、$ salt。$ password)'などです。これは、一般的に、ハッシュと一致する重複パスワードを見つけることを難しくします。また、ユーザーにパスワードの代わりに「パスフレーズ」を使用させるようにします。 "私の誕生日は1月1日です"とは、強引なパスワードの方がはるかに難しく、ユーザーが覚えやすくなります。 – Rahly

関連する問題