Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Last encoded character (before the paddings if any) is a valid base 64 alphabet but not a possible value #1610

Closed
icodingx opened this issue Jun 9, 2020 · 7 comments

Comments

@icodingx
Copy link

icodingx commented Jun 9, 2020

简要描述

public String authGet(@PathVariable Long appId,
@RequestParam(name = "msg_signature", required = false) String signature,
@RequestParam(name = "timestamp", required = false) String timestamp,
@RequestParam(name = "nonce", required = false) String nonce,
@RequestParam(name = "echostr", required = false) String echostr) {
//...
if (wxCpService.checkSignature(signature, timestamp, nonce, echostr)) {
// 这里调 decrypt(echostr) 发生异常,应该是依赖的版本有冲突
return new WxCpCryptUtil(wxCpService.getWxCpConfigStorage()).decrypt(echostr);
}
return "非法请求";
image

模块版本情况

  • WxJava 模块名: weixin-java-cp
  • WxJava 版本号: 3.8.0

详细描述

尽量详细描述。请不要使用截图,尽量使用文字描述,代码直接贴上来,日志则请附在后面所示区域。

日志

java.lang.IllegalArgumentException: Last encoded character (before the paddings if any) is a valid base 64 alphabet but not a possible value
at org.apache.commons.codec.binary.Base64.validateCharacter(Base64.java:798)
at org.apache.commons.codec.binary.Base64.decode(Base64.java:477)
at org.apache.commons.codec.binary.BaseNCodec.decode(BaseNCodec.java:411)
at org.apache.commons.codec.binary.BaseNCodec.decode(BaseNCodec.java:395)
at org.apache.commons.codec.binary.Base64.decodeBase64(Base64.java:694)
at me.chanjar.weixin.cp.util.crypto.WxCpCryptUtil.(WxCpCryptUtil.java:47)

@13756289007
Copy link

楼主解决了吗? 我也遇到这个问题了 一开始以为是JDK的问题 但是换了好多个版本都是一样的问题

@binarywang
Copy link
Member

#1454 猜测跟这个有关系

@binarywang
Copy link
Member

请检查 commons-codec 版本,不能用 1.13的

@binarywang binarywang changed the title weixin-java-cp Last encoded character (before the paddings if any) is a valid base 64 alphabet but not a possible value Jun 11, 2020
@binarywang
Copy link
Member

binarywang commented Jun 11, 2020

wiki里常见问题里有说明过这个问题

@binarywang
Copy link
Member

准备换用guava替代commons-codec实现base64解码

@liaozan
Copy link

liaozan commented Nov 21, 2020

这个替换也没替换完啊,3.9.0里WxCryptUtil、WxMaCryptUtils、WxPayRefundNotifyResult、EntPayServiceImpl、还是用的 commons-codec

@binarywang
Copy link
Member

这个替换也没替换完啊,3.9.0里WxCryptUtil、WxMaCryptUtils、WxPayRefundNotifyResult、EntPayServiceImpl、还是用的 commons-codec

谁说要完全替换的,只是关于base64编码的代码

@Wechat-Group Wechat-Group locked as resolved and limited conversation to collaborators Nov 21, 2020
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants