PHP マニュアル
前のページ |  | 次のページ

# mcrypt_module_open

(PHP 4 >= 4.0.2, PHP 5)

mcrypt_module_open -- 使用するアルゴリズムおよびモードのモジュールをオープンする

## 説明

resource mcrypt_module_open ( string algorithm, string algorithm_directory, string mode, string mode_directory )

この関数は、使用するアルゴリズムおよびモードのモジュールをオープン します。アルゴリズム名は、"twofish" または定数 MCRYPT_暗号名により algorithm で指定します。 ライブラリは mcrypt_module_close() をコールする ことによりクローズされます。通常、この関数は暗号化記述子を返し、 エラーの際に `FALSE` を返します。

暗号化モジュールの位置を指定する際には algorithm_directory および mode_directory が使用されます。 ディレクトリ名を指定した場合には、これが使用されます。 これらの一つに空の文字列("")を指定した場合、ini ディエクティブの mcrypt.algorithms_dir または mcrypt.modes_dir に設定された値が使用されます。 これらが設定されていない場合、libmcrypt をコンパイルした際の デフォルトのディレクトリ (通常は/usr/local/lib/libmcrypt)が 使用されます。

例 1. mcrypt_module_open() の例
`<?php $td = mcrypt_module_open(MCRYPT_DES, '', MCRYPT_MODE_ECB, '/usr/lib/mcrypt-modes'); $td = mcrypt_module_open('rijndael-256', '', 'ofb', ''); ?>`

上の例の最初の行では、デフォルトのディレクトリから DES 暗号化を、 そして `/usr/lib/mcrypt-modes` から EBC モードの オープンを試みます。2 行目の例では暗号化形式とモードを文字列で 指定しています。これは、libmcrypt 2.4.x あるいは 2.5.x に対して 拡張モジュールがリンクされている場合にのみ使用可能です。

例 2. mcrypt_module_open() を暗号化で使用する
`<?php /* 暗号モジュールをオープンします */ $td = mcrypt_module_open('rijndael-256', '', 'ofb', ''); /* IV を作成し、キー長を定義します。Windows では、かわりに * MCRYPT_RAND を使用します */ $iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_DEV_RANDOM); $ks = mcrypt_enc_get_key_size($td); /* キーを作成します */ $key = substr(md5('very secret key'), 0, $ks); /* 暗号化処理を初期化します */ mcrypt_generic_init($td, $key, $iv); /* データを暗号化します */ $encrypted = mcrypt_generic($td, 'This is very important data'); /* 暗号化ハンドラを終了します */ mcrypt_generic_deinit($td); /* 復号化用の暗号モジュールを初期化します */ mcrypt_generic_init($td, $key, $iv); /* 暗号化された文字列を復号します */ $decrypted = mdecrypt_generic($td, $encrypted); /* 復号化ハンドルを終了し、モジュールを閉じます */ mcrypt_generic_deinit($td); mcrypt_module_close($td); /* 文字列を表示します */ echo trim($decrypted) . "\n"; ?>`

上の例の最初の行では、デフォルトのディレクトリから DES 暗号化を、 そして `/usr/lib/mcrypt-modes` から EBC モードの オープンを試みます。2 行目の例では暗号化形式とモードを文字列で 指定しています。これは、libmcrypt 2.4.x あるいは 2.5.x に対して 拡張モジュールがリンクされている場合にのみ使用可能です。

mcrypt_module_close()、 mcrypt_generic()、 mdecrypt_generic()、 mcrypt_generic_init() および mcrypt_generic_deinit() も参照ください。

前のページ | ホーム | 次のページ
mcrypt_module_is_block_mode | 上に戻る | mcrypt_module_self_test