0

プログラムに MD5 を実装したい (教育用)。そして、私は理解に問題があります。

ウィキペディアには次のように書かれています。

  1. メッセージに「1」ビットを追加
  2. ビット単位のメッセージ長 ≡ 448 (mod 512) まで「0」ビットを追加
  3. メッセージに length mod (2 pow 64) を追加

そして、私の考えは次のとおりです。

  1. メッセージのサイズを取得する
  2. サイズまで >= 64 ==> memcpy 64 バイトをバッファリングして関数を計算する
  3. size < 64 の場合、memcpy の "size" バイトとパディングを準備します。

そして今、メッセージが127バイトだとしましょう。プログラムは最初の 64 バイトを取得し、計算してから、2 番目の部分を取得します。63 バイト (504 ビット) を使用したため、パディングを追加する必要があります。1 を加算すると、505 ビットになります。

今何?448 (mod 512) までゼロを追加する必要があるので、448+7 ゼロですか? では、再び 2 つのチャンクがあるのでしょうか。または何?

それは私には変に見えるので、私は尋ねます;) おそらくそれは良いですが.. わかりません.

前もってありがとう、M

4

1 に答える 1

1

ウィキペディアの説明は正しいです。少なくとも時々余分なブロックを追加しないパディング スキームを設計する方法はありません。(数えることで自明に証明できる.)

于 2012-05-30T19:52:40.190 に答える