★ wanayoo — archive 1999 http://www.php.net/manual/ja/ref.mcrypt.phpNouvelle recherche | Portail wanayoo

PHP Home Page

Manual Table of Contents
Up to 関数リファレンス
Quick Reference
English version of this pageGerman version of this pageItalian version of this pageFrench version of this pageHungarian version of this page
関数リファレンス
* Apache
* Arrays
* Aspell
* BC math
* カレンダー
* CCVS
* COM
* クラス/オブジェクト
* ClibPDF
* CURL
* Cybercash
* dba
* 日付/時刻
* dBase
* DBM
* ディレクトリ
* Dyn.loading
* DOM XML
* filePro
* ファイルシステム
* FDF
* FTP
* gettext
* HTTP
* Hyperwave
* ICAP
* グラフィックス
* IMAP
* Informix
* InterBase
* LDAP
* Mail
* Math.
* MCAL
* mcrypt
* mhash
* MS SQL サーバー
* その他
* mSQL
* MySQL
* ネットワーク
* ODBC
* Oracle
* OCI8
* PDF
* Verisign Payflow Pro
* PHP オプション/情報
* POSIX
* PostgreSQL
* プログラムの実行
* Pspell
* readline
* Recode
* PCRE
* Regexps
* Semaphore
* セッション
* SWF
* SNMP
* 文字列
* Sybase
* URLs
* 変数
* Vmailmgr
* WDDX
* XML
* YAZ
* YP/NIS
* Zlib
Manual: Mcrypt暗号化関数
View the source code for this pageSearch the site



Previous page
 mcal_fetch_current_stream_event
 Updated
Mon, 14 Aug 2000
mcrypt_get_cipher_name 
Next page


XXXV. Mcrypt暗号化関数

ここで示す関数は、mcrypt を 使用して動作します。

この関数は、CBC, OFB, CFB ,ECB 暗号モードの DES,TripleDES,Blowfish (デフォルト),3-WAY, SAFER-SK64, SAFER-SK128, TWOFISH, TEA, RC2 ,GOST の ような広範なブロックアルゴリズムをサポートする mcrypt ライブラリへのインターフェースです。 加えて、"フリーではない" と思われるRC6 および IDEA もサポートします。

libmcrypt 2.4.xとリンクした場合、加えてブロックアルゴリズム: CAST, LOKI97, RIJNDAEL, SAFERPLUS, SERPENT および次のストリーム暗 号: ENIGMA (crypt), PANAMA, RC4 ,WAKE がサポートされます。 libmcrypt 2.4.x を使用した場合、暗号モード nOFB もサポートされます。

この拡張機能を使用するには、ここ から libmcrypt-x.x.tar.gz をダウンロードし、含まれているインストール用の 指示に従って下さい。この拡張機能を利用可能にするためには、 PHP を --with-mcrypt パラメータを 付けてコンパイルする必要があります。必ず、 --disable-posix-threadsを付けて libmcrypt をコンパイルして下さい。

mcrypt は、上に示した暗号を用いて暗号化および複合化を 行うことが可能です。libmcrypt-2.2.xとリンクした場合、4つの重要な mcrypt コマンド (mcrypt_cfb(), mcrypt_cbc(),mcrypt_ecb(), mcrypt_ofb()) は、MCRYPT_ENCRYPT および MCRYPT_DECRYPT という 2つのモードの両方で実行可能です。

例 1. 入力値を ECB モードの TripleDES で暗号化する


<?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_TripleDES, $key, $input, MCRYPT_ENCRYPT);
?>
     
この例では、$encrypted_data に文字列として暗号化されたデータが 返されます。

libmcrypt 2.4.x とリンクした場合、上記の関数も利用可能ですが、新し い関数を使用されることを推奨します。

例 2. ECBモードでTripleDESにより入力を暗号化する


<?php
$key = "this is a very secret key";
$input = "Let us meet at 9 o'clock at the secret place.";

$td = mcrypt_open_module (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);
?>
     
この例は、$encrypted_dataに文字列として暗号化さ れたデータを取得します。

mcryptは4つのブロック暗号モード(CBC, OFB, CFB, ECB)で実行可能です。 libmcrypt-2.4.xにリンクした場合、ブロック暗号モード nOFG とSTREAM モードでも実行可能です。MCRYPT_MODE_mode 形式を関数で使用する際に は、いくつかの制約があります。ここで、これらの各モードの通常の使用 法の概要を示します。詳細なリファレンスおよび議論に関しては、 Applied Cryptography by Schneier (ISBN 0-471-11709-9) を参照下さい。

  • ECB (electronic codebook) は、他のキーを暗号化するといった ランダムデータに適しています。 出力データは短くランダムであるという ECB の短所は、 都合の良い逆の効果を持っています。

  • CBC (cipher block chaining) は、特に、 ECB よりも著しく高いセキュリティで ファイルを暗号化する用途に適しています。

  • CFB (cipher feedback) は、1バイト毎に暗号化する必要がある バイトストリームを暗号化する際に最も適したモードです。

  • OFB (output feedback、8ビット形式) は CFB と互換性がありますが、 エラーの伝播が許容されないアプリケーションに使用することが可能 です。このモードは(8ビットモードで処理を行うため)安全ではなく、 使用は推奨されません。

  • nOFB (output feedback, n ビット形式) はOFB と互換ですが、 アルゴリズムのブロックサイズを変更可能なため、より安全です。

  • STREAM は、WAKE や RC4 のようないくつかのストリームアルゴリズム を読み込む追加のモードです。

PHP は、現在ビットストリームの暗号化/複合化をサポートしていません。 現在のところ、PHP は文字列の処理のみをサポートしています。

サポートされる暗号の完全なリストについては、mcrypt.h の define を 参照下さい。mcrypt-2.2.x API に関する一般的な規則は、MCRYPT_暗号名 でPHPから暗号をアクセス可能であるということです。mcrypt-2.4.x API についてもこれらの規則は成り立ちますが、 mcrypt_open_module() をコールする際に文字列で暗 号名を指定することも可能です。

以下に現在 mcrypt 拡張機能においてサポートされている暗号の簡単なリストを 示します。mcrypt がサポートする暗号がこのリストにのっていない場合、 このドキュメントが古いと仮定して下さい。

  • 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 のみ)

  • 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

  • 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 を渡すことができます。(このトピックに関する議論について は、Applied Cryptography by Schneier (ISBN 0-471-11709-9) の 9.3 章を参照下さい)

目次
mcrypt_get_cipher_name — 指定した暗号の名前を得る
mcrypt_get_block_size — 指定した暗号のブロックサイズを得る
mcrypt_get_key_size — 指定した暗号のキーの長さを得る
mcrypt_create_iv — 乱数ソースから初期化ベクトル(IV)を生成する
mcrypt_cbc — CBC モードでデータを暗号化/複合化する
mcrypt_cfb — CFB モードでデータを暗号化/複合化する
mcrypt_ecb — ECB モードでデータを暗号化/複合化する
mcrypt_ofb — OFB モードでデータを暗号化/複合化する
mcrypt_list_algorithms — サポートされる全ての暗号を配列として取得する
mcrypt_list_modes — サポートされる全てのモードの配列を取得する
mcrypt_get_iv_size — 指定した暗号/モードの組み合わせに属するIVの大きさを返す
mcrypt_encrypt — 指定したパラメータでプレーンテキストを暗号化する
mcrypt_decrypt — 指定したパラメータで暗号化されたテキストを複合化する
mcrypt_module_open — 使用するアルゴリズムおよびモードのモジュールをオープンする
mcrypt_generic_init — 暗号化に必要な全てのバッファを初期化する
mcrypt_generic — データを暗号化する
mdecrypt_generic — データを複合化する
mcrypt_generic_end — 暗号処理を終了する
mcrypt_enc_self_test — オープンしたモジュールのセルフテストを実行する
mcrypt_enc_is_block_algorithm_mode — オープンされたモードの暗号がブロックモードで動作するかどうかを調べる
mcrypt_enc_is_block_algorithm — オープンされたモードの暗号がブロックモードであるかどうかを調べる algorithm
mcrypt_enc_is_block_mode — オープンされたモードがブロック出力を行うかどうかを調べる
mcrypt_enc_get_block_size — オープンされたアルゴリズムのブロックサイズを返す
mcrypt_enc_get_key_size — オープンされたモードでサポートされる最大キー長を返す
mcrypt_enc_get_supported_key_sizes — オープンされたアルゴリズムでサポートされるキー長を配列で返す
mcrypt_enc_get_iv_size — オープンされたアルゴリズムのIVの大きさを返す
mcrypt_enc_get_algorithms_name — オープンされたアルゴリズムの名前を返す
mcrypt_enc_get_modes_name — オープンされたモードの名前を返す
mcrypt_module_self_test — 指定したモジュールのセルフテストを実行す�
mcrypt_module_is_block_algorithm_mode — 指定したモジュールがブロックアルゴリズムであるかどうかを返す
mcrypt_module_is_block_algorithm — 指定したアルゴリズムがブロックアルゴリズムであるかを調べる
mcrypt_module_is_block_mode — 指定したモードがブロック出力を行うかどうかを返す
mcrypt_module_get_algo_block_size — 指定したアルゴリズムのブロック長を返す
mcrypt_module_get_algo_key_size — オープンされたモードでサポートされる最大キー長を返す
mcrypt_module_get_algo_supported_key_sizes — オープンされたアルゴリズムでサポートされるキーのサイズを配列として返す

 About Notes


Previous page
 mcal_fetch_current_stream_event
 Updated
Mon, 14 Aug 2000
mcrypt_get_cipher_name 
Next page





Who's responsible for this?
Top of this page

Site
Hosting:



Located in
United States
Elements of this website are subject to copyright.
Questions about installing or using PHP should be directed to one of the mailing lists.
Only questions about the website should be directed to webmaster@php.net.