Javaは安全実装

先日のDES暗号化処理の測定を引き続き。
Java純正で提供されるライブラリ(JCE)を使用して処理させてみた。
IVを渡して暗号化するサンプルが見つからなくて往生したけど、最終的にはどうにか。
出力ファイルのMD5が(M2Cryptoの結果と)合致するので、大丈夫でしょう。

ただ、テストとはいえ、48MByteの配列をメモリ上に展開するやっつけ実装という点が裏目に。

Javaで実行すると、VMjava.lang.OutOfMemoryErrorとか言って実行してくれない。
Pythonで動いているわけだから、実メモリが足りないということはなかろう、と。

調べてみるとVM自体が使用するメモリに上限が設けられているとのこと。
まぁ、この辺りが安全実装のゆえんでしょう。

ただ、あまりにも安全主義なので、めんどいという見方もあるにはある。

実行速度はM2Crypto比で4倍程度(M2Cryptoが4倍速い)
多分、JCEはPureJava実装なんだろうから、それを考えるとかなり検討しているというべきか。

(一応、Java6での測定結果です)