首页 > 解决方案 > CryptoJS AES 加密和解密

问题描述

首先,我有 2 个不同的系统 - 一个在 java 中,一个在 javascript 中。我有一个加密字符串(在 java 中完成),我也有用于加密它的 secretKey。我可以在 Javascript 中使用它来解密它。我知道解密结果是正确的。所以我不能改变解密逻辑。下面是解密代码:

decrypt = (value) => {
  const cipher = CryptoJS.enc.Base64.parse(value);
  const dec = CryptoJS.enc.Utf8.stringify(
  CryptoJS.AES.decrypt(
      { ciphertext: cipher },
      secretKey,
      { mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.NoPadding }
   )
 );
 return dec;
};

我正在尝试加密上面的结果以在 javascript 中获取原始加密字符串。我试图做与解密时完全相反的事情。这是加密代码:

encrypt = (value) => {
    var encrypted = CryptoJS.enc.Utf8.parse(
        CryptoJS.AES.encrypt(
            value, secretKey,
            { mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.NoPadding }
        )
  );
  const cipher = CryptoJS.enc.Base64.stringify(encrypted);
  return cipher;

}

我期待一个传入的原始字符串,但我没有得到相同的结果。

let decrypted = decrypt("LJalEgQ81qUjrVzhlgFNw==");
console.log("Decrypted:", decrypted);

encrypted = encrypt(decrypted);
console.log("Encrypted:", encrypted);

任何帮助表示赞赏。提前致谢。

标签: encryptionaescryptojs

解决方案


推荐阅读