收藏
回答

小程序java后端解密用户信息报 IV not 16 bytes long ?

在将小程序发布为体验版后,就报错了。

之前一直测试都没有问题,提交到微信官网审核就出现这个问题,求大神帮忙解决。


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

2 个回答

  • lt
    lt
    2020-07-01
    byte[] ivByte = Base64.getDecoder().decode(iv);
    点到decode里面看,这边使用的是ISO_8859_1
    public byte[] decode(String src) {
        return decode(src.getBytes(StandardCharsets.ISO_8859_1));
    }
    
    解码之后不要用utf-8转换,直接使用byte[]类型
    IvParameterSpec ipv = new IvParameterSpec(ivByte);
    cipher.init(Cipher.DECRYPT_MODE,keySpec,ipv);
    
    所以其实是没有注意到编码格式的问题
    


    2020-07-01
    有用
    回复
  • ➡王镭树⬅
    ➡王镭树⬅
    2020-02-14

    遇到了同样的问题,弄了一下午,解决了。

    原因是,在三个数据作为参数传输的过程中,内容中的 +会被替换为 空格。

    所以需要对参数转码,转码后发现特殊字符被替换为%3D,再给换回来即可。!

    URLEncoder.encode(encryptData,"UTF-8").replace("%3D","=").replace("%2F","/")
    


    2020-02-14
    有用
    回复
登录 后发表内容
问题标签