array ( 0 => 'index.php', 1 => 'PHP Manual', ), 'head' => array ( 0 => 'UTF-8', 1 => 'zh', ), 'this' => array ( 0 => 'function.mcrypt-generic.php', 1 => 'mcrypt_generic', ), 'up' => array ( 0 => 'ref.mcrypt.php', 1 => 'Mcrypt 函数', ), 'prev' => array ( 0 => 'function.mcrypt-generic-init.php', 1 => 'mcrypt_generic_init', ), 'next' => array ( 0 => 'function.mcrypt-get-block-size.php', 1 => 'mcrypt_get_block_size', ), 'alternatives' => array ( ), 'source' => array ( 'lang' => 'zh', 'path' => 'reference/mcrypt/functions/mcrypt-generic.xml', ), ); $setup["toc"] = $TOC; $setup["toc_deprecated"] = $TOC_DEPRECATED; $setup["parents"] = $PARENTS; manual_setup($setup); ?>
(PHP 4 >= 4.0.2, PHP 5, PHP 7 < 7.2.0, PECL mcrypt >= 1.0.0)
mcrypt_generic — 加密数据
本函数已自 PHP 7.1.0 起废弃并将自 PHP 7.2.0 起移除。强烈建议不要使用本函数。
本函数用来加密数据。
传入数据长度必须是 n * 分组大小,否则需要后补 "\0
"。
本函数返回加密后的数据。
注意,根据数据补齐不同,
返回的数据可能比输入的数据长度有所增加。
如果你需要把加密后的数据保存到数据库, 请确保保存 mcrypt_generic 返回的完整的字符串, 否则将无法正确解密。 如果原始数据有 10 个字符,分组大小为 8 (使用 mcrypt_enc_get_block_size() 获取分组大小), 则数据库中至少需要 16 个字符来保存数据。 请注意 mdecrypt_generic() 函数返回的数据也会是 16 个字符。 使用 rtrim($str, "\0") 移除字符串末尾的 0 。
如果你在例如 MySQL 这样的数据库中存储数据, 请注意 varchar 类型的字段会在插入数据时自动移除字符串末尾的“空格”。 由于加密后的数据可能是以空格(ASCII 32)结尾, 这种特性会导致数据损坏。 请使用 tinyblob/tinytext(或 larger)字段来存储加密数据。
td
加密描述符。
在调用本函数之前, 请使用 mcrypt_generic_init() 函数初始化加密句柄。 在加密完成之后, 需要调用 mcrypt_generic_deinit() 函数进行必要的清理工作。 请参见 mcrypt_module_open() 。
data
要加密的数据。
返回加密后的数据。