encryptedData,vi 少数数据解密失败
发布于 5 年前 作者 hren 5411 次浏览 来自 问答

就是从微信传过来的数据中包含微信群组的信息,后台服务端做数据解密处理的时候会解密失败,但是只有极少数是解密失败的,现在找不到是啥原因导致的

这个是我们的解密代码:

/**
    * AES解密
    *
    * [@param](/user/param) data           //密文,被加密的数据
    * [@param](/user/param) key            //秘钥
    * [@param](/user/param) iv             //偏移量
    * [@param](/user/param) encodingFormat //解密后的结果需要进行的编码
    * [@return](/user/return)
    * [@throws](/user/throws) Exception
    */
   public static String decrypt(String data, String key, String iv, String encodingFormat) throws Exception {
//        initialize();

       //被加密的数据
       byte[] dataByte = Base64.decodeBase64(data);
       //加密秘钥
       byte[] keyByte = Base64.decodeBase64(key);
       //偏移量
       byte[] ivByte = Base64.decodeBase64(iv);


       try {
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS7Padding");

           SecretKeySpec spec = new SecretKeySpec(keyByte, "AES");

           AlgorithmParameters parameters = AlgorithmParameters.getInstance("AES");
           parameters.init(new IvParameterSpec(ivByte));

           cipher.init(Cipher.DECRYPT_MODE, spec, parameters);// 初始化

           byte[] resultByte = cipher.doFinal(dataByte);
           if (null != resultByte && resultByte.length > 0) {
String result = new String(resultByte, encodingFormat);
               return result;
           }
return null;
       } catch (NoSuchAlgorithmException e) {
e.printStackTrace();
       } catch (NoSuchPaddingException e) {
e.printStackTrace();
       } catch (InvalidParameterSpecException e) {
e.printStackTrace();
       } catch (InvalidKeyException e) {
e.printStackTrace();
       } catch (InvalidAlgorithmParameterException e) {
e.printStackTrace();
       } catch (IllegalBlockSizeException e) {
e.printStackTrace();
       } catch (BadPaddingException e) {
e.printStackTrace();
       } catch (UnsupportedEncodingException e) {
e.printStackTrace();
       }

return null;
   }
3 回复

官方可以关注一下吗

请问这个问题可以解决吗?我也遇到相同的情况了,间歇性的复现

也遇到同样的问题,请问解决了么?

微信官方为嘛不提供java SDK啊?

回到顶部