mcrypt_module_open
mcrypt_module_open
(PHP 4 >= 4.0.2, PHP 5, PHP 7)
mcrypt_module_open - 打开算法模块和要使用的模式
警告
这个函数从 PHP 7.1.0 开始已经被 DEPRECATED 了。依靠这个功能是非常不鼓励的。
描述
resource mcrypt_module_open ( string $algorithm , string $algorithm_directory , string $mode , string $mode_directory )
该功能打开算法模块和要使用的模式。算法的名称在算法中指定,例如 “twofish” 或者是其中一个MCRYPT_ciphername
常量。通过调用 mcrypt_module_close()来关闭该模块。
参数
algorithm
其中一个MCRYPT_ciphername
常量或算法的名称作为字符串。
algorithm_directory
algorithm_directory
参数用于定位加密模块。当你提供一个目录名称时,它被使用。当您将其设置为空字符串(“”)时,将使用由 mcrypt.algorithms_dir php.ini 指令设置的值。如果未设置,则使用的默认目录是编译为 libmcrypt(通常是 / usr / local / lib / libmcrypt)的目录。
mode
其中一个MCRYPT_MODE_modename
常量或以下字符串之一:“ecb”,“cbc”,“cfb”,“ofb”,“nofb” 或 “stream”。
mode_directory
mode_directory
参数用于定位加密模块。当你提供一个目录名称时,它被使用。当您将其设置为空字符串(“”)时,将使用由
mcrypt.modes_dir php.ini 指令设置的值。如果未设置,则使用的默认目录是编译为 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 链接的情况。
Example#2在加密中使用 mcrypt_module_open()
<?php
/* Open the cipher */
$td = mcrypt_module_open('rijndael-256', '', 'ofb', ''
/* Create the IV and determine the keysize length, use MCRYPT_RAND
* on Windows instead */
$iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_DEV_RANDOM
$ks = mcrypt_enc_get_key_size($td
/* Create key */
$key = substr(md5('very secret key'), 0, $ks
/* Intialize encryption */
mcrypt_generic_init($td, $key, $iv
/* Encrypt data */
$encrypted = mcrypt_generic($td, 'This is very important data'
/* Terminate encryption handler */
mcrypt_generic_deinit($td
/* Initialize encryption module for decryption */
mcrypt_generic_init($td, $key, $iv
/* Decrypt encrypted string */
$decrypted = mdecrypt_generic($td, $encrypted
/* Terminate decryption handle and close module */
mcrypt_generic_deinit($td
mcrypt_module_close($td
/* Show string */
echo trim($decrypted) . "\n";
?>
请参阅
- mcrypt_module_close() - 关闭 mcrypt 模块
- mcrypt_generic() - 此函数加密数据
- mdecrypt_generic() - 解密数据
- mcrypt_generic_init() - 此函数初始化加密所需的所有缓冲区
- mcrypt_generic_deinit() - 此函数取消初始化加密模块
← mcrypt_module_is_block_mode
mcrypt_module_self_test →