类 WeChatCiphertextWeChatMessageCodec

java.lang.Object
net.jlxxw.wechat.event.codec.WeChatCiphertextWeChatMessageCodec
所有已实现的接口:
WeChatMessageCodec

public class WeChatCiphertextWeChatMessageCodec extends Object implements WeChatMessageCodec
提供接收和推送给公众平台消息的加解密接口(UTF8编码的字符串).
  1. 第三方回复加密消息给公众平台
  2. 第三方收到公众平台发送的消息,验证消息的安全性,并对消息进行解密。
说明:异常java.security.InvalidKeyException:illegal Key Size的解决方案
  1. 在官方网站下载JCE无限制权限策略文件
    适用JDK6的JCE补丁:
       http://www.oracle.com/technetwork/java/javase/downloads/jce-6-download-429243.html
     适用JDK7的JCE补丁:
      http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html
     适用JDK8的JCE补丁:
      http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html
      
  2. 下载后解压,可以看到local_policy.jar和US_export_policy.jar以及readme.txt
  3. 如果安装了JRE,将两个jar文件放到%JRE_HOME%\lib\security目录下覆盖原来的文件
  4. 如果安装了JDK,将两个jar文件放到%JDK_HOME%\jre\lib\security目录下覆盖原来文件
作者:
lcy
  • 构造器详细资料

  • 方法详细资料

    • init

      public void init() throws AesException
      token 公众平台上,开发者设置的token encodingAesKey 公众平台上,开发者设置的EncodingAESKey appId 公众平台 appId
      抛出:
      AesException - 执行失败,请查看该异常的错误码和具体的错误信息
    • decrypt

      public String decrypt(String uri, String data) throws AesException
      信息解密
      指定者:
      decrypt 在接口中 WeChatMessageCodec
      参数:
      uri - uri
      data - 密文
      返回:
      明文
      抛出:
      AesException
    • decrypt

      public String decrypt(String msgSignature, String timeStamp, String nonce, String postData) throws AesException
      检验消息的真实性,并且获取解密后的明文.
      1. 利用收到的密文生成安全签名,进行签名验证
      2. 若验证通过,则提取xml中的加密消息
      3. 对消息进行解密
      参数:
      msgSignature - 签名串,对应URL参数的msg_signature
      timeStamp - 时间戳,对应URL参数的timestamp
      nonce - 随机串,对应URL参数的nonce
      postData - 密文,对应POST请求的数据
      返回:
      解密后的原文
      抛出:
      AesException - 执行失败,请查看该异常的错误码和具体的错误信息
    • encrypt

      public String encrypt(String text) throws AesException
      将信息进行加密
      指定者:
      encrypt 在接口中 WeChatMessageCodec
      参数:
      text - 要加密的信息
      返回:
      加密后的信息
      抛出:
      AesException
    • decrypt

      public String decrypt(String text) throws AesException
      对密文进行解密.
      参数:
      text - 需要解密的密文
      返回:
      解密得到的明文
      抛出:
      AesException - aes解密失败