(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 で削除 されました。この関数に頼らないことを強く推奨します。
$algorithm,$algorithm_directory,$mode,$mode_directory
   この関数は、使用するアルゴリズムおよびモードのモジュールをオープン
   します。アルゴリズム名は、たとえば "twofish"
   のように名前で指定するか定数 MCRYPT_暗号名 のいずれかを使用して指定します。
   ライブラリは mcrypt_module_close() をコールする
   ことによりクローズされます。
  
algorithmMCRYPT_暗号名 定数のいずれか、
あるいはアルゴリズム名をあらわす文字列。
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);
    /* キーを作成します (例示のみ: MD5 は、この用途には不向きなハッシュアルゴリズムです) */
    $key = substr(hash('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";
?>
