8

これが問題です: sha1(md5('password')) パスワードを破ることは可能ですか?

または、 sha1 の md5 または md5 の sha1 がどのように優れているのでしょうか?

ありがとう!

4

6 に答える 6

11

複数のハッシュは、パスワードをさらに保護しません。安全なソルト付きハッシュを使用するだけです。

http://php.net/hashをチェックしてください

于 2011-04-23T16:29:28.733 に答える
3

ウィキペディアの MD5 記事によると:

" MD5 ハッシュ関数のセキュリティが著しく損なわれています。 "

したがって、MD5 を SHA1 に追加しても、安全性が向上するわけではありません。すでにハッシュ化されたものをハッシュ化しても、より安全になるとは言えません。

多くの人がパスワードを保存するために使用する一般的なメカニズムは、ハッシュされた文字列に対するソルト暗号化です。

于 2011-04-23T16:34:32.873 に答える
3

元の質問に誰も答えなかったので、はい、可能です。

2 番目の質問について: md5(sha1('password')) は、ハッシュ サイズが縮小されるため、sha1 を使用する場合と比較して、実際にはセキュリティが低下します。また、その逆も役に立ちません。

常に塩漬けを使用してください!

于 2011-04-23T16:41:33.130 に答える
1

md532文字の文字列を取得します。
sha140文字のリングを取得します。

ただし、どちらの場合も、これらの文字列には 16 進文字のみが含まれます。つまり、各位置で可能な値は 0 ~ 9 と af の 16 個のみです。


md5+sha1 を使用するのは (どの順序で呼び出しても)良い考えではないと思います。パスワードにこれらの 1 つだけを使用する方がおそらく安全です。

考慮してください:

  • たとえば、パスワードには少なくとも 8 文字を含めることができます
  • これらの 8 文字のそれぞれには、文字(大文字または小文字)、数字、特殊文字を使用できます。これは、各ポジションで少なくとも 75 の可能性があることを意味します

16進数32文字以上の組み合わせが可能だと思いませんか?


ハッシュ関数を 1 つ だけ使用し、パスワードをソルトします。

于 2011-04-23T16:30:25.880 に答える
0

2 つのハッシュを使用しても、アルゴリズムは安全になりません。最善の(より多くのビットを使用した)アルゴリズムを使用し、ソルトを追加することで、一度ハッシュします。例えば:

sha1('This is some salt' . $string . 'othersalt')

これは、レインボー テーブルに対してより安全です。つまり、攻撃者がレインボー テーブルを構築できるため、完全に安全というわけではありませんが、一般的なレインボー テーブルは機能しないため、より安全です。また、両方のアルゴリズムがクラックされていることにも注意してください。SHA-128 や sha-256 などの SHA-2 を使用することを強くお勧めします。それらはまだ壊れていません。
最後に:常にレインボー テーブルに対してソルト ハッシュを使用します。常に最適なハッシュを使用してください: SHA-3 が登場する予定です。

于 2012-09-10T10:31:26.517 に答える
0

ハッシュ関数を相互にラップしても、ハッシュがより安全になるわけではありません。攻撃者がデータベース内の多数のパスワードを読み取ることができるように、レインボー テーブルが構築される可能性があります。

もちろん、これは彼らがあなたのコードにアクセスできることを前提としていますが、この段階までに彼らはあなたのデータベースにアクセスできるため、おそらくそうするでしょう。

于 2011-04-23T16:29:28.693 に答える