正如@Jack在评论中指出的,这显然是一个常见的问题。这里的代码用于删除加密数据末尾的控制字符。
从这里使用相同的(基本)代码,但切换到MCRYPT_RIJNDAEL_128,我现在从php MCRYPT_decrypt中获得正确的数据,除非在某些情况下,它会在我的消息末尾填充一行看似随机的二进制字符。
例如,以下内容是从解密请求中返回的:
{"messageData":{"identity":"test","msg_id":0,"token":"fakeToken58586"},"messageName":"fetchSavedData_request"}nbbbbbbbb
我认为这是一个填充问题,但即使我将字符串填充到正确的长度,我偶尔也会收到垃圾,而通常需要填充的字符串偶尔也会返回正确的长度。
这是怎么回事?
在这里为子孙后代复制:
$data = preg_replace( "/p{Cc}*$/u", "", $data);