Mcrypt 暗号化関数とは? わかりやすく解説

Weblio 辞書 > 固有名詞の種類 > 製品 > コンピュータ > プログラミング言語 > PHP > Mcrypt 暗号化関数の意味・解説 

Mcrypt 暗号化関数

導入

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

要件

ここで示す関数は、» mcrypt を 使用して動作します。この拡張モジュールを使用するには、» http://mcrypt.sourceforge.net/ から libmcrypt-x.x.tar.gz をダウンロードし、含まれているインストール用の指示に従ってください。 Windows ユーザは、コンパイル済みの mcrypt バイナリを » http://ftp.emini.dk/pub/php/win32/mcrypt/ から入手することが可能です。
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 もサポートされます。

インストール手順

この拡張機能を利用可能にするためには、 PHP を --with-mcrypt パラメータを 付けてコンパイルする必要があります。DIR は mcrypt のインストール ディレクトリです。必ず、 --disable-posix-threadsを付けて libmcrypt をコンパイルするようにしてください。

実行時設定

php.ini の設定により動作が変化します。
表 159. Mcrypt 設定オプション
名前デフォルト変更の可否変更履歴
mcrypt.algorithms_dirNULLPHP_INI_ALLPHP 4.0.2 以降で使用可能です。
mcrypt.modes_dirNULLPHP_INI_ALLPHP 4.0.2 以降で使用可能です。

PHP_INI_* 定数の詳細および定義については 付録 G. php.ini ディレクティブ を参照してください。

リソース型

リソース型は定義されていません。

定義済み定数

以下の定数が定義されています。 この関数の拡張モジュールが PHP 組み込みでコンパイルされているか、 実行時に動的にロードされている場合のみ使用可能です。
mcryptは 4 つのブロック暗号モード(CBC, OFB, CFB, ECB)で実行可能です。 libmcrypt-2.4.x 以降にリンクした場合、ブロック暗号モード nOFG と STREAM モードでも実行可能です。MCRYPT_MODE_mode 形式を関数で使用する 際には、いくつかの制約があります。ここで、これらの各モードの通常の 使用法の概要を示します。詳細なリファレンスおよび議論に関しては、 Applied Cryptography by Schneier (ISBN 0-471-11709-9) を参照ください。
  • MCRYPT_MODE_ECB (electronic codebook) は、他のキーを暗号化すると いったランダムデータに適しています。出力データが短くランダムであると いう ECB の短所は、都合の良い逆の効果を持っています。
  • MCRYPT_MODE_CBC (cipher block chaining)は、特に、ECB よりも著しく 高いセキュリティでファイルを暗号化する用途に適しています。
  • MCRYPT_MODE_CFB (cipher feedback) は、1 バイト毎に暗号化する必要がある バイトストリームを暗号化する際に最も適したモードです。
  • MCRYPT_MODE_OFB (output feedback、8 ビット形式) はCFBと互換性が ありますが、エラーの伝播が許容されないアプリケーションに使用する ことが可能です。このモードは(8 ビットモードで処理を行うため)安全では なく、使用は推奨されません。
  • MCRYPT_MODE_NOFB (output feedback, nビット形式) は OFB と互換ですが、 アルゴリズムのブロックサイズを変更可能なため、より安全です。
  • MCRYPT_MODE_STREAM は、WAKE や RC4 のようないくつかのストリーム アルゴリズムを読み込む追加のモードです。

他のモードおよびランダムデバイス定数:
MCRYPT_ENCRYPT (integer)
MCRYPT_DECRYPT (integer)
MCRYPT_DEV_RANDOM (integer)
MCRYPT_DEV_URANDOM (integer)
MCRYPT_RAND (integer)

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

mcrypt は、上に示した暗号を用いて暗号化および復号化を 行うことが可能です。libmcrypt-2.2.xとリンクした場合、4つの重要な mcrypt コマンド (mcrypt_cfb(), mcrypt_cbc(),mcrypt_ecb(), mcrypt_ofb()) は、MCRYPT_ENCRYPT および MCRYPT_DECRYPT という 2つのモードの両方で実行可能です。 例 1189. 入力値を 2.2.x において ECB モードの TripleDES で暗号化する
<?php
$key = "this is a secret key";
$input = "Let us meet at 9 o'clock at the secret place.";

$encrypted_data = mcrypt_ecb (MCRYPT_3DES, $key, $input, MCRYPT_ENCRYPT);
?>

この例では、$encrypted_data に文字列として 暗号化されたデータが返されます。
libmcrypt 2.4.x または 2.5.x とリンクした場合、上記の関数も利用可能 ですが、新しい関数を使用されることを推奨します。 例 1190. 2.4.x 以降において ECB モードで TripleDES により入力を暗号化する
<?php
   $key = "this is a secret key";
   $input = "Let us meet at 9 o'clock at the secret place.";

   $td = mcrypt_module_open('tripledes', '', '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_deinit($td);
   mcrypt_module_close($td);
?>

この例は、$encrypted_data に文字列として 暗号化されたデータを取得します。詳細な例については、 mcrypt_module_open() を参照してください。

目次

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




固有名詞の分類


英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

Mcrypt 暗号化関数のお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



Mcrypt 暗号化関数のページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
PHP Documentation GroupPHP Documentation Group
Copyright © 1997 - 2024 by the PHP Documentation Group.

©2024 GRAS Group, Inc.RSS