mcrypt_module_open
(PHP 4 >= 4.0.2, PHP 5, PHP 7 < 7.2.0, PECL mcrypt >= 1.0.0)
mcrypt_module_open — 使用するアルゴリズムおよびモードのモジュールをオープンする
警告 この関数は PHP 7.1.0 で 非推奨となり、PHP 7.2.0 で削除 されました。この関数に頼らないことを強く推奨します。
説明
mcrypt_module_open
( string $algorithm
, string $algorithm_directory
, string $mode
, string $mode_directory
) : resource
この関数は、使用するアルゴリズムおよびモードのモジュールをオープン
します。アルゴリズム名は、たとえば "twofish
"
のように名前で指定するか定数 MCRYPT_暗号名
のいずれかを使用して指定します。
ライブラリは mcrypt_module_close() をコールする
ことによりクローズされます。
パラメータ
algorithm
MCRYPT_暗号名
定数のいずれか、 あるいはアルゴリズム名をあらわす文字列。algorithm_directory
- 暗号化モジュールの位置を指定する際には
algorithm_directory
を使います。 ディレクトリ名を指定した場合には、これが使用されます。 これらの一つに空の文字列(""
)を指定した場合、php.ini
ディレクティブmcrypt.algorithms_dir
に設定された値を使います。 これらが設定されていない場合、libmcrypt をコンパイルした際の デフォルトのディレクトリ (通常は/usr/local/lib/libmcrypt
) を使います。 mode
- 定数
MCRYPT_MODE_モード名
、あるいは文字列 "ecb", "cbc", "cfb", "ofb", "nofb" ,"stream" のいずれか。 mode_directory
- 暗号化モジュールの位置を指定する際には
mode_directory
を使います。 ディレクトリ名を指定した場合には、これが使用されます。 これらの一つに空の文字列(""
)を指定した場合、php.ini
ディレクティブmcrypt.modes_dir
に設定された値を使います。 これらが設定されていない場合、libmcrypt をコンパイルした際の デフォルトのディレクトリ (通常は/usr/local/lib/libmcrypt
) を使います。
返り値
通常は暗号化記述子を返します。エラー時は false
を返します。
例
例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
から ECB
モードの
オープンを試みます。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";?>
参考
- mcrypt_module_close() - mcrypt モジュールを閉じる
- mcrypt_generic() - データを暗号化する
- mdecrypt_generic() - データを復号する
- mcrypt_generic_init() - 暗号化に必要な全てのバッファを初期化する
- mcrypt_generic_deinit() - 暗号化モジュールを終了する