mirror of
https://github.com/php/doc-ja.git
synced 2026-04-28 18:43:16 +02:00
255161cefc
Thanks to Tetsuji Koyama. git-svn-id: https://svn.php.net/repository/phpdoc/ja/trunk@100416 c90b9560-bf6c-de11-be94-00142212c4b1
389 lines
12 KiB
XML
389 lines
12 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<!-- $Revision: 1.3 $ -->
|
|
<reference id="ref.mcrypt">
|
|
<title>Mcrypt暗号化関数</title>
|
|
<titleabbrev>mcrypt</titleabbrev>
|
|
|
|
<partintro>
|
|
<para>
|
|
ここで示す関数は、<ulink url="&url.mcrypt;">mcrypt</ulink> を
|
|
使用して動作します。
|
|
</para>
|
|
<para>
|
|
この関数は、CBC, OFB, CFB ,ECB 暗号モードのDES,TripleDES,Blowfish
|
|
(デフォルト),3-WAY, SAFER-SK64, SAFER-SK128, TWOFISH, TEA, RC2
|
|
,GOST のような広範なブロックアルゴリズムをサポートするmcryptライブ
|
|
ラリへのインターフェースです。加えて、"フリーではない" と思われる
|
|
RC6 および IDEA もサポートします。
|
|
</para>
|
|
<para>
|
|
libmcrypt 2.4.xとリンクした場合、加えてブロックアルゴリズム:
|
|
CAST, LOKI97, RIJNDAEL, SAFERPLUS, SERPENT および次のストリーム暗
|
|
号: ENIGMA (crypt), PANAMA, RC4 ,WAKE がサポートされます。
|
|
libmcrypt 2.4.x を使用した場合、暗号モード nOFB もサポートされます。
|
|
</para>
|
|
<para>
|
|
この拡張機能を使用するには、<ulink url="&url.mcrypt;">ここ</ulink> から
|
|
libmcrypt-x.x.tar.gz をダウンロードし、含まれているインストール用の
|
|
指示に従って下さい。この拡張機能を利用可能にするためには、
|
|
PHP を <option role="configure">--with-mcrypt</option> パラメータを
|
|
付けてコンパイルする必要があります。必ず、
|
|
<option role="configure">--disable-posix-threads</option>を付けて
|
|
libmcrypt をコンパイルして下さい。
|
|
</para>
|
|
<para>
|
|
mcrypt は、上に示した暗号を用いて暗号化および復号化を
|
|
行うことが可能です。libmcrypt-2.2.xとリンクした場合、4つの重要な
|
|
mcrypt コマンド (<function>mcrypt_cfb</function>,
|
|
<function>mcrypt_cbc</function>,<function>mcrypt_ecb</function>,
|
|
<function>mcrypt_ofb</function>) は、MCRYPT_ENCRYPT および
|
|
MCRYPT_DECRYPT という 2つのモードの両方で実行可能です。
|
|
<example>
|
|
<title>入力値を2.2.xにおいて ECB モードの TripleDES で暗号化する</title>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
$key = "this is a very secret key";
|
|
$input = "Let us meet at 9 o'clock at the secret place.";
|
|
|
|
$encrypted_data = mcrypt_ecb (MCRYPT_3DES, $key, $input, MCRYPT_ENCRYPT);
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
</example>
|
|
この例では、<literal>$encrypted_data</literal>に文字列として暗号化
|
|
されたデータが返されます。
|
|
</para>
|
|
<para>
|
|
libmcrypt 2.4.x とリンクした場合、上記の関数も利用可能ですが、新し
|
|
い関数を使用されることを推奨します。
|
|
<example>
|
|
<title>2.4.xにおいてECBモードでTripleDESにより入力を暗号化する</title>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
$key = "this is a very secret key";
|
|
$input = "Let us meet at 9 o'clock at the secret place.";
|
|
|
|
$td = mcrypt_module_open (MCRYPT_TripleDES, "", MCRYPT_MODE_ECB, "");
|
|
$iv = mcrypt_create_iv (mcrypt_enc_get_iv_size ($td), MCRYPT_RAND);
|
|
mcrypt_generic_init ($td, $key, $iv);
|
|
$encrypted_data = mcrypt_generic ($td, $input);
|
|
mcrypt_generic_end ($td);
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
</example>
|
|
この例は、<literal>$encrypted_data</literal>に文字列として暗号化さ
|
|
れたデータを取得します。
|
|
</para>
|
|
<para>
|
|
mcryptは4つのブロック暗号モード(CBC, OFB, CFB, ECB)で実行可能です。
|
|
libmcrypt-2.4.xにリンクした場合、ブロック暗号モード nOFG とSTREAM
|
|
モードでも実行可能です。MCRYPT_MODE_mode 形式を関数で使用する際に
|
|
は、いくつかの制約があります。ここで、これらの各モードの通常の使用
|
|
法の概要を示します。詳細なリファレンスおよび議論に関しては、
|
|
&book.applied.cryptography; を参照下さい。
|
|
<itemizedlist>
|
|
<listitem>
|
|
<simpara>
|
|
ECB (electronic codebook) は、他のキーを暗号化するといった
|
|
ランダムデータに適しています。
|
|
出力データは短くランダムであるという ECB の短所は、
|
|
都合の良い逆の効果を持っています。
|
|
</simpara>
|
|
</listitem>
|
|
<listitem>
|
|
<simpara>
|
|
CBC (cipher block chaining) は、特に、
|
|
ECB よりも著しく高いセキュリティで
|
|
ファイルを暗号化する用途に適しています。
|
|
</simpara>
|
|
</listitem>
|
|
<listitem>
|
|
<simpara>
|
|
CFB (cipher feedback) は、1バイト毎に暗号化する必要がある
|
|
バイトストリームを暗号化する際に最も適したモードです。
|
|
</simpara>
|
|
</listitem>
|
|
<listitem>
|
|
<simpara>
|
|
OFB (output feedback、8ビット形式) は CFB と互換性がありますが、
|
|
エラーの伝播が許容されないアプリケーションに使用することが可能
|
|
です。このモードは(8ビットモードで処理を行うため)安全ではなく、
|
|
使用は推奨されません。
|
|
</simpara>
|
|
</listitem>
|
|
<listitem>
|
|
<simpara>
|
|
nOFB (output feedback, n ビット形式) はOFB と互換ですが、
|
|
アルゴリズムのブロックサイズを変更可能なため、より安全です。
|
|
</simpara>
|
|
</listitem>
|
|
<listitem>
|
|
<simpara>
|
|
STREAM は、WAKE や RC4 のようないくつかのストリームアルゴリズム
|
|
を読み込む追加のモードです。
|
|
</simpara>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</para>
|
|
<para>
|
|
PHP は、現在ビットストリームの暗号化/複合化をサポートしていません。
|
|
現在のところ、PHP は文字列の処理のみをサポートしています。
|
|
</para>
|
|
<para>
|
|
サポートされる暗号の完全なリストについては、mcrypt.h の define を
|
|
参照下さい。mcrypt-2.2.x API に関する一般的な規則は、MCRYPT_暗号名
|
|
でPHPから暗号をアクセス可能であるということです。mcrypt-2.4.x API
|
|
についてもこれらの規則は成り立ちますが、
|
|
<function>mcrypt_module_open</function> をコールする際に文字列で暗
|
|
号名を指定することも可能です。
|
|
</para>
|
|
<para>
|
|
以下に現在 mcrypt 拡張機能においてサポートされている暗号の簡単なリストを
|
|
示します。mcrypt がサポートする暗号がこのリストにのっていない場合、
|
|
このドキュメントが古いと仮定して下さい。
|
|
<itemizedlist>
|
|
<listitem>
|
|
<simpara>
|
|
MCRYPT_3DES
|
|
</simpara>
|
|
</listitem>
|
|
<listitem>
|
|
<simpara>
|
|
MCRYPT_ARCFOUR_IV (libmcrypt 2.4.x のみ)
|
|
</simpara>
|
|
</listitem>
|
|
<listitem>
|
|
<simpara>
|
|
MCRYPT_ARCFOUR (libmcrypt 2.4.x のみ)
|
|
</simpara>
|
|
</listitem>
|
|
<listitem>
|
|
<simpara>
|
|
MCRYPT_BLOWFISH
|
|
</simpara>
|
|
</listitem>
|
|
<listitem>
|
|
<simpara>
|
|
MCRYPT_CAST_128
|
|
</simpara>
|
|
</listitem>
|
|
<listitem>
|
|
<simpara>
|
|
MCRYPT_CAST_256
|
|
</simpara>
|
|
</listitem>
|
|
<listitem>
|
|
<simpara>
|
|
MCRYPT_CRYPT
|
|
</simpara>
|
|
</listitem>
|
|
<listitem>
|
|
<simpara>
|
|
MCRYPT_DES
|
|
</simpara>
|
|
</listitem>
|
|
<listitem>
|
|
<simpara>
|
|
MCRYPT_DES_COMPAT (libmcrypt 2.2.x のみ)
|
|
</simpara>
|
|
</listitem>
|
|
<listitem>
|
|
<simpara>
|
|
MCRYPT_ENIGMA (libmcrypt 2.4.x のみ, MCRYPT_CRYPTへのエイリアス)
|
|
</simpara>
|
|
</listitem>
|
|
<listitem>
|
|
<simpara>
|
|
MCRYPT_GOST
|
|
</simpara>
|
|
</listitem>
|
|
<listitem>
|
|
<simpara>
|
|
MCRYPT_IDEA (non-free)
|
|
</simpara>
|
|
</listitem>
|
|
<listitem>
|
|
<simpara>
|
|
MCRYPT_LOKI97 (libmcrypt 2.4.x のみ)
|
|
</simpara>
|
|
</listitem>
|
|
<listitem>
|
|
<simpara>
|
|
MCRYPT_MARS (libmcrypt 2.4.x のみ, non-free)
|
|
</simpara>
|
|
</listitem>
|
|
<listitem>
|
|
<simpara>
|
|
MCRYPT_PANAMA (libmcrypt 2.4.x のみ)
|
|
</simpara>
|
|
</listitem>
|
|
<listitem>
|
|
<simpara>
|
|
MCRYPT_RIJNDAEL_128 (libmcrypt 2.4.x のみ)
|
|
</simpara>
|
|
</listitem>
|
|
<listitem>
|
|
<simpara>
|
|
MCRYPT_RIJNDAEL_192 (libmcrypt 2.4.x のみ)
|
|
</simpara>
|
|
</listitem>
|
|
<listitem>
|
|
<simpara>
|
|
MCRYPT_RIJNDAEL_256 (libmcrypt 2.4.x のみ)
|
|
</simpara>
|
|
</listitem>
|
|
<listitem>
|
|
<simpara>
|
|
MCRYPT_RC2
|
|
</simpara>
|
|
</listitem>
|
|
<listitem>
|
|
<simpara>
|
|
MCRYPT_RC4 (libmcrypt 2.2.x のみ)
|
|
</simpara>
|
|
</listitem>
|
|
<listitem>
|
|
<simpara>
|
|
MCRYPT_RC6 (libmcrypt 2.4.x のみ)
|
|
</simpara>
|
|
</listitem>
|
|
<listitem>
|
|
<simpara>
|
|
MCRYPT_RC6_128 (libmcrypt 2.2.x のみ)
|
|
</simpara>
|
|
</listitem>
|
|
<listitem>
|
|
<simpara>
|
|
MCRYPT_RC6_192 (libmcrypt 2.2.x のみ)
|
|
</simpara>
|
|
</listitem>
|
|
<listitem>
|
|
<simpara>
|
|
MCRYPT_RC6_256 (libmcrypt 2.2.x のみ)
|
|
</simpara>
|
|
</listitem>
|
|
<listitem>
|
|
<simpara>
|
|
MCRYPT_SAFER64
|
|
</simpara>
|
|
</listitem>
|
|
<listitem>
|
|
<simpara>
|
|
MCRYPT_SAFER128
|
|
</simpara>
|
|
</listitem>
|
|
<listitem>
|
|
<simpara>
|
|
MCRYPT_SAFERPLUS (libmcrypt 2.4.x のみ)
|
|
</simpara>
|
|
</listitem>
|
|
<listitem>
|
|
<simpara>
|
|
MCRYPT_SERPENT (libmcrypt 2.4.x のみ)
|
|
</simpara>
|
|
</listitem>
|
|
<listitem>
|
|
<simpara>
|
|
MCRYPT_SERPENT_128 (libmcrypt 2.2.x のみ)
|
|
</simpara>
|
|
</listitem>
|
|
<listitem>
|
|
<simpara>
|
|
MCRYPT_SERPENT_192 (libmcrypt 2.2.x のみ)
|
|
</simpara>
|
|
</listitem>
|
|
<listitem>
|
|
<simpara>
|
|
MCRYPT_SERPENT_256 (libmcrypt 2.2.x のみ)
|
|
</simpara>
|
|
</listitem>
|
|
<listitem>
|
|
<simpara>
|
|
MCRYPT_SKIPJACK (libmcrypt 2.4.x のみ)
|
|
</simpara>
|
|
</listitem>
|
|
<listitem>
|
|
<simpara>
|
|
MCRYPT_TEAN (libmcrypt 2.2.x のみ)
|
|
</simpara>
|
|
</listitem>
|
|
<listitem>
|
|
<simpara>
|
|
MCRYPT_THREEWAY
|
|
</simpara>
|
|
</listitem>
|
|
<listitem>
|
|
<simpara>
|
|
MCRYPT_TRIPLEDES (libmcrypt 2.4.x のみ)
|
|
</simpara>
|
|
</listitem>
|
|
<listitem>
|
|
<simpara>
|
|
MCRYPT_TWOFISH (以前のバージョン mcrypt 2.x または、mcrypt 2.4.x 用)
|
|
</simpara>
|
|
</listitem>
|
|
<listitem>
|
|
<simpara>
|
|
MCRYPT_TWOFISH128 (TWOFISHxxx は 2.x より新しいバージョンで利用
|
|
可能ですが、2.4.x バージョンでは利用不可)
|
|
</simpara>
|
|
</listitem>
|
|
<listitem>
|
|
<simpara>
|
|
MCRYPT_TWOFISH192
|
|
</simpara>
|
|
</listitem>
|
|
<listitem>
|
|
<simpara>
|
|
MCRYPT_TWOFISH256
|
|
</simpara>
|
|
</listitem>
|
|
<listitem>
|
|
<simpara>
|
|
MCRYPT_WAKE (libmcrypt 2.4.x のみ)
|
|
</simpara>
|
|
</listitem>
|
|
<listitem>
|
|
<simpara>
|
|
MCRYPT_XTEA (libmcrypt 2.4.x のみ)
|
|
</simpara>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</para>
|
|
<para>
|
|
CFB および OFBモードでは、それぞれの暗号関数に初期化ベクトル(IV)
|
|
を指定する必要があり、CBCモードではIVを指定することが可能です。
|
|
IV は、ユニークである必要があり、暗号化/複合化の際に同じである
|
|
必要があります。暗号化されて保存されたデータの場合、関数の出力を
|
|
(ファイル名の MD5 キーのように) 保存されたデータの位置を表す
|
|
インデックスとして使用することができます。もしくは、暗号化されたデー
|
|
タと共にIV を渡すことができます。(このトピックに関する議論について
|
|
は、&book.applied.cryptography; の 9.3 章を参照下さい)
|
|
</para>
|
|
</partintro>
|
|
|
|
&reference.mcrypt.functions;
|
|
|
|
</reference>
|
|
<!-- Keep this comment at the end of the file
|
|
Local variables:
|
|
mode: sgml
|
|
sgml-omittag:t
|
|
sgml-shorttag:t
|
|
sgml-minimize-attributes:nil
|
|
sgml-always-quote-attributes:t
|
|
sgml-indent-step:1
|
|
sgml-indent-data:t
|
|
indent-tabs-mode:nil
|
|
sgml-parent-document:nil
|
|
sgml-default-dtd-file:"../../../manual.ced"
|
|
sgml-exposed-tags:nil
|
|
sgml-local-catalogs:nil
|
|
sgml-local-ecat-files:nil
|
|
End:
|
|
-->
|
|
|