node AES/CBC/PKCS5Padding 加密问题

发布于 2022-09-11 21:34:12 字数 854 浏览 18 评论 0

问题是这样的,小弟现在在做的是公众号对接工行的支付,其中有个数据加密的环节。我这个加密过去工行那边一直报解密失败。工行的加密要求为:API开放平台具体AES算法为AES/CBC/PKCS5Padding
针对AES算法
IV(initialization vector),即初始化向量长度为16字节(128位).初始化为0,加密后BASE64输出,解密向量与初始化向量是相同的。
下面是我个人构造的加密:
aesCipher(data) {
//const iv = new Buffer([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]);
//const iv = Buffer.alloc(16, 0)
let aeskey = ‘LjKqH69sLlqGe+pPSqgWUQ==‘
const iv = "0000000000000000"
console.log(iv.length)
var clearEncoding = ‘utf8’;
var cipherEncoding = ‘base64’;
var cipherChunks = [];
var cipher = crypto.createCipheriv(‘aes-192-cbc’, aeskey, iv);
cipher.setAutoPadding(true);
cipherChunks.push(cipher.update(data, clearEncoding, cipherEncoding));
cipherChunks.push(cipher.final(cipherEncoding));
return cipherChunks.join(’’);
}

想请大神来帮帮看看,这是我哪一步有问题。跪求啊,已经卡了好几天了。()

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

请止步禁区 2022-09-18 21:34:12

你加密后的内容输出格式跟他们的是一致的么,输出有base64等

let encrypted = CryptoJS.AES.encrypt(word,key,{
    iv: iv,
    mode: CryptoJS.mode.CBC, 
    padding:CryptoJS.pad.Pkcs7
  });
  // 此处匹配后端格式需要以Base64形式输出
  // console.log(encrypted.ciphertext.toString(CryptoJS.enc.Base64))
  return encrypted.ciphertext.toString(CryptoJS.enc.Base64);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文