【问题标题】:Why is PHP Mcrypt returning post message garbage?为什么 PHP Mcrypt 返回帖子消息垃圾?
【发布时间】:2012-08-25 10:44:26
【问题描述】:

使用来自here 的相同(基本)代码但切换到 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

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

这是怎么回事?

【问题讨论】:

  • 发送到 mcrypt 的代码是通过 crypto++ 完成的。
  • 我认为我以前在手册中看到过这个;解码后的字符串并不总是正确填充 \0 ...您使用的是最新的 php 版本吗? au2.php.net/mdecrypt_generic
  • 不幸的是很难说。我为 ubuntu 获取了 php5-mcrypt 包。

标签: php c++ mcrypt crypto++


【解决方案1】:

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

转载于此供后人参考:

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

【讨论】:

    猜你喜欢
    • 2014-06-06
    • 1970-01-01
    • 2013-09-04
    • 2011-06-23
    • 1970-01-01
    • 1970-01-01
    • 2011-10-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多