I am using AES Excryption for encypting my data while making post request
const data = {
orgId: 13 ,
userId: 123456 ,
appId: 9505,
screenId: '1,2,3,4,5,6',
};
const secret="abcdefgh";
try {
const response = await axios.post("/getTokens.do?method=getScreenTokens", {data: encryptedData});
console.log('Response:', response.data);
} catch (error) {
console.error('Error sending data:', error);
}
function encrypt(plaintext, secret) {
var key = CryptoJS.enc.Utf8.parse(secret);
let iv = CryptoJS.lib.WordArray.create(key.words.slice(0, 4));
setIV(iv);
console.log("IV : " + CryptoJS.enc.Base64.stringify(iv));
// Encrypt the plaintext
var cipherText = CryptoJS.AES.encrypt(plaintext, key, {
iv: iv,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
});
return cipherText.toString();
}
function decrypt(ciphertext, secret) {
var key = CryptoJS.enc.Utf8.parse(secret);
let iv = CryptoJS.lib.WordArray.create(key.words.slice(0, 4));
// Decrypt the ciphertext
var decrypted = CryptoJS.AES.decrypt(ciphertext, key, {
iv: iv,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
});
const decryptedText = decrypted.toString(CryptoJS.enc.Utf8);
// Check if decryption was successful
if (!decryptedText) {
throw new Error("Decryption failed. Malformed UTF-8 data.");
}
return decryptedText;
}
const encryptedData = encrypt(JSON.stringify(data), secret);
console.log("EncodedPayload ->",encryptedData)
const base64CipherText = CryptoJS.enc.Base64.stringify(CryptoJS.enc.Utf8.parse(encryptedData));
console.log("base64CipherText ->",base64CipherText)
const decryptedBytes = CryptoJS.enc.Base64.parse(base64CipherText);
console.log("decryptedBytes ->",decryptedBytes)
const decryptedText = decrypt(decryptedBytes, secret).toString(crypto.enc.Utf8);
console.log("decryptedText ->",decryptedText)
I am able to do encryption , but when try to do decryption I am getting this error
Decryption failed. Malformed UTF-8 data.
I am just doing decryption to check what data will I receive at backend after decryption.