为了避免恶意PUSH攻击和恶意蜘蛛干扰,您可以在 API设置页面设置您自己生成的 RSA PUBLIC KEY, 目前仅 CrazySSL Partner 系统支持。当您设置公钥后,PUSH消息格式将会变成:
{
"encrypted_data"=>"PUBLIC-KEY-ENCRYPTED-PEM-DATA-STRING"
}
您需要使用私钥解密被加密的字符串才可以获得真实的PUSH消息,下面是PHP演示如何使用私钥解密已经被加密的消息:
/**
* @param $data string 密钥串
* @param $privateKey
* @return array 解密之后的信息
*/
function decryptPrivateKey($data,$privateKeyString){
$privateKey = openssl_get_privatekey($privateKeyString);
$header = "-----BEGIN TRUSTOCEAN ENCRYPTED DATA-----";
$footer = "-----END TRUSTOCEAN ENCRYPTED DATA-----";
$data = str_replace($footer, "", str_replace($header, "", $data));
$encodedStringArray = str_split($data, 172);
$decodedString = "";
foreach ($encodedStringArray as $chunk){
$result = openssl_private_decrypt(base64_decode($chunk),$temp,$privateKey);
if(!$result){
//echo $chunk;
die("解密失败了");
}
$decodedString .= $temp;
}
openssl_free_key($privateKey);
return $decodedString; // 返回解密后的 array
}