MD5ハッシュを復号化することは可能ですか?質問する

MD5ハッシュを復号化することは可能ですか?質問する

ある人が、次のようなソフトウェア システムを見たことがあると言っていました。

  1. 他のシステムから MD5 で暗号化されたパスワードを取得します。
  2. 暗号化されたパスワードを復号化し、
  3. システム独自のアルゴリズムを使用して、システムのデータベースにパスワードを保存します。

それは可能ですか? MD5 ハッシュを復号化することは不可能/実現不可能だと思っていました。

MD5 辞書があることは知っていますが、実際の復号化アルゴリズムはあるのでしょうか?

ベストアンサー1

いいえ。MD5は暗号化ではありません(一部の暗号化アルゴリズムの一部として使用される場合もありますが)。これは一方向の暗号化です。ハッシュ関数元のデータの多くは、実際には変換中に「失われます」。

考えてみてください。MD5 は常に 128 ビット長です。つまり、MD5 ハッシュは 2 128通りあります。これはかなり大きな数ですが、間違いなく有限です。しかし、特定のハッシュ関数への入力は無限にあります (そして、そのほとんどは 128 ビット以上、つまりわずか 16 バイトです)。したがって、ハッシュされて同じ値になるデータの可能性は実際には無限にあります。ハッシュが興味深いのは、ハッシュされて同じ値になる 2 つのデータを見つけるのが非常に難しく、偶然にそれが起こる可能性はほぼ 0 であることです。

(非常に安全でない)ハッシュ関数の簡単な例(これはハッシュ関数が一方向であるという一般的な考え方を示しています)は、データのすべてのビットを取得し、それを大きな数として扱うことです。次に、大きな(おそらく素数の)数nを使用して整数除算を実行し、余りを取得します(次を参照)。係数) 。0 からnまでの間の数字が残ります。同じ文字列を使用して、同じ計算を再度実行すると (いつでも、どのコンピューターでも、どこでも)、同じ値が得られます。しかし、 nで割ったときにその余りになる数字は無限にあるため、元の値を見つける方法はありません。

とはいえ、MD5にはいくつかの弱点があることがわかっており、複雑な計算を行えば、2 128通りの入力文字列を試さなくても衝突を見つけることができるかもしれない。また、ほとんどのパスワードは短く、よく使われる値(「password」や「secret」など)が使われるため、ハッシュをGoogleで検索したり、レインボーテーブルそれが、常に「「パスワードをハッシュ化することで、2 つの同一の値をハッシュ化しても同じ値にハッシュ化されなくなります。」

一度データがハッシュ関数に通されると、元に戻すことはできません。

おすすめ記事