これが問題です: sha1(md5('password')) パスワードを破ることは可能ですか?
または、 sha1 の md5 または md5 の sha1 がどのように優れているのでしょうか?
ありがとう!
これが問題です: sha1(md5('password')) パスワードを破ることは可能ですか?
または、 sha1 の md5 または md5 の sha1 がどのように優れているのでしょうか?
ありがとう!
複数のハッシュは、パスワードをさらに保護しません。安全なソルト付きハッシュを使用するだけです。
http://php.net/hashをチェックしてください
ウィキペディアの MD5 記事によると:
" MD5 ハッシュ関数のセキュリティが著しく損なわれています。 "
したがって、MD5 を SHA1 に追加しても、安全性が向上するわけではありません。すでにハッシュ化されたものをハッシュ化しても、より安全になるとは言えません。
多くの人がパスワードを保存するために使用する一般的なメカニズムは、ハッシュされた文字列に対するソルト暗号化です。
元の質問に誰も答えなかったので、はい、可能です。
2 番目の質問について: md5(sha1('password')) は、ハッシュ サイズが縮小されるため、sha1 を使用する場合と比較して、実際にはセキュリティが低下します。また、その逆も役に立ちません。
常に塩漬けを使用してください!
md5
32文字の文字列を取得します。
sha1
40文字のリングを取得します。
ただし、どちらの場合も、これらの文字列には 16 進文字のみが含まれます。つまり、各位置で可能な値は 0 ~ 9 と af の 16 個のみです。
md5+sha1 を使用するのは (どの順序で呼び出しても)良い考えではないと思います。パスワードにこれらの 1 つだけを使用する方がおそらく安全です。
考慮してください:
16進数32文字以上の組み合わせが可能だと思いませんか?
ハッシュ関数を 1 つ
だけ使用し、パスワードをソルトします。
2 つのハッシュを使用しても、アルゴリズムは安全になりません。最善の(より多くのビットを使用した)アルゴリズムを使用し、ソルトを追加することで、一度ハッシュします。例えば:
sha1('This is some salt' . $string . 'othersalt')
これは、レインボー テーブルに対してより安全です。つまり、攻撃者がレインボー テーブルを構築できるため、完全に安全というわけではありませんが、一般的なレインボー テーブルは機能しないため、より安全です。また、両方のアルゴリズムがクラックされていることにも注意してください。SHA-128 や sha-256 などの SHA-2 を使用することを強くお勧めします。それらはまだ壊れていません。
最後に:常にレインボー テーブルに対してソルト ハッシュを使用します。常に最適なハッシュを使用してください: SHA-3 が登場する予定です。
ハッシュ関数を相互にラップしても、ハッシュがより安全になるわけではありません。攻撃者がデータベース内の多数のパスワードを読み取ることができるように、レインボー テーブルが構築される可能性があります。
もちろん、これは彼らがあなたのコードにアクセスできることを前提としていますが、この段階までに彼らはあなたのデータベースにアクセスできるため、おそらくそうするでしょう。