【发布时间】:2011-02-15 22:37:16
【问题描述】:
谁知道在 PHP 中加密时 mcrypt_generic 和 mcrypt_encrypt 之间的区别?
【问题讨论】:
谁知道在 PHP 中加密时 mcrypt_generic 和 mcrypt_encrypt 之间的区别?
【问题讨论】:
mcrypt_encrypt() 结合了几种方法的功能,而mcrypt_generic() 必须在其他mcrypt_* 调用的特定序列中调用。如果您需要较低级别 API 的灵活性,您可以使用 mcrypt_generic(),而 mcrypt_encrypt() 充当较高级别的实用程序。
PHP 文档中的这个示例很好地比较了两种 API 方法。它指的是mcrypt_ecb(),但为了进行比较,您可以认为它类似于mcrypt_encrypt()。
来自http://us.php.net/manual/en/mcrypt.examples.php
$key = "this is a secret key";
$input = "Let us meet at 9 o'clock at the secret place.";
$encrypted_data = mcrypt_ecb (MCRYPT_3DES, $key, $input, MCRYPT_ENCRYPT);
或者:
$key = "this is a secret key";
$input = "Let us meet at 9 o'clock at the secret place.";
$td = mcrypt_module_open('tripledes', '', 'ecb', '');
$iv = mcrypt_create_iv (mcrypt_enc_get_iv_size($td), MCRYPT_RAND);
mcrypt_generic_init($td, $key, $iv);
$encrypted_data = mcrypt_generic($td, $input);
mcrypt_generic_deinit($td);
mcrypt_module_close($td);
【讨论】:
http://php.net/manual/en/function.mcrypt-generic.php
http://php.net/manual/en/function.mcrypt-encrypt.php
自 PHP 7.1.0 起,这些函数已被弃用。强烈建议不要依赖这些函数。
如今,最好的选择显然是:
【讨论】: