我有使用crossrider开发的浏览器扩展。从这个扩展我需要将一些数据发送到服务器。但在发送数据之前,我需要加密并将其发送到服务器。我需要在服务器端解密这些数据并存储到数据库中。我试过用Cryptojs加密和解密方法来实现这一点。但是解密存在一些问题,有时解密结果为空。有时它会得到确切的结果。我不确定为什么它会向扩展返回null结果。 使用邮递员REST API客户端时,结果正是如此。 null值返回问题仅限扩展名。
extension.js
appAPI.ready(function($) {
appAPI.resources.includeJS('aes.js');
appAPI.resources.includeJS('jquery.js');
appAPI.resources.includeJS('aes-json-format.js');
$(document).on('click','#submit', function() {
var word = $('#val').val();
var passphrase = "EncryptionKey";
var encrypt_message = CryptoJS.AES.encrypt(JSON.stringify(word), passphrase, {format: CryptoJSAesJson}).toString();
$('#client_result').val(encrypt_message);
appAPI.message.toBackground({action:"encrypt",word:encrypt_message});
});
appAPI.message.addListener(function(msg) {
switch(msg.action) {
case 'server_result':
$('#server_result').val(msg.result);
break;
} //end switch
}); //end listener
});
background.js
appAPI.ready(function($) {
appAPI.openURL({ resourcePath: "test.html", where: "tab"});
appAPI.message.addListener(function(msg) {
switch (msg.action) {
case "encrypt":
var u="URL to the server";
var data = {message:msg.word};
appAPI.request.post({
url:u,postData:data,
onSuccess:function(res){
try{
var datas=jQuery.parseJSON(res);
alert(datas.result);
appAPI.message.toActiveTab({
action : 'server_result',
result : datas.result
});
}catch(err) {
alert("JSON parsing Failed"+err);
}
},
onFailure:function(httpCode) {
alert("failure: " + httpCode);
},
contentType:'application/x-www-form-urlencoded'
}); //end request post
break;
}
});
});
要获取javascript和PHP库,请查看以下链接:https://github.com/brainfoolong/cryptojs-aes-php 任何帮助将不胜感激。