Mcrypt 暗号化関数
mcrypt
&reftitle.intro;
この関数は、CBC, OFB, CFB, ECB 暗号モードの DES, TripleDES, Blowfish
(デフォルト), 3-WAY, SAFER-SK64, SAFER-SK128, TWOFISH, TEA, RC2
, GOST のような広範なブロックアルゴリズムをサポートする mcrypt
ライブラリへのインターフェースです。加えて、"フリーではない" と思われる
RC6 および IDEA もサポートします。
&reftitle.required;
ここで示す関数は、mcrypt を
使用して動作します。この拡張モジュールを使用するには、&url.mcrypt; から libmcrypt-x.x.tar.gz
をダウンロードし、含まれているインストール用の指示に従ってください。
Windows ユーザは、コンパイル済みの mcrypt バイナリを
&url.mcrypt.windows;
から入手することが可能です。
PHP 5.0.0 以降では、libmcrypt のバージョン 2.5.6 以降が必要です。
libmcrypt 2.4.x とリンクした場合、加えてブロックアルゴリズム:
CAST, LOKI97, RIJNDAEL, SAFERPLUS, SERPENT および次のストリーム暗号:
ENIGMA (crypt), PANAMA, RC4, WAKE がサポートされます。
libmcrypt 2.4.x を使用した場合、暗号モード nOFB もサポートされます。
&reference.mcrypt.configure;
&reference.mcrypt.ini;
&reftitle.resources;
&no.resource;
&reference.mcrypt.constants;
Mcrypt 暗号
以下に、mcrypt 拡張モジュールにより現在サポートされている暗号のリストを
示します。サポートされる暗号の完全なリストについては、
mcrypt.h の最後にある define を参照ください。
mcrypt-2.2.x API に関する一般的な規則は、
MCRYPT_暗号名で PHP から暗号をアクセス可能であるということです。
mcrypt-2.4.x および mcrypt-2.5.x の API についてもこれらの定数は
使用できますが、mcrypt_module_open を
コールする際に文字列で暗号名を指定することも可能です。
MCRYPT_3DES
MCRYPT_ARCFOUR_IV (libmcrypt > 2.4.x のみ)
MCRYPT_ARCFOUR (libmcrypt > 2.4.x のみ)
MCRYPT_BLOWFISH
MCRYPT_CAST_128
MCRYPT_CAST_256
MCRYPT_CRYPT
MCRYPT_DES
MCRYPT_DES_COMPAT (libmcrypt 2.2.x only)
MCRYPT_ENIGMA (libmcrypt > 2.4.x のみ、
MCRYPT_CRYPTへのエイリアス)
MCRYPT_GOST
MCRYPT_IDEA (non-free)
MCRYPT_LOKI97 (libmcrypt > 2.4.x のみ)
MCRYPT_MARS (libmcrypt > 2.4.xのみ, non-free)
MCRYPT_PANAMA (libmcrypt > 2.4.xのみ)
MCRYPT_RIJNDAEL_128 (libmcrypt > 2.4.xのみ)
MCRYPT_RIJNDAEL_192 (libmcrypt > 2.4.xのみ)
MCRYPT_RIJNDAEL_256 (libmcrypt > 2.4.xのみ)
MCRYPT_RC2
MCRYPT_RC4 (libmcrypt 2.2.xのみ)
MCRYPT_RC6 (libmcrypt > 2.4.xのみ)
MCRYPT_RC6_128 (libmcrypt 2.2.xのみ)
MCRYPT_RC6_192 (libmcrypt 2.2.xのみ)
MCRYPT_RC6_256 (libmcrypt 2.2.xのみ)
MCRYPT_SAFER64
MCRYPT_SAFER128
MCRYPT_SAFERPLUS (libmcrypt > 2.4.xのみ)
MCRYPT_SERPENT(libmcrypt > 2.4.xのみ)
MCRYPT_SERPENT_128 (libmcrypt 2.2.xのみ)
MCRYPT_SERPENT_192 (libmcrypt 2.2.xのみ)
MCRYPT_SERPENT_256 (libmcrypt 2.2.xのみ)
MCRYPT_SKIPJACK (libmcrypt > 2.4.xのみ)
MCRYPT_TEAN (libmcrypt 2.2.xのみ)
MCRYPT_THREEWAY
MCRYPT_TRIPLEDES (libmcrypt > 2.4.xのみ)
MCRYPT_TWOFISH (mcrypt 2.x より古いバージョン、
またはmcrypt > 2.4.xの場合)
MCRYPT_TWOFISH128 (TWOFISHxxx は 2.x の新しいバージョンで使用可能ですが、2.4.x では使用できません)
MCRYPT_TWOFISH192
MCRYPT_TWOFISH256
MCRYPT_WAKE (libmcrypt > 2.4.xのみ)
MCRYPT_XTEA (libmcrypt > 2.4.xのみ)
(CFB および OFB モードでは)それぞれの暗号関数に初期化ベクトル(IV)
を指定する必要があり、(CBC モードでは)IV を指定することが可能です。
IV はユニークである必要があり、暗号化/復号化の際に同じである
必要があります。暗号化されて保存されたデータの場合、関数の出力を
(ファイル名の MD5 キーのように) 保存されたデータの位置を表す
インデックスとして使用することができます。もしくは、暗号化された
データと共に IV を渡すことができます(このトピックに関する議論については、
&book.applied.cryptography; の 9.3 章を参照ください)。
&reftitle.examples;
mcrypt は、上に示した暗号を用いて暗号化および復号化を
行うことが可能です。libmcrypt-2.2.xとリンクした場合、4つの重要な
mcrypt コマンド (mcrypt_cfb,
mcrypt_cbc,mcrypt_ecb,
mcrypt_ofb) は、MCRYPT_ENCRYPT および
MCRYPT_DECRYPT という 2つのモードの両方で実行可能です。
入力値を 2.2.x において ECB モードの TripleDES で暗号化する
]]>
この例では、$encrypted_data に文字列として
暗号化されたデータが返されます。
libmcrypt 2.4.x または 2.5.x とリンクした場合、上記の関数も利用可能
ですが、新しい関数を使用されることを推奨します。
2.4.x 以降において ECB モードで TripleDES により入力を暗号化する
]]>
この例は、$encrypted_data に文字列として
暗号化されたデータを取得します。詳細な例については、
mcrypt_module_open を参照してください。
&reference.mcrypt.functions;