首页 > 解决方案 > 使用 Crypto 的 AES 加密和使用 CryptoJS 的解密返回空字符串

问题描述

我的后端使用Crypto来自 node.js的字符串加密。

在客户端,我想使用CryptoJS. 但是,我总是得到一个空字符串。

加密(加密):

function encrypt(value) {
  const cipher = crypto.createCipher('aes-256-ctr', 'SECRET_STRING');
  let crypted = cipher.update(value,'utf8','hex');
  crypted += cipher.final('hex');
  return crypted;
}

解密(CryptoJS):

const decrypt = (value) => {
  const bytes = CryptoJS.enc.Hex.parse(value);
  const decrypted = CryptoJS.AES.decrypt(
    bytes,
    'SECRET_STRING',
    { 
       mode: CryptoJS.mode.ECB, 
       padding: CryptoJS.pad.NoPadding
    },
  );
  return decrypted.toString(CryptoJS.enc.Utf8);
};

这将返回一个空字符串。我误解了什么,我做错了什么?

标签: node.jsreact-nativecryptographyaescryptojs

解决方案


推荐阅读