MD5を使用して、128/256/512/1024/2048ビットのオプションサイズのチェックサムを取得することは可能ですか?
このDigest::MD5
モジュールでは、RSA MD5メッセージダイジェストアルゴリズムを使用できます。このアルゴリズムは、任意の長さのメッセージを入力として受け取り、出力として128ビットのフィンガープリントを生成します。
MD5を使用してより大きな指紋を生成するにはどうすればよいですか?
MD5を使用して、128/256/512/1024/2048ビットのオプションサイズのチェックサムを取得することは可能ですか?
このDigest::MD5
モジュールでは、RSA MD5メッセージダイジェストアルゴリズムを使用できます。このアルゴリズムは、任意の長さのメッセージを入力として受け取り、出力として128ビットのフィンガープリントを生成します。
MD5を使用してより大きな指紋を生成するにはどうすればよいですか?
そのサイズの MD5 ハッシュを作成することはできません。一般に、安全なハッシュ関数は特定のサイズ向けに設計されています。それらは、特定のサイズの内部状態を持っています。
もちろん、MD5 を使用してランダムなバイト ストリームを作成できます。前の値を取得して再度ハッシュし、結果を追加し続けるだけです。もちろん、結果の全体的なセキュリティは、データに対する元のハッシュ値よりも強力ではありません。しばらくすると、各ハッシュの後に少量のエントロピーが失われるため、ハッシュは弱くなります (ただし、これにはかなり時間がかかります)。
現在使用できる最適なハッシュ関数は SHA-512 ですが、ゆっくりと同じサイズの SHA-3 に置き換えられます (ただし、執筆時点では標準化されていません)。これらのハッシュ値は十分なセキュリティを提供するため、より多くのデータが必要な場合は、単純にパディング メソッドを使用できます。
頭に浮かぶパディング方法は次のとおりです。
前述のように、どちらを使用するのが最適かはアプリケーションによって異なります。自分が何をしているのか (そのように見えるなど) がわからない場合は、 MD5 を使用しないでください。一般的な使用には壊れすぎており、十分な大きさの状態または出力がありません。
いいえそうではありません。cPANのドキュメントを参照してください。
# Functional style
use Digest::MD5 qw(md5 md5_hex md5_base64);
$digest = md5($data);
$digest = md5_hex($data);
$digest = md5_base64($data);
Digest::MD5 モジュールを使用すると、Perl プログラム内から RSA Data Security Inc. の MD5 メッセージ ダイジェスト アルゴリズムを使用できます。このアルゴリズムは、任意の長さのメッセージを入力として受け取り、入力の128 ビットの「フィンガープリント」または「メッセージ ダイジェスト」を出力として生成します。
MD5 アルゴリズムは以前ほど強力ではないことに注意してください。2005 年以降、同じ MD5 ダイジェストを生成するさまざまなメッセージを簡単に生成できるようになりました。特定のダイジェストを生成するメッセージを生成することはまだ難しいようですが、メッセージを一意に識別するためにダイジェストに依存するアプリケーションでは、より強力なアルゴリズムに移行することがおそらく賢明です。