名前¶
Crypt::CAST5 - CAST5ブロック暗号
概要¶
use Crypt::CBC;
my $crypt = Crypt::CBC->new({
key => "secret key",
cipher => "CAST5",
});
my $message = "All mimsy were the borogoves";
my $ciphertext = $crypt->encrypt($message);
print unpack("H*", $ciphertext), "\n";
my $plaintext = $crypt->decrypt($ciphertext);
print $plaintext, "\n";
説明¶
このモジュールはCAST5ブロック暗号の速度を上げるためのコンパイルされた Cコードを使った実装を提供します。CAST5はCAST-128としても知られています。 それはC. Adams と S. Tavaresによって開発されたCAST設計手順の製品です。
CAST5暗号はロイヤルティーフリー(royalty-free)で利用することができます。
関数¶
blocksize¶
CAST5ブロック・サイズを返します。それは8バイトです。この関数は Crypt::CAST5がCrypt::CBCで機能できるようにするため存在します。
keysize¶
CAST5キー・サイズの最大長、16バイトを返します。
new¶
$cast5 = Crypt::CAST5->new($key);
新しい暗号オブジェクトを作成します。もしオプションのkeyパラメータが与えられると、 それをinit()関数に渡します。
init¶
$cast5->init($key);
使用する暗号キーを設定あるいは変更します。鍵(key)の長さは40ビット(5バイト)から 128ビット(16バイト)でなければなりません。使用される鍵が80ビット以下であると 暗号化と復号化が多少速くなることに注意してください。
鍵は、パスワードのように印字可能なものではなく、ランダムなバイナリデータに するのはとてもよいことです。パスワードを暗号鍵に変換するためには メッセージ・ダイジェスト関数が便利でしょう;Digest::SHA1 や Digest::MD5を ご覧ください。Crypt::CBCは実際の暗号鍵を得るために、与えられた"鍵"をMD5に 通すことに注意してください。
encrypt¶
$ciphertext = $cast5->encrypt($plaintext);
現在の暗号鍵を使って平文(plaintext)のブロックを暗号化し、対応する 暗号文(ciphertext)を返します。入力の長さは8バイトでなければなりません。そして 出力も同じ長さになります。暗号化がECBモードであることに注意してください。 つまり各ブロックを別々に暗号化します。このままでは辞書攻撃(dictionary attack)に 対して脆弱なままです。そのため一般的には何らかのブロック間の連鎖を使うことが とてもよいことです;Crypt::CBCをご覧ください。
decrypt¶
$plaintext = $cast5->decrypt($ciphertext);
暗号文(cipertext)を復号化し、対応する平文(plaintext)を返します。
参考資料¶
RFC 2144, "The CAST-128 Encryption Algorithm", C. Adams, May 1997
作者¶
Bob Mathews, <[email protected]>
著作権およびライセンス(=COPYRIGHT AND LICENSE)¶
Copyright (C) 2002 Bob Mathews
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
翻訳者¶
川合孝典 ([email protected])