タイトルがすべてを物語っています。私の理解では、すべてのファイルには一意の MD5 チェックサムがあります。その合計からファイルをリバース エンジニアリングすることは可能ですか?
たとえば、ビデオの合計が 5 だったとしましょう。わかっていますが、これは単なる例です。5 を入力するとビデオが生成されるプログラムを作成できますか?
つまり、ファイルから合計を生成する代わりに、合計からファイルを取得します。
タイトルがすべてを物語っています。私の理解では、すべてのファイルには一意の MD5 チェックサムがあります。その合計からファイルをリバース エンジニアリングすることは可能ですか?
たとえば、ビデオの合計が 5 だったとしましょう。わかっていますが、これは単なる例です。5 を入力するとビデオが生成されるプログラムを作成できますか?
つまり、ファイルから合計を生成する代わりに、合計からファイルを取得します。
いいえ、それは一方通行です。それ以外の場合は、優れた圧縮方法になります。
Jim W の発言をさらに発展させると、どのハッシュ関数も一方向性です。つまり、簡単に元に戻す必要のない関数です。
MD5 は暗号化ハッシュ関数です。つまり、元に戻すのが非常に困難になるように意図的に設計されています。特に MD5 は比較的脆弱です。同じ MD5 ハッシュを持つ 2 つのファイルの衝突を簡単に見つけることができる脆弱性があります。
MD5 ハッシュは 128 ビットしかないため、2^128 の異なる MD5 ハッシュが考えられます。これは非常に大きな数ですが、世界にはそれよりもはるかに多くのファイルが存在します (実際には無限の数になる可能性があります)。そのため、一部のファイルが同じ値にハッシュされることは避けられません。これは、user2864740 がコメントで指摘したように、ピジョンホールの原則として知られています。
SHA-256 のような強力な暗号化ハッシュ関数は、そのような衝突を確実に見つけることが計算上不可能であると考えられています。