如何加密JSON中的数据?

时间:2014-07-07 16:39:50

标签: php json encryption jsonp

我想通过JSONP在两个应用程序之间发送一些加密数据。我使用PHP页面生成我的JSONP。我尝试使用mcrypt加密我的一个JSONP密钥的值,如this question的一个答案中所述:

$result_arr['logged_in'] = true;
$key = 'SuperSecretKey';
$encrypted = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, 'I want to encrypt this', MCRYPT_MODE_ECB);
$result_arr['payload'] = $encrypted;
print_r($result_arr);
echo 'authCallback(' . json_encode( $result_arr, JSON_UNESCAPED_UNICODE ) . ')';

print_r行输出带有许多Unicode类型符号的$result_arr['payload']值。回显json_encoded值的行为null。据推测json_encode不喜欢非ASCII字符。谁能告诉我哪里出错?是否有另一种加密json_encode接受的加密方式?

2 个答案:

答案 0 :(得分:1)

在json编码之前使用base64_encoding

$result_arr['payload'] = base64_encode($encrypted);

在接收端不要忘记base64_decode

答案 1 :(得分:1)

可能很重要的是要注意OP的代码现已弃用 - 我遇到了来自Google的Stackoverflow问题,经过深入搜索后,mcrypt_encrypt现在被认为已弃用,自PHP 7.1.0起。

此处提供详细信息 - http://php.net/manual/en/function.mcrypt-encrypt.php