名前¶
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
を復号化します。
参考資料¶
L<Crypt::CBC>, http://www.csrc.nist.gov/encryption/aes/
バグ¶
定数MODEをEXPORTあるいはEXPORT_OKしなければなりません。
作者(=AUTHOR)¶
Rafael R. Sevilla <[email protected]>
The Rijndael Algorithm was developed by Vincent Rijmen and Joan Daemen,
and has been selected as the US Government's Advanced Encryption Standard.
翻訳者¶
川合孝典 ([email protected])