「AES暗号化ライブラリ」の続きです。
AES暗号化ライブラリが結構いい感じだったのでこれを使おうかと思いましたが、
最後にライセンスフリーで評判のBlowfishを試してみることにしました。
今更ですが、ライセンスフリーの暗号化方式と言えばBlowfishが有名でしたね。
すっかり忘れていました。
暗号化方式がライセンスフリーでも、実装(ライブラリ)の方がライセンスフリーであるとは限りません。というわけで実装を見てみることにします。
Bruce Schneier氏のサイトでソースコードが配布されています。C/C++は4つありますね。全部試してみましょう。
サンプルコードからライブラリを作るのは面倒ですので、最初からライブラリになっているものを使いたいと思います。
コードを見た限りで一番良いのは「C by Paul Kocher」ですが、ライセンスがLGPLというとても厳しいものになっています。
LGPLだと、静的リンクして実行形式のファイルを作ると、実行形式のファイルのソースコードを公開する必要があります。
しかし、私がいま作ろうと思っているもの(Bloglinesチャンネル)は、ソースコードの中に暗号化鍵が埋め込まれています。これを公開すると暗号化鍵がばれますので、公開できません。
ですので、残念ながら「C by Paul Kocher」は使えません。
残りの候補は、「C++ by Jim Conger」だけです。
バグがあることと、ライセンスが不明であることが気になるところですが、一応そのまま使えそうなのでこれを使おうと思います。
>C++ by Jim Congerのバグ
Blowfish_enciphe()では引数がDWORD型に、
Encode()では引数がunsigned char*型になっているので、
リトルエンディアンだとバイトオーダーがずれる。
これかなあ?
ご指摘ありがとうございます。
-----
もし著作物が『ライブラリ』とリ ンクされた実行形式ならば、著作物を完全かつ機械読み取り可能な「『ラ イブラリ』を利用する著作物」のオブジェクトコードあるいはソースコー ド(どちらかでも可) と一緒にし、ユーザが『ライブラリ』を改変した後 に再リンクして、改変された『ライブラリ』を含む改変された実行形式を 作成できるようにする
-----
ということですので、オブジェクトコードだけでも大丈夫なようですね。
少し気になったので、一言。
LGPLの第6節を読む限り、LGPLが原因で「実行形式のファイルのソースコードを公開する必要」はありません。もっとも、LGPLの第3節において許可される権利を行使した結果、GPLで配布するとなると話は別ですが。
http://www.opensource.gr.jp/lesser/lgpl.ja.html
と、いうような話をしなきゃならんあたりでGPL/LGPLは面倒くさいので、当方もBSDライセンスなコードはないかいな、と探しかけた口です。みんな、Codeを書いた人をRespectしようぜ、な世界であってほしいと思います。Give & TakeでFreeを訴えなければいけない世界は少し切ないです。
Posted by: minek : 2005年07月04日 06:13