揮発性のメモ2

http://d.hatena.ne.jp/iww/

MD5を続きから計算したい 続き

MD5は64バイトずつのブロックに拡張して区切って計算する(最後の64バイトにはデータ長が入っている)。
最終ブロック以外は毎回同じ演算を繰り返し、中間結果も毎回同じになる。


ブロックごとに中間結果を表示した例:

...
7F034A05 C467F7CC F2402BBD 7AC190D3
A420EECA 8123F762 CD92FE59 809D22FF
46800832 628A2121 8E6CCA4C E026777A
7D1BC186 E88279E2 127EC4D7 C4CC1303 ←最終ブロックの演算結果がこれ↓
MD5 (testdata3.txt) = 86c11b7de27982e8d7c47e120313ccc4

テストデータにちょっと追記して再度実行

...
7F034A05 C467F7CC F2402BBD 7AC190D3
A420EECA 8123F762 CD92FE59 809D22FF
46800832 628A2121 8E6CCA4C E026777A ←最終ブロックいっこ手前までは同じ
75862391 1007D95F 8A0731D5 EF3DDC0F 
MD5 (testdata4.txt) = 912386755fd90710d531078a0fdc3def

つまり、最終ブロックいっこ手前の計算結果をどっかに退避しておけば、毎度毎度先頭から計算しなくても済むということになる。
というか、最終ブロックいっこ手前の演算結果をMD5SUMから逆算できるんじゃないか?これ