その他もありますが、今日はがんばってRIPEMD-160関係の実装をしていました。
RIPEMD-160をなぜか実装した人
何となくわかると思いますが、160bitのハッシュアルゴリズムです。SHA-1とためを張っているアルゴリズムですが、日本ではほとんど使われていません。
そのため、実装の資料もほとんどなく、特にエンディアン操作でかなり苦労しました。
アルゴリズム本体は本家の説明からそのまんま組めば簡単です。難しければ説明文のテンポラリ変数を一つではなく二つとして
左右ブロックそれぞれで処理を書いてみれば対称のアルゴリズムなので見通しがよくなると思います。
面倒なのは定数が多いことですね。回転シフトの回数制御やブロック指定の添え字が左右に分かれて制御する分二倍になる、ということです。
ちなみに、RIPEMD系で使用されているエンディアンはSHA系とは違いリトルエンディアンですので間違えないように。
RIPEMD-128、RIPEMD-256、RIPEMD-320はもののついでで簡単に実装
できます。それぞれ微妙な差分があるだけで記述する演算式そのものはほとんど同じです。使われている定数もラウンド関数もほぼ流用できます。
回転シフト数の定義とブロックの添え字は同じ定義ですし、加算定数もほとんど変化なしなので定義を共通化すればOKです。
本当にほとんどコピペですむので楽勝ですね。せいぜいラウンド関数の切れ目にハッシュ交換処理が入るとかその程度ですし。
ちなみに、RIPEMD-128だけはアルゴリズムを文章として確認したわけではありません。RIPEMD-160とRIPEMD-256から実装を推測して組んでみたらその通りだった、というものです。
ハッシュの基本処理の実装部を変更
するのに時間がかかりました。さすがに実装してあるハッシュ処理がかなり多くなってきた(CRC32,MD5,SHA-1,SHA-224/256,SHA-384/512,RIPEMD-128/256,RIPEMD-160/320,Whirlpool)ので、
それぞれで共通になるロード処理などをインターフェイスクラス側に移して見通しがよくなるように組み直しました。
確認作業が面倒だったのが痛いですが・・・。ほぼすべてのハッシュ処理を再テストする羽目になっちゃいましたし。
これだけハッシュ処理を実装して何に使うのだろうか?
自分で思うことです。どう見てもゲーム(ADV系)にこれだけのハッシュ処理を使うとはまず思えません。
せいぜいRFCなどで定めてある通信系処理を自前実装するとき、くらいでしょうか。演算処理を最適化してあるわけではないので速度は微妙ですが。
どうせもうそろそろSHA-3のアルゴリズムがドラフトで出るはずなのでそれも実装しようかな~とは思っています。使わないと思いますので意味がないと思いますが。
iPhone4Sの発売・・・
さすがにスティーブ・ジョブズ氏が亡くなったことで妙にクローズアップされたiPhone4Sですが、
内部的なものはだいぶ強化されていると評価されているようですね。CPUコアしかりiOS5しかり。Siriをどう使うかが私が個人的におもしろそうと思う項目です。
ただ、スマートフォンとしてみるとどうも連続待受時間が大幅に下がっているところがまずすぎると思います。
iPhone4の時に比べて2/3まで下がっているんですよね・・・。CPUコアの拡張が変な方向に効いているのだと思いますが。
買った人にはこれについての感想を尋ねてみたいものですし、改良版(もしくは次世代品)でちゃんと直るのかも気になるところです。
この記事を書いている間にも並んでいる人がいると思うとがんばってください、としかいえなくなりますね・・・。
北國新聞でのぼんぼり祭りの扱いが
私は北國新聞を購読してはいないのですが、ぼんぼり祭りにいったときに総合案内所に北國新聞での宣伝記事が開かれていたのでちょっと驚いたので
とある経由でぼんぼり祭り前後の北國新聞を手に入れてみてみました。
明らかにでかすぎです。というか(ほぼ)2ページ分の開催告知+別ページのベタ記事に補助内容が、というのがすごいな、と思いました。
さすが金沢ローカルな新聞だな~という感想ですね。ちなみに祭りの次の日にもちゃんと写真付きでベタ記事になっていました。
ちなみに、金沢大学での学会ポスターにAngelBeats!が使われていて・・・を記事にしたのも北國新聞です。微妙に見てみたかった人です。