わけあってPHPでSHA256を書いた

PHP4の環境でHMAC-SHA256が必要になったわけだけど当然hash_hmac()はPHP5からなので使えない。

Pearのライブラリもいろいろと探してみたけど、内部でmhash()つかってたり、自分でサーバー環境いじれない状態のところでやらなきゃいけなかったんでしかたなくアルゴリズムからコードに落としてみた。

とりあえずgithubに上げといた。

一応バグはないと思う。
問題はPHP4の環境でまだ動かしてないということ。
PHP5の環境ではとりあえず動いてた。
PHP4でダメなシンタックスがあるかもしれんけど、それはこれから。

パフォーマンス考えてたらデータ全部メモリに一度のっけちゃうのがいいのかもしれないけど64Byte単位で処理するようにした。
それでも内部の演算に乗算、除算はやらずにシフト演算で対応した。

C言語とかやってた時期はバイナリ操作やりまくってたけど、PHP触りだしてから全然やらなくなったから、文字列がバイナリデータだってことに気が回らず文字列をバイナリ化しようと悩んでしまった。