2012-03-14 16 views
10

私はMd5ハッシュアルゴリズムを理解する必要があります。 (ビット)の長さは448に合同 なるように 『(拡張)パディング「メッセージである』私は書類を読んでいたし、それがMD5ハッシュアルゴリズムの埋め込み

を述べ、あるモジュロ512は、メッセージはそう それことに拡張されます メッセージの長さが である場合であっても、パディングは常に実行され、512を法とする448に合致します。

これは簡単に言えば何を意味するのか、特に448 modulo 512を理解する必要があります。MODULOという言葉が問題です。私はこれに対する簡単な例を理解するでしょう。面白いですが、これはMD5ハッシュの第一歩です! :)

おかげ

答えて

10

モジュロやMODは、二つの数が互いにによって分割されているときに、残りを伝えることになる機能です。例えば

5モジュロ3:

= 1 5/3、2残り。したがって、5 mod 3は2である。なぜなら、16を作ることができないからである。

10モジュロ16 = 10である。 15が正確に3回になるので、モジュロ5 = 0である。は、5の倍数です。

学校に戻って、あなたはこれを「残っている」または「残っている」と知っていたでしょう、モジュロはそれを言うにはちょっとした方法です。

ここで言うことは、MD5を使用するときに起こる最初のことの1つは、メッセージが長すぎるように埋め込むことです。 MD5の場合、メッセージはnビットでなければなりません。ここで、n =(512 * z)+448、zは任意の数値です。

例として、1472ビット長のファイルがある場合は、MD5ハッシュとして使用できます。これは、1472 mod 512 = 448です。ファイルが1400ビット長だった場合、残りのMD5アルゴリズムを実行する前に余分な72ビットを埋め込む必要があります。

0

モジュラスは、剰余の除算です。例

512 mod 448 = 64 
448 mod 512 = 448 

で512モッズ448の別のアプローチは、その後、あなたが448を乗じたドットの前に結果の番号から512を引き、それらに448分の512 = 1.142 ...

を分割するために、次のようになります。

512 - 448*1 == 64 That's your modulus result. 

448が複数の512より64ビット短くなっていることを知る必要があります。

448と512の間にあればどうなりますか?

通常、私たちは448をx(係数の結果)で引く必要があります。

447 mod 512 = 447; 448 - 447 = 1; (all good, 1 zero to pad) 

449 mod 512 = 1; 448 - 449 = -1 ??? 

したがって、この問題の解決策は、512の倍数のうち64倍にすることです。その後、我々は64ビットで、元のメッセージと全長を追加する必要があるので、これが起こる

512*2 - 64 = 960 
449 mod 512 = 1; 960 - 449 = 511; 

は512

960 - 449 = 511; 
511 + 449 + 64 = 1024; 
1024 is multiple of 512; 
の倍数でなければなりません