技术点滴

企业微信api 接入nodejs 解密

企微提供了几种语言的加解密算法,只是没有nodejs版本。

该实现方式,利用setAutoPadding(false);并参考企微提供的c#源码实现。


function workAesDecrypt(keyBasecryptedBase){

  let crypted = Buffer.from(cryptedBase+"="'base64')

  let key = Buffer.from(keyBase'base64')

  const iv = key.slice(16);

  const decipher = crypto.createDecipheriv('aes-256-cbc'keyiv)

  decipher.setAutoPadding(false);

  let decoded = decipher.update(crypted'base64''binary')

  decoded += decipher.final('binary')

  var pad = decoded.charCodeAt(decoded.length-1)

  if (pad < 1 || pad > 32 )

    pad = 0

  var hdrBuf = Buffer.from(decoded.substr(0,20),"binary")

  var msgLen = hdrBuf.readInt32BE(16)

  var rtn = {}

  rtn.msg = decoded.substr(20,msgLen)

  rtn.recvId = decoded.substr(20+msgLen,decoded.length-20-msgLen-pad)

  return rtn

}


电话咨询
—— 售后咨询 ——
—— 商务合作 ——
微信咨询

售后咨询

商务咨询