首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

mcrypt_module_open

(PHP 4 >= 4.0.2, PHP 5, PHP 7)

mcrypt_module_open - 打开算法模块和要使用的模式

警告

这个函数从 PHP 7.1.0 开始已经被 DEPRECATED 了。依靠这个功能是非常不鼓励的。

描述

代码语言:javascript
复制
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() 示例

代码语言:javascript
复制
<?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()

代码语言:javascript
复制
<?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 →

扫码关注腾讯云开发者

领取腾讯云代金券

http://www.vxiaotou.com