2010-12-04 19 views
20

MD5アルゴリズムは、常に同じ文字列に対して同じ出力を生成しますか?MD5アルゴリズムは、常に同じ文字列に対して同じ出力を生成しますか?

塩を使用しているのは、異なる出力を生成するだけですか?

+2

質問する理由を説明できますか?あなたは何らかの理由で別の行動が必要なようです。 –

+1

これは決定論的なアルゴリズムです。どのようにそれ以外のことができますか? –

+0

私は暗号とハッシングの違いに慣れていません。 私もそれが混乱していたと思う。RC5 – vfclists

答えて

30

はい、それ以外の場合、MD5はファイル検証のようなものでは役に立たないでしょう。非決定論的な出力にはどんな理由がありますか?

+0

「決定的でない出力にはどんな理由があるだろう」と笑ったのは、それが私の考えであるからです。しかし、明らかに.NETのGetHashCode()_は、少なくともアプリケーションの実行の間、非決定論的です。 –

6

はい、ハッシュアルゴリズムは常に同じ出力を生成します。同じ塩を使用している場合、指定された入力に対しても常に同じ出力が生成されます。

5

はい、MD5は常に同じ入力を出力します。これがパスワードの使用方法です。データベースにハッシュを格納し、ユーザーがパスワードを入力すると、再びハッシュされ、2つのハッシュが比較されます。

注:暗号化されていないため、MD5はパスワードのハッシュにはお勧めできません。 bcryptのような、より適切な暗号化ハッシュが利用可能です。しかし、歴史的に、この目的のために使用されてきました。

+0

パスワードにはMD5を使用しないでください。 – mavnaranjo

+0

@mavnaranjo:downvoteを保証するとは思わないでください。私は間違っていない、そしてそれは5年前だった。それはパスワードのために使用され、それは不安定であり、それは不変の出力を持っていることをあなたがどのように知っているかのための有効な説明のポイントです。私はその点に編集を追加します。 –

+0

Upvoted now;)。 – mavnaranjo

0

はい。 MD5はハッシュ関数です。

これはではありません。は、MD5が一意であることを意味します。複数の入力は同じハッシュにマップできますが、入力にはハッシュが1つしかありません。

1

はいMD5は決定的であり、これはメッセージダイジェスト関数の多くのアプリケーションにとって望ましい特性と考えられます。

塩を使用する場合、実際には「入力文字列を微妙な方法で変更する」という意味ですか?もちろん、メッセージダイジェストの望ましい特性でもあり、異なるメッセージに対して異なるダイジェストを(非常に高い確率で)生成します。

関連する問題