一意の電子メール アドレスのリストがあります。非常に単純な質問です。電子メールが一意であれば、出力は常に一意になります。
hash('md2', $email);
一意の電子メール アドレスのリストがあります。非常に単純な質問です。電子メールが一意であれば、出力は常に一意になります。
hash('md2', $email);
ウィキペディアによると、最善の攻撃は次のとおりです。
2009 年に、MD2 は 2^63.3 圧縮関数評価の時間計算量と 2^52 ハッシュ値のメモリ要件を伴う衝突攻撃に対して脆弱であることが示されました。これは、265.5 圧縮関数の評価がかかると予想されるバースデー アタックよりもわずかに優れています。
ただし、短い電子メール アドレスの衝突を見つけるのは依然として困難です。
より高いセキュリティと128 ビットのハッシュ値が本当に必要な場合は、執筆時点で安全と見なされている SHA-256 の最初 (左端) の 128 ビットを使用することをお勧めします。もちろん、完全な 256 ビットを使用することをお勧めします。
偶然に衝突する可能性はほぼゼロです。したがって、これを使用して独自のものを作成するだけであれば (つまり、標的型攻撃を考慮せずに)、MD2 を使用しても問題ありません。それでも、プロトコルを変更できる場合は、代わりに SHA-256 を使用してください。
MD2 のようなハッシュ関数は、その名前がメッセージ ダイジェスト アルゴリズムを示唆するようなもので、任意の長さの入力を取り、固定長の出力を提供します。固有の入力に対して衝突が必ず存在します。
MD2 と比較して、2 つの文字列間の衝突がほとんど発生しない SHA-256 などの強力なハッシュ関数を使用できます。ここでは誕生日のパラドックスが適用されるため、MDx 関数や 256 ビット ハッシュ関数よりも短いものは使用しないでください。
メールアドレスをハッシュ化しているようです。システムによっては、これが衝突で悪用される可能性があります。たとえば、一部の電子メール プロバイダーは、「myname+1@domain.com」、「myname+2@domain.com」などの形式の仮想アドレスを有効にします。攻撃者はその事実を利用して、既知の他の電子メール アドレスとの衝突を検出し、たとえばパスワード リセットの電子メールなどを取得する可能性があります。
MD2 は 128 ビットのハッシュを生成します。2^128+1 文字列をハッシュすることで、少なくとも 1 つのハッシュ衝突を保証できます。