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 起廢棄。強烈建議不要使用本函式。
說明
string
$algorithm,string
$algorithm_directory,string
$mode,string
$mode_directory): resource
   本函式打開指定演算法和模式對應的模組。
   演算法名稱可以是字串,例如 "twofish",
   也可以是 MCRYPT_ciphername 常量。
   呼叫 mcrypt_module_close() 函式可以關閉模組。
  
參數
- 
algorithm
- 
      MCRYPT_ciphername常量中的一個,或者是字串值的演算法名稱。
- 
algorithm_directory
- 
      algorithm_directory參數指示加密模組的位置。 如果你提供此參數,則使用你指定的值。 如果將此參數設定為空字串(""),將使用 php.ini 中的mcrypt.algorithms_dir。 如果不指定此參數,則使用 libmcrypt 的編譯路徑 (通常是 /usr/local/lib/libmcrypt)。
- 
mode
- 
      MCRYPT_MODE_modename常量中的一個,或以下字串中的一個:"ecb","cbc","cfb","ofb","nofb" 和 "stream"。
- 
mode_directory
- 
      algorithm_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 模式。
   第二個示例中,使用字串形式表示演算法和模式,
   這種形式僅適用於 libmcrypt 2.4.x 或 2.5.x 版本。
  
示例 #2 在加密中使用 mcrypt_module_open()
<?php
    /* 打開加密演算法和模式 */
    $td = mcrypt_module_open('rijndael-256', '', 'ofb', '');
    /* 建立初始向量,並且檢測金鑰長度。 
     * 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_generic() - 加密數據
- mdecrypt_generic() - 解密數據
- mcrypt_generic_init() - 初始化加密所需的緩衝區
- mcrypt_generic_deinit() - 對加密模組進行清理工作