Crypt-Rijndael-0.05 > Crypt::Rijndael

名前

Crypt::Rijndael - Crypt::CBC対応のRijndael暗号化モジュール

概要

 use Crypt::Rijndael;

 # keysize() は32, しかし24 と 16も可能です
 # blocksize() は 16です

 $cipher = new Crypt::Rijndael "a" x 32, Crypt::Rijndael::MODE_CBC;

 $cipher->set_iv($iv);
 $crypted = $cipher->encrypt($plaintext);
 # - あるいは -
 $plaintext = $cipher->decrypt($crypted);

説明

このモジュールは、次世代暗号化標準(Advanced Encryption Standard)として 選ばれたばかりのRijndael暗号を実装します。

keysize

キーサイズを返します。これは32(バイト)です。Rijndael暗号は 実際には16、24または32バイトをサポートします。しかし Crypt::CBCと、これを通信する方法がありません。

blocksize

アルゴリズムは実際には、我々のバイト数の倍数である任意の ブロックサイズをサポートしていますが、 Rijndaelのためのブロックサイズは16バイト(128ビット)です。 しかしながら、128ビットはAES指定のブロックサイズです。 そのためこれが私たちはサポートする全てです。

$cipher = new $key [, $mode]

与えられたキー(長さが128、192あるいは256ビットでなければなりません)で 新しいCrypt::Rijndael暗号オブジェクトを作成します。 追加の$mode引数は暗号化モードです。 MODE_ECB (electronic codebook mode, デフォルト)、 MODE_CBC (cipher block chaining, Crypt::CBCが行うのと同じ)、 MODE_CFB (128-bit cipher feedback)、MODE_OFB (128-bit output feedback)、 あるいはMODE_CTR (counter mode)のいずれかになります。

ECBは非常に安全ではありません(なぜかわからなければ暗号法についての本を 読んでください!)、そのためおそらくはCBCモードを使うべきでしょう。

$cipher->set_iv($iv)

連鎖モードにより利用される初期値ベクトルを変更します。 これはECBモードには関係ありません。

$cipher->encrypt($data)

データを暗号化します。$dataの大きさはblocksize(16バイト)の 倍数でなければなりません。そうでなければ、この関数はcroakします。 それを別にすれば、それは(ほとんど)任意の長さにすることができます。

$cipher->decrypt($data)

$dataを復号化します。

参考資料

  Crypt::CBC, http://www.csrc.nist.gov/encryption/aes/

バグ

定数MODEをEXPORTあるいはEXPORT_OKしなければなりません。

作者(=AUTHOR)

 Rafael R. Sevilla <sevillar@team.ph.inter.net>

 The Rijndael Algorithm was developed by Vincent Rijmen and Joan Daemen,
 and has been selected as the US Government's Advanced Encryption Standard.

翻訳者

川合孝典 (GCD00051@nifty.ne.jp)