Итак, я хочу зашифровать данные в 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. Больше информации, здесь