这 不起作用:
$jsonDecode = json_decode($jsonData, TRUE);
但是,如果我从 $jsonData
复制字符串并手动将其放入解码函数中,它确实可以工作。
这 有效:
$jsonDecode = json_decode('{"id":"0","bid":"918","url":"http:\/\/www.google.com","md5":"6361fbfbee69f444c394f3d2fa062f79","time":"2014-06-02 14:20:21"}', TRUE);
我确实输出了 $jsonData
复制了它并像上面一样在解码函数中输入。然后它起作用了。但是,如果我将 $jsonData
直接放在解码功能中,则不会。
var_dump($jsonData)
显示:
string(144) "{"id":"0","bid":"918","url":"http:\/\/www.google.com","md5":"6361fbfbee69f444c394f3d2fa062f79","time":"2014-06-02 14:20:21"}"
$jsonData
来自加密的 $_GET
变量。为了加密它,我使用这个:
$key = "SOME KEY";
$iv_size = mcrypt_get_iv_size(MCRYPT_BLOWFISH, MCRYPT_MODE_ECB);
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
$enc = mcrypt_encrypt(MCRYPT_BLOWFISH, $key, $data, MCRYPT_MODE_ECB, $iv);
$iv = rawurlencode(base64_encode($iv));
$enc = rawurlencode(base64_encode($enc));
//To Decrypt
$iv = base64_decode(rawurldecode($_GET['i']));
$enc = base64_decode(rawurldecode($_GET['e']));
$data = mcrypt_decrypt(MCRYPT_BLOWFISH, $key, $enc, MCRYPT_MODE_ECB, $iv);
原文由 yoshi 发布,翻译遵循 CC BY-SA 4.0 许可协议
您很可能需要从解密数据中去除填充。您的字符串中有 124 个可见字符,但
var_dump
报告 144。这意味着需要删除 20 个填充字符(字符串末尾的一系列“\0”字节)。可能是块末尾的 4 个“\0”字节 + 一个空的 16 字节块(标记数据的结尾)。
您目前如何解密/加密您的字符串?
编辑:
您需要添加它以修剪字符串末尾的零字节: