秘密結社との戦い

今日は午前中から秘密結社「MD5」と戦っていました。
仕事で使ってるプログラム言語にはMD5生成のライブラリが無い(はずは無いと思うけど探すも見つからず)ので、自前で生成することになりました。
いろいろ調べて何とか生成手順はわかりましたが内容はほとんどわからなかったので、とりあえず最小単位らしい55バイトまでのデータからMD5を生成するプログラムを作ることにしました。
他言語のソースコードを移植するだけだから簡単だろうと高を括ってたんですが、これがなかなか面倒で。
sin関数なんて当然無いので、Excelで事前計算したものをコピペしたり、いろいろと格闘。
ざっくりと書いてみたものの、合っていたのは32桁ということだけで、かすりもしませんでした。
配列の要素数が0オリジンじゃないので、ずらして指定したつもりのところが一部間違ってたり、事前計算していた42億*abs(sin([1-64]))の計算結果がExcel側で四捨五入されてたことに気づいたりとか、8回目でようやく生成できました。
一応、ネットでMD5を生成するプログラムを公開してるところで生成したものと比較してみましたが、ちゃんと合ってました。
が、元々生成のプロセスが全く理解できてないのでプログラム自体が合っているのかがわからないんですが、何パターンか生成結果を比較したら同じだったんだから間違い無いでしょう、きっと。


結局、半日かかってしまいました。
役に立つのかしら……これ。
というより、本当にライブラリ無いのかしら。


まあ、良いか。
暇つぶ……勉強になったし。