首页
学习
活动
专区
工具
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 →

扫码关注腾讯云开发者

领取腾讯云代金券