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 →
本文档系腾讯云开发者社区成员共同维护,如有问题请联系 cloudcommunity@tencent.com