收藏
回答

微信小程序开发,解密算法官方没有JAVA示例DEMO么?

问题模块
API和组件

https://mp.weixin.qq.com/debug/wxadoc/dev/api/signature.html



微信官方提供了多种编程语言的示例代码(点击下载)。每种语言类型的接口名字均一致。调用方式可以参照示例。


下载发现没有JAVA示例代码,so what ??

最后一次编辑于  2017-01-18
回答关注问题邀请回答
收藏

4 个回答

  • 丶三疯醒
    丶三疯醒
    2017-02-06

    @William  initialize();generateIV();这两个方法不存在


    2017-02-06
    赞同
    回复
  • 黑白画映
    黑白画映
    2017-01-18

    二楼的William  ,导入的包可以发粗来看看么。AES ,Base64


    initialize();


    Key sKeySpec = new SecretKeySpec(keyByte, "AES");


    generateIV()

    这些方法报错。


    2017-01-18
    赞同
    回复
  • 黑白画映
    黑白画映
    2017-01-18

    哈哈,谢谢楼上的,我试试。

    2017-01-18
    赞同
    回复
  • We
    We
    2017-01-18

    /** * 解密用户敏感数据

    * @param encryptedData 明文

    * @param iv            加密算法的初始向量

    * @param sessionId     会话ID

    * @return

    */

    @RequestMapping(value = "/api/v1/wx/decodeUserInfo", method = RequestMethod.GET, produces = "application/json")

    public Map<String,Object> decodeUserInfo(

           @RequestParam(required = true,value = "encryptedData") String encryptedData,       

           @RequestParam(required = true,value = "iv") String iv,       

           @RequestParam(required = true,value = "sessionId") String sessionId){  

     

      //从缓存中获取session_key

        Object wxSessionObj = redisUtil.get(sessionId);   

       if(null == wxSessionObj){       

         return rtnParam(40008, null);

        }
        String wxSessionStr = (String)wxSessionObj;

        String sessionKey = wxSessionStr.split("#")[0];   


       try {

            AES aes = new AES();    

       

           byte[] resultByte = aes.decrypt(Base64.decodeBase64(encryptedData), Base64.decodeBase64(sessionKey), Base64.decodeBase64(iv));     

      

           if(null != resultByte && resultByte.length > 0){


                String userInfo = new String(resultByte, "UTF-8");    

           

               return rtnParam(0, userInfo);

            }


        } catch (InvalidAlgorithmParameterException e) {

            e.printStackTrace();


        } catch (UnsupportedEncodingException e) {

            e.printStackTrace();


        }   


       return rtnParam(50021, null);


    }
     

    public byte[] decrypt(byte[] content, byte[] keyByte, byte[] ivByte) throws InvalidAlgorithmParameterException {    initialize();   

      try {

            Cipher cipher = Cipher.getInstance("AES/CBC/PKCS7Padding");
            Key sKeySpec = new SecretKeySpec(keyByte, "AES");
     
            cipher.init(Cipher.DECRYPT_MODE, sKeySpec, generateIV(ivByte));// 初始化
            byte[] result = cipher.doFinal(content);        return result;
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace(); 
        } catch (NoSuchPaddingException e) {
            e.printStackTrace(); 
        } catch (InvalidKeyException e) {
            e.printStackTrace();
        } catch (IllegalBlockSizeException e) {
            e.printStackTrace();
        } catch (BadPaddingException e) {
            e.printStackTrace();
        } catch (NoSuchProviderException e) {        // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (Exception e) {        // TODO Auto-generated catch block
            e.printStackTrace();
        }


    2017-01-18
    赞同
    回复