Шифрование Cryptojs с заполнением Pkcs в angularjs

#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 (и наоборот).