小程序
小游戏
企业微信
微信支付
扫描小程序码分享
这里返回结果 跟明文 一样啊 为什么提示错误呢
1 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
你返回的明文不对,要从 echostr = random(16B) + msg_len(4B) + msg + receiveid 中解析出明文 msg 返回 ,示例代码如下 完整源码
decrypt(echostr: string): string { // 实例 AES 解密对象 let deCipheriv = crypto.createDecipheriv(this.aesModel, this.encodingAesKey, this.iv) // 设置自定填充数据为 false deCipheriv.setAutoPadding(false) // 对密文解密对密文解密 并去除前 16 个随机字符串 let decipheredBuff = Buffer.concat([deCipheriv.update(echostr, 'base64'), deCipheriv.final()]) decipheredBuff = this.PKCS7Decoder(decipheredBuff) // 移除头部16个随机字节 let len_netOrder_corpid = decipheredBuff.slice(16) // 4个字节的 msg_len let msg_len = len_netOrder_corpid.slice(0, 4).readUInt32BE(0) // 截取 msg_len 长度的 msg let result = len_netOrder_corpid.slice(4, msg_len + 4).toString() return result }
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
你返回的明文不对,要从 echostr = random(16B) + msg_len(4B) + msg + receiveid 中解析出明文 msg 返回 ,示例代码如下 完整源码
decrypt(echostr: string): string { // 实例 AES 解密对象 let deCipheriv = crypto.createDecipheriv(this.aesModel, this.encodingAesKey, this.iv) // 设置自定填充数据为 false deCipheriv.setAutoPadding(false) // 对密文解密对密文解密 并去除前 16 个随机字符串 let decipheredBuff = Buffer.concat([deCipheriv.update(echostr, 'base64'), deCipheriv.final()]) decipheredBuff = this.PKCS7Decoder(decipheredBuff) // 移除头部16个随机字节 let len_netOrder_corpid = decipheredBuff.slice(16) // 4个字节的 msg_len let msg_len = len_netOrder_corpid.slice(0, 4).readUInt32BE(0) // 截取 msg_len 长度的 msg let result = len_netOrder_corpid.slice(4, msg_len + 4).toString() return result }