[PHP-dev 1239] NTT製Camelliaのモジュール
hdtank
hdtank @ gmail.com
2006年 4月 16日 (日) 01:43:54 JST
清水といいます。
NTT製BSD-VersionのCamellia opensourceを
PHPスクリプトから使用するための拡張モジュールを作ってみました。
環境:
PHP5.1.x用
32ビットCPU
クラス
Camellia
メソッド
object Camellia::__construct(string $rawKey);
string Camellia::encryptBlock(string $string);
string Camellia::decryptBlock(string $encrypted);
string Camellia::encryptString(string $string);
string Camellia::decryptString(string $encrypted);
object Camellia::__construct(string $rawKey);
$rawKeyは128ビット、192ビット、256ビット文字列。
Lengthがそのまま128, 192, 256のいずれかの
CamelliaのrawKeyLengthになり、そのまま対応する
キーテーブルをスクリプト側からはアクセス不可能な
キーテーブルを作成します。
それ以外の長さの文字列が渡された場合は
インスタンスの消滅を行い、NULLが返ります。
例:
$camellia = new Camellia(md5($_SERVER['REMOTE_ADDR']));
rawKeyLength = 256ビット
$camelliaはインスタンス
$camellia = new Camellia("hoge");
$camelliaはNULL
string Camellia::encryptBlock(string $string);
string Camellia::decryptBlock(string $encrypted);
最初の128ビットまたはそれ以下の文字列を
Encrypt、Decryptします。
Camellia opensourceのみ128ビットまでの文字しか
サポートしていないので、試験的&役に立つかどうか微妙ですが
二つほどメソッドを追加しました。
string Camellia::encryptString(string $string);
128ビット以上の文字列をシーケンシャルにEncryptします。
string Camellia::decryptString(string $encrypted);
上記encryptStringで得た文字列をdecryptします。
TODO&Caution
1.64ビットCPUへの対応はしていませんので、32ビットCPUで。
2.Camelliaでエンクリプトされたビットには
コントロールコードが入る場合もありますので
HTTPクライアントなどに送る場合にはbase64などをかけないと
正常に動作しないかもしれません。
ダウンロード
http://www.veax.net/camellia/
法的な制限
https://info.isl.ntt.co.jp/crypt/camellia/source_s.html
があるので、現状では
IP->HOST->.jpをチェックしています。
ビルド
extディレクトリにCamelliaディレクトリをコピー
phpize
./configure --enable-camellia
make
make install
PHP-dev メーリングリストの案内