我想通过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接受的加密方式?
答案 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