<?xml version='1.0' encoding='utf-8'?>
<pod xmlns="http://axkit.org/ns/2000/pod2xml">
<head>
	<title>名前</title>
</head>
<sect1>
<title>名前</title>
<para>
Crypt::CFB - Cipher Feedback Modeでデータを暗号化します
</para>
</sect1>
<sect1>
<title>概要</title>
<verbatim><![CDATA[
use Crypt::CFB;
]]></verbatim>
<verbatim><![CDATA[
my $cipher = new Crypt::CFB $key, 'Crypt::Rijndael';
]]></verbatim>
<verbatim><![CDATA[
my $ciphertext = $cipher->encrypt($plaintext);
my $plaintext = $cipher->decrypt($ciphertext);
]]></verbatim>
<verbatim><![CDATA[
my $cipher2 = new Crypt::CFB $key, 'Digest::MD5';
]]></verbatim>
<verbatim><![CDATA[
$ciphertext = $cipher->encrypt($plaintext);
$plaintext = $cipher->decrypt($ciphertext);
]]></verbatim>
</sect1>
<sect1>
<title>説明</title>
<para>
pure Perlな汎用的なCFB実装。
Cipher Feedback Modeモジュールはブロック暗号や暗号化ハッシュ
関数からストリーム暗号を組み立て、オブジェクトとして返します。
それが<code>blocksize</code>と<code>keysize</code>メソッドをサポートするのであれば、
<code>Crypt::</code>クラスにある全てのブロック暗号を使うことが出来ます。
それが<code>add</code>メソッドをサポートするのであれば、
<code>Digest::</code>クラスにある全てのハッシュ関数を使うことが出来ます。
</para>
</sect1>
<sect1>
<title>メソッド</title>
<list>
<item><itemtext><code>$cipher = new Crypt::CFB $key, $algorithm</code></itemtext>
<para>
CFBオブジェクトを組み立てます。<code>$algorithm</code>がブロック暗号であれば、
<code>$key</code>はその暗号に対しての正しい大きさでなければなりません。
ほとんどの場合、<code>keysize</code>メソッドを呼び出すことにより、ブロック暗号
モジュールに尋ねることができます。<code>$algorithm</code>がハッシュ関数(<code>Digest::</code>)で
あれば、<code>$key</code>はどのような大きさにもすることができます。
</para>
</item>
<item><itemtext><code>$ciphertext = $cipher-&gt;encrypt $plaintext</code></itemtext>
<para>
<code>$plaintext</code>を暗号化します。入力はCFBオブジェクトの初期状態から生成される
キーストリームでXORされ、その状態は出力で更新されます。<code>$plaintext</code>は
どのような大きさにもすることが出来ます。
</para>
</item>
<item><itemtext><code>$cipher-&gt;reset</code></itemtext>
<para>
初期状態をリセットします。同じオブジェクトを使うのであれば、
復号化する前に、これを行うことを忘れないでください。
</para>
</item>
<item><itemtext><code>$plaintext = $cipher-&gt;decrypt $ciphertext</code></itemtext>
<para>
<code>$ciphertext</code>を復号化します。
</para>
</item>
</list>
</sect1>
<sect1>
<title>バグ</title>
<para>
これは恐ろしいほど遅いです。<code>Digest::</code>のいくつかのクラスは
<code>add</code>メソッドを提供しないので、それらは失敗します。実装は
ちょっとだけ凝っています。
</para>
</sect1>
<sect1>
<title>作者</title>
<para>
Matthias Bauer &lt;matthiasb@acm.org&gt;
</para>
</sect1>
<sect1>
<title>翻訳者</title>
<para>
川合孝典 (GCD00051@nifty.ne.jp)
</para>
</sect1>
</pod>
