Crypt-CAST5-0.02 > Crypt::CAST5

名前

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::SHA1Digest::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

Crypt::CBC

作者

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])