0

MD5を使用して、128/256/512/1024/2048ビットのオプションサイズのチェックサムを取得することは可能ですか?

このDigest::MD5モジュールでは、RSA MD5メッセージダイジェストアルゴリズムを使用できます。このアルゴリズムは、任意の長さのメッセージを入力として受け取り、出力として128ビットのフィンガープリントを生成します。

MD5を使用してより大きな指紋を生成するにはどうすればよいですか?

4

3 に答える 3

3

MD5は定義上、128 ビットのハッシュ値のみを生成します。

したがって、別のハッシュ関数を使用するか (たとえば、ハッシュ関数のSHA-2ファミリは最大512 ビットの値を出力します)、データを部分に分割してそれらをハッシュし、後でハッシュを結合する必要があります。

達成しようとしていることについてより詳細に説明できれば、より具体的な推奨事項をより簡単に提供できるようになります。

于 2012-09-23T14:15:36.137 に答える
3

そのサイズの MD5 ハッシュを作成することはできません。一般に、安全なハッシュ関数は特定のサイズ向けに設計されています。それらは、特定のサイズの内部状態を持っています。

もちろん、MD5 を使用してランダムなバイト ストリームを作成できます。前の値を取得して再度ハッシュし、結果を追加し続けるだけです。もちろん、結果の全体的なセキュリティは、データに対する元のハッシュ値よりも強力ではありません。しばらくすると、各ハッシュの後に少量のエントロピーが失われるため、ハッシュは弱くなります (ただし、これにはかなり時間がかかります)。

現在使用できる最適なハッシュ関数は SHA-512 ですが、ゆっくりと同じサイズの SHA-3 に置き換えられます (ただし、執筆時点では標準化されていません)。これらのハッシュ値は十分なセキュリティを提供するため、より多くのデータが必要な場合は、単純にパディング メソッドを使用できます。

頭に浮かぶパディング方法は次のとおりです。

  • 既知の値で X バイト数を単純に追加する独自の方法。
  • PBKDF2 内で使用される関数。
  • PSS パディングのために内部で使用される関数 (パブリック RSA PKCS#1 v2.1 標準を参照)。

前述のように、どちらを使用するのが最適かはアプリケーションによって異なります。自分が何をしているのか (そのように見えるなど) がわからない場合は、 MD5 を使用しないでください。一般的な使用には壊れすぎており、十分な大きさの状態または出力がありません。

于 2012-09-23T14:54:15.797 に答える
1

いいえそうではありません。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 ダイジェストを生成するさまざまなメッセージを簡単に生成できるようになりました。特定のダイジェストを生成するメッセージを生成することはまだ難しいようですが、メッセージを一意に識別するためにダイジェストに依存するアプリケーションでは、より強力なアルゴリズムに移行することがおそらく賢明です。

  • 代わりにRSAを使用することを検討してください。
于 2012-09-23T14:15:45.243 に答える