收藏
回答

我有个对 消息加解密说明 中 EncodingAESKey decode 的疑问

按 文档 说明,这个 key 应该是在 62 个合法字符中选取,并组成 固定为 43 个字符 的一个 key

但文档中没有提及这个组成的 43 个字符 是否需要 符合 base64 编码规则

即这个 key 是否 应该 是一个 可以被 Base64 正常 decode 的一个 base64 字符串

文档中只是提及需要在 末尾 加个 "=" ,从而让其 能被 base64  强制 decode

但这个地方对于 apache common codec 1.3 开始不适用

因为从这个版本开始,会对 decode 的字符串 进行 格式校验,格式不对会直接抛异常

https://commons.apache.org/proper/commons-codec/changes-report.html#a1.13

https://issues.apache.org/jira/browse/CODEC-134

那么对于任何 base64 工具,只要有做格式校验,就无法正常 decode 成功

是否有必要改进文档中的规则和限制?


回答关注问题邀请回答
收藏

2 个回答

  • 曲水寒江忆无城
    曲水寒江忆无城
    2020-05-08

    你好,请问你这边解决了吗,进行decode的时候,直接就是乱码,没办法正常转换

    2020-05-08
    有用
    回复 2
    • karen mok
      karen mok
      2020-09-03
      你解决了吗,我也是乱码
      2020-09-03
      回复
    • ‮‍君照费
      ‮‍君照费
      01-24回复karen mok
      base64 decode EncodingAESKey 是乱码并没有关系
      01-24
      回复
  • 西瓜叔叔
    西瓜叔叔
    2020-01-13

    我也遇到这样的问题,请问如何解决呢?用的是微信后台随机生成的KEY报错:

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

    参考:https://developers.weixin.qq.com/community/develop/doc/000e46d10d0050aa6559aec3a56400?_at=1578900243140

    10月份就已经提过了,他们还没更新,唉,腾讯真的不靠谱,很无奈。

    2020-01-13
    有用
    回复 3
    • arthur
      arthur
      2020-06-16
      改不改这不是技术问题,是KPI问题


      已测试通过:

       aesKey = Base64.decodeBase64(encodingAesKey + "=");


      改成: aesKey = java.util.Base64.getDecoder().decode(encodingAesKey + "=");
      2020-06-16
      1
      回复
    • 糊了的鸭蛋
      糊了的鸭蛋
      2020-12-22回复arthur
      按照你说的试了试   没效果呀还是报错 Last encoded character (before the paddings if any) is a valid base 64 alphabet but not a possible value. Expected the discarded bits to be zero
      2020-12-22
      回复
    • 卡里比
      卡里比
      2022-10-30回复arthur
      确实 可以,牛逼牛逼。。
      2022-10-30
      回复
登录 后发表内容
问题标签