Шифрование и дешифрование данных из приложения на сервер, ионный / angular -> java сервер - PullRequest
1 голос
/ 04 марта 2020

Итак, я хочу зашифровать данные в ioni c, отправить их на сервер по запросу POST и расшифровать на стороне сервера. А также получил зашифрованные данные с сервера и расшифровал их в приложении. Я сейчас тестирую AES256 , но кажется, что зашифрованные данные отличаются. Это означает, что он не зашифрован и не дешифрован правильно, если он дает 2 разных значения. Знаете ли вы какой-нибудь способ сделать это возможным?

  encrypt(secureKey, secureIV, data) {
    this.platform.ready().then(() => {
      cordova.plugins.AES256.encrypt(secureKey, secureIV, data,
        (encrypedData) => {
          console.log('Encrypted Data----', encrypedData);
          this.decrypt(this.secureKey, this.secureIV, encrypedData);
        }, (error) => {
          console.log('Error----', error);
        });
    });
  }

  decrypt(secureKey, secureIV, encryptedData) {
    this.platform.ready().then(() => {
      cordova.plugins.AES256.decrypt(secureKey, secureIV, encryptedData,
        (decryptedData) => {
          console.log('Decrypted Data----', decryptedData);
        }, (error) => {
          console.log('Error----', error);
        });
    });
  }

Использование этих методов на ioni c для шифрования и дешифрования строк кода. Но их значение на android устройстве отличается от сервера, работающего на java. Как мне это сделать, чтобы запустить те же процессы для шифрования и дешифрования данных на устройстве, что и на сервере.

ОБНОВЛЕНИЕ / РЕШЕНИЕ Итак, я игнорирую предыдущий плагин AES 256 Cordova, и установите CryptoJS library Crypto JS библиотеку. это был результат:

    var key = await CryptoJS.enc.Latin1.parse("12345678910123456789012345678901");
var iv = await CryptoJS.enc.Latin1.parse("1234567891123456");
console.log(key + " ; " + iv)
var encrypted = await CryptoJS.AES.encrypt("test", key, { iv: iv },
  {
    mode: CryptoJS.mode.CBC,
    padding: CryptoJS.pad.Pkcs5
  });
console.log("encrypted -> " + encrypted.ciphertext.toString(CryptoJS.enc.Base64))

Мне пришлось использовать .Latin1.parse, чтобы сгенерировать то же значение в машинописи / javascript, что и в java. Больше информации, здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...