Я хочу отправить «сообщение» на php как данные json. Но «сообщение» должно быть строкой. Если я "строчу" свои данные json в Javascript и шифрую их с помощью "CryptoJS.AES.encrypt", я не могу получить отдельное содержимое в PHP, потому что "json_decode" всегда возвращает NULL.
Я использовал "json_last_error" и он вернул 3. Когда я кодирую его с помощью "utf8_encode" и json_encode, он возвращает 0.
"mcrypt_decrypt" - это PHP-дешифратор AES.
Я действительно не знаю, что сделать. Пожалуйста, помогите мне и заранее спасибо!
//JAVASCRIPT
var encrypted = CryptoJS.AES.encrypt(
JSON.stringfy({'message':'message','messageA':'messageA','messageB':'messageB'}),
key512Bits500Iterations, {iv:iv});
var data_base64 = encrypted.ciphertext.toString(CryptoJS.enc.Base64);
var iv_base64 = encrypted.iv.toString(CryptoJS.enc.Base64);
var key_base64 = encrypted.key.toString(CryptoJS.enc.Base64);
$.ajax({
url: 'http://localhost/workspace/messageAppl.php',
type: 'POST',
data: {
'data_base64':data_base64,
'iv_base64':iv_base64,
'key_base64':key_base64 //key_base64 will be encrypted with RSA
},
success: function(data){
alert(data);
},
error: function(){
alert('Index-Error');
}
});
// PHP
// I can get the jsonString but I can't get the single message like 'message', 'messageA' or 'messageB'
...
//Decryption in PHP
public function jsMessage($data_base64, $iv_base64, $key_base64){
$data_enc = base64_decode($data_base64); // data_base64 from JS
$iv = base64_decode($iv_base64); // iv_base64 from JS
$key = base64_decode($key_base64); // key_base64 from JS
$plaintext = rtrim( mcrypt_decrypt( MCRYPT_RIJNDAEL_128, $key, $data_enc, MCRYPT_MODE_CBC, $iv ), "\t\0 " );
return $plaintext;
}
$json_string = aes_decrypt($_POST['data_base64'], $_POST['iv_base64'], $_POST['key_base64']);
// json_decode returns NULL but WHY?
$array=json_decode($json_string);
$message=$array->message
$messageA=$array->messageA
$messageB=$array->messageB
**Edit 1**
The error message I get is:
**"Control character error, possibly incorrectly encoded"**
but the Json which I get in php after the decryption is valid:
{"message":"blablabalbalbalaballab","messageA":"blablabalbalbalaballab" ,"messageB":"blablabalbalbalaballab"}
и, чтобы быть уверенным, я снова и снова тестировал json здесь
< br> **Редактировать 2 **
Я не могу это опубликовать с этими знаками, поэтому я сделал фото.
stringify
не должно бытьJSON.stringify
? - person Barmar   schedule 11.04.2015