#javascript #angularjs #cryptojs
#javascript #angularjs #cryptojs
Вопрос:
Я пытаюсь создать зашифрованный запрос на интерфейсе с помощью cryptojs, используя приведенный ниже код:
function createAesRequestPayload(jsonRequiredToEncrypt) {
var base64Key = $window.CryptoJS.lib.WordArray.random(128/8);
var ivkey = $window.CryptoJS.lib.WordArray.random(128/16);
var aesEncrypted = $window.CryptoJS.AES.encrypt(JSON.stringify(jsonRequiredToEncrypt), base64Key,
{ iv: ivkey, mode: $window.CryptoJS.mode.CBC, padding: $window.CryptoJS.pad.Pkcs7});
var iv = btoa(ivkey);
var key = btoa(base64Key);
var data = btoa(aesEncrypted.toString());
var ivAndKey = iv "|" key;
var header = crypt.encrypt(ivAndKey); // Using RSA
return (header "|" data);
}
С помощью этого кода я могу создать запрос, но на стороне сервера я получаю исключение:
Input length must be multiple of 16 when decrypting with padded cipher
Серверная часть отлично работает для Android и IOS, и я не могу понять, что я делаю не так.
Заполнение, используемое в серверной части
Cipher.getInstance("AES/CBC/PKCS7Padding")
У меня нет с собой серверной части, только я могу видеть журналы на сервере.
Любая помощь будет высоко оценена.
Комментарии:
1. Java и JavaScript — это совершенно разные языки. Пожалуйста, не применяйте тег java к вопросу JavaScript (и наоборот).