现在的位置: 我的问答 >mcrypt_decrypt解密后末尾有乱码怎么弄

mcrypt_decrypt解密后末尾有乱码怎么弄

2015-09-29 23:50 ⁄ 被浏览 5018

在php中,使用mcrypt_encrypt加密后,再用mcrypt_decrypt解密,末尾可能会出现乱码。找了n多资料后,终于找到了解决办法。


其实官方文档就有介绍:http://php.net/manual/zh/function.mcrypt-encrypt.php 

加密的时候,对于长度不足的密钥和初始向量会在其后补齐 '\0' 使其达到有效长度。所以解密后要将 '\0' 替换回去,如下:

$val = mcrypt_decrypt( ...etc...);

$val = rtrim($val , "\0");

要注意的是:\0要用双引号引起来,用单引号无效,它不会转义。