node AES/CBC/PKCS5Padding 加密问题

新手上路,请多包涵

问题是这样的,小弟现在在做的是公众号对接工行的支付,其中有个数据加密的环节。我这个加密过去工行那边一直报解密失败。工行的加密要求为: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(’’);
}

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

阅读 5.2k
1 个回答

你加密后的内容输出格式跟他们的是一致的么,输出有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);
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏