为什么PHP Mcrypt会返回邮件垃圾


Why is PHP Mcrypt returning post message garbage?

从这里使用相同的(基本)代码,但切换到MCRYPT_RIJNDAEL_128,我现在从php MCRYPT_decrypt中获得正确的数据,除非在某些情况下,它会在我的消息末尾填充一行看似随机的二进制字符。

例如,以下内容是从解密请求中返回的:

{"messageData":{"identity":"test","msg_id":0,"token":"fakeToken58586"},"messageName":"fetchSavedData_request"}'n'b'b'b'b'b'b'b'b

我认为这是一个填充问题,但即使我将字符串填充到正确的长度,我偶尔也会收到垃圾,而通常需要填充的字符串偶尔也会返回正确的长度。

这是怎么回事?

正如@Jack在评论中指出的,这显然是一个常见的问题。这里的代码用于删除加密数据末尾的控制字符。

在这里为子孙后代复制:

$data = preg_replace( "/'p{Cc}*$/u", "", $data);