PHP
加密 | Cryptography

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 →