使用官方算法库

官方代码

import org.apache.commons.codec.binary.Base64;public class Test{@Testpublic void testDecodeBase64(){String sToken = "QDG6eK";String sCorpID = "wx5823bf96d3bd56c7";String sEncodingAESKey = "jWmYm7qr5nMoAUwZRjGtBxmz3KA1tkAj3ykkR6q2B2C";try {//  WXBizMsgCrypt wxcpt = new WXBizMsgCrypt(sToken, sEncodingAESKey, sCorpID);// 实际等于Base64.decodeBase64(sEncodingAESKey + "=");} catch (AesException e) {e.printStackTrace();}}
}

异常

java.lang.IllegalArgumentException: Last encoded character (before the paddings if any) is a valid base 64 alphabet but not a possible value

原因

commons-codec 在 1.13 版本引入了 validateCharacter 方法,来验证在上下文中是否可以解码最后的尾随字符,微信生成的 EncodingAESKey 无法通过校验

解决办法

方法一

  1. 使用guava代替官方commons-codec
    1.1 引入guava
    1.2 使用 BaseEncoding.base64().decode(sEncodingAESKey + "=" ) 代替 Base64.decodeBase64(sEncodingAESKey + "=");

方法二

  1. 将commons-codec包升级到官方代码示例中的1.9版本

方法三

  1. 使用 commons-codec 加密 32 位字符(我是用的 UUID 生成 ID 后去除 -)
  2. 生成一个 EncodingAESKey 替换微信生成的 EncodingAESKey
    Base64.encodeBase64String(UUID.randomUUID().toString().replaceAll("-","").getBytes());
  3. 第二步得到一个 44 位字符串,需要去除末尾等号得到 43 位EncodingAESKey,再去企业微信配置此EncodingAESKey

参考连接 lgm一点笔记

念兮为美

记一次企业微信回调解密报错相关推荐

  1. 工作随记-Java利用企业微信群机器人定时发送消息

    hi,大家好,我是恰恰 阅读本文需要2分钟~ 最近利用企业微信群机器人做的需求主要有 1.返奖率通知与告警:抽奖箱能抽出垃圾也能抽出大货,每隔5分钟查询一下这个返奖率,如果用户频繁抽出大货,这个抽奖箱 ...

  2. 微信企业支付RSA加密报错

    在微信企业支付的"转账到银行卡"接口中,卡号和姓名需要通过rsa加密传输,但是在开发过程中,加密一直报错,是因为Java开发的rsa加密的jar包问题, 两个jar包:local_ ...

  3. 实战模拟│企业微信机器人实时报错预警

    目录预览 一.创建机器人 二.机器人配置说明 三.机器人信息推送 四.错误预警推送 一.创建机器人 选择群 ► 右键 ► 管理聊天信息 ► 添加群机器人 完善机器人基本信息,包括头像.名称等 二.机器 ...

  4. matlab数字图像处理大作业_线上教学优秀案例(16) | 数字图像处理基于蓝墨云+企业微信的线上教学经验分享...

    [前言]目前我校在线课堂教学如火如荼,老师们在各大教学平台化身"直播高手""网课达人"倾心打造精彩课堂,有效保证了在线学习与线下课堂教学质量实质等效.为进一步推 ...

  5. 企业微信发送企业红包java_发放企业红包

    API接口协议 发放规则: 发送频率限制---默认1800/min 发送个数上限---默认1800/min 场景金额限制---默认红包金额为1-200元,如有需要,可前往商户平台进行设置和申请 其他限 ...

  6. php 企业微信指令回调借款_企业微信外部联系人回调事件

    企业微信外部联系人回调事件 说明: 1) 下列"外部联系人" 和 "客户联系" 其实都是一个意思,都是指顾客,但是由于企业微信开发文档中叫"外部联系人 ...

  7. 朋友圈产品文档_企业微信上线朋友圈等新功能,超250万企业接入企业微信

    12月23日,企业微信团队宣布在最新版本中升级群聊功能.开放客户朋友圈内测以及推出高效协同工具套装等重磅能力,进一步强化企业微信与微信生态互通能力. 腾讯微信事业群副总裁黄铁鸣介绍说,目前企业微信已经 ...

  8. 企业IM,阿里钉钉“恶”企业微信“善”?

    (图片来源于网络) 文 | 易不二 编辑排版| 黄娇 来源 | 螳螂财经(ID:TanglangFin) 用过钉钉的人应该都不会对几个场景感到陌生. 有时候下班了,老板或同事发来一条消息,但自己正在忙 ...

  9. 企业微信万亿级日志检索系统

    作者:datonli,腾讯 WXG 后台开发工程师 背景 开发在定位问题时需要查找日志,但企业微信业务模块日志存储在本机磁盘,这会造成以下问题: 日志查找效率低下:一次用户请求涉及近十个模块,几十台机 ...

  10. 114实名认证未通过_企业微信怎么实名认证?实名认证后还可以改吗?

    企业微信怎么实名认证?实名认证后还可以改吗? 回答这个问题之前需要先区分一下企业微信实名认证和企业微信认证. 企业微信实名认证:指的是企业微信账号使用者的实名认证,类似微信号的实名认证:企业微信认证: ...

最新文章

  1. centos7 php 404,CentOS7 Apache环境配置自定义404错误页面怎么解决
  2. GraphQL的schema定义文件加载到内存里的例子
  3. Java并发编程实战~volatile
  4. Ubuntu 用户提权到Root
  5. Motherboard Monitor .NET
  6. mysql的读写分离技术_mysql 读写分离方法
  7. sar分辨率公式_购买SAR卫星三个重要参数:分辨率、极化方式、入射角
  8. 【POJ】1384 Piggy-Bank
  9. php调用API支付接口 可个人使用,无需营业执照(使用第三方接口,调用的天工接口。)...
  10. 腾讯云TCA运维工程师认证题库及例题示范
  11. 私有云盘的搭建(owncloud、seafile)
  12. 批准此iphone 前往已登录iCloud的其他设备来批准这台iPhone
  13. java文件上传过滤,struts2中文件上传过滤
  14. Vulkan规范笔记(一) 第一章至第六章
  15. 2017年第38届国际名家具(东莞)展览会会刊(参展商名录)
  16. 不看会后悔的100个超有趣冷知识(一)
  17. Python实现计算机的自动化控制!
  18. STM32片内FLASH烧写错误导致ST-LINK烧录不进程序的问题解决过程
  19. 宏(macro)定义的简介
  20. 安装 SwitchyOmega 最简单的方法

热门文章

  1. 什 么 是 勒 索 病 毒 ?
  2. Mysql 刷题笔记 0104 求出NAME中每组累加/每组总数的比例大于0.6的ID和NAME
  3. 苹果恢复出厂设置系统也会还原吗_手机经常恢复出厂设置会怎么样?对手机有害处吗?这下终于清楚了...
  4. 网络安全理论与技术概述-带你了解网络安全
  5. JavaWeb重点笔记
  6. MNN Interpreter and Session
  7. 网络安全实验室—脚本关
  8. mac 管理 android手机助手,Mac 篇十二:Mac如何更高效的管理安卓手机和iPhone,老机器也可用哦...
  9. Togaf业务架构-《企业级业务架构设计方法论与实践》解读
  10. Mathematica仿真竞争性Lotka-Volterra方程(3种群)