1

PHPで利用可能なハッシュ方法の違いは何ですか

md2 md4 md5 sha1 sha224 sha256 sha384 sha512 ripemd128 ripemd160 ripemd256 
ripemd320 whirlpool tiger128,3 tiger160,3 tiger192,3 tiger128,4 tiger160,
4 tiger192,4 snefru snefru256 gost adler32 crc32 crc32b salsa10 salsa20 
haval128,3 haval160,3 haval192,3 haval224,3 haval256,3 haval128,4 haval160,
4 haval192,4 haval224,4 haval256,4 haval128,5 haval160,5 haval192,
5 haval224,5 haval256

私は通常、パスワードをデータベースに保存するために md5 を使用します。

調べてみましたが、メリット・デメリットがよくわかりませんでした。

4

3 に答える 3

14

これらはすべて異なるアルゴリズムです。それらのいくつかは暗号化ハッシュであり、いくつかは計算が非常に高速であるが暗号化の目的で決して使用されるべきではない単純なチェックサム(crc32やadler32など)です。

MD5とSHA-1は、以前は標準の暗号化ハッシュでしたが、最近、両方に弱点が見つかりました。暗号化の目的で新しいSHA-256を使用するのがおそらく最善です。他の新しいSHAバリアントは、使用するビット数が少ないか多いですが、根本的な違いはありません。

これらのアルゴリズムのほとんどについてのより詳細な情報は、おそらくウィキペディアで見つけることができます。

于 2010-06-28T10:42:10.740 に答える
9

違いは、使用されるアルゴリズムの違いであり、出力のサイズも決定します(たとえば、md5は128ビット出力を生成し、shaは160ビットを生成します)。

md5とsha1には、発見された弱点(ハッシュスペースでの衝突)がありますが、銀行のサイトで作業している場合を除いて、ほとんどの目的でmd5で十分です。

ただし、(使用するハッシュアルゴリズムに関係なく)ソルトを使用する必要があります。たとえば、パスワードのmd5を使用するだけで、レインボー攻撃に対して脆弱になる可能性があります。

編集:これはPHP自体よりも暗号の質問です

于 2010-06-28T10:41:50.493 に答える
3

パスワードをデータベースに保存するために md5 や「単純な」ハッシュを使用したくない場合。良いソルトbcryptが必要です。phpassライブラリは、弱すぎないパスワード ストレージを実装するための優れた移植可能な方法を提供します。

于 2010-06-28T12:21:16.883 に答える