微信公众平台企业号回调模式的URL验证--jdk6、jdk7加密问题
来源:互联网 发布:小学生拼音软件下载 编辑:程序博客网 时间:2024/05/30 12:03
private
static
final
long
serialVersionUID = 4440739483644821986L;
String sToken =
"5XaQ8cG6x2pULd"
;
//这个Token是随机生成,但是必须跟企业号上的相同
String sCorpID =
"wx4edd47d3a6r4r991"
;
//这里是你企业号的CorpID
String sEncodingAESKey =
"jWmYm7qjusnxu65ZRjGtBxmz3KA1tkAj3ykkR6q2B2C"
;
//这个EncodingAESKey是随机生成,但是必须跟企业号上的相同
/**
* 确认请求来自微信服务器
* @throws IOException
*/
public
void
doGet(HttpServletRequest request, HttpServletResponse response)
throws
IOException{
// 微信加密签名
String sVerifyMsgSig = request.getParameter(
"msg_signature"
);
// 时间戳
String sVerifyTimeStamp = request.getParameter(
"timestamp"
);
// 随机数
String sVerifyNonce = request.getParameter(
"nonce"
);
// 随机字符串
String sVerifyEchoStr = request.getParameter(
"echostr"
);
String sEchoStr;
//需要返回的明文
PrintWriter out = response.getWriter();
WXBizMsgCrypt wxcpt;
try
{
wxcpt =
new
WXBizMsgCrypt(sToken, sEncodingAESKey, sCorpID);
sEchoStr = wxcpt.VerifyURL(sVerifyMsgSig, sVerifyTimeStamp,sVerifyNonce, sVerifyEchoStr);
// 验证URL成功,将sEchoStr返回
out.print(sEchoStr);
}
catch
(AesException e1) {
e1.printStackTrace();
}
}
关于上面接入代码不过多讲解,只说我碰到的问题
我本机是jdk1.6.0_23 ,下载JCEPolicyJDK6,,百度中搜索"UnlimitedJCEPolicyJDK6"这个进行下载,覆盖到\lib\security中,
还有官方提供的代码报错部分解决办法(WXBizMsgCrypt.java,PKCS7Encoder.java):
把Arrays.copyOfRange()方法,替换成下面的方法
public static byte[] copyOfRange(byte[] original, int from, int to) {
int newLength = to - from;
if (newLength < 0)
throw new IllegalArgumentException(from + " > " + to);
byte[] copy = new byte[newLength];
System.arraycopy(original, from, copy, 0,
Math.min(original.length - from, newLength));
return copy;
}
static String CHARSET = "utf-8";
static byte[] encode(int count) {
byte[] b = null;
try{
// 计算需要填充的位数
int amountToPad = BLOCK_SIZE - (count % BLOCK_SIZE);
if (amountToPad == 0) {
amountToPad = BLOCK_SIZE;
}
// 获得补位所用的字符
char padChr = chr(amountToPad);
String tmp = new String();
for (int index = 0; index < amountToPad; index++) {
tmp += padChr;
}
b = tmp.getBytes(CHARSET);
}catch(Exception e){
e.printStackTrace();
}
return b;
}
剩下就搞定了
0 0
- 微信公众平台企业号回调模式的URL验证--jdk6、jdk7加密问题
- 微信公众平台企业号回调模式的URL验证
- 微信公众平台企业号回调模式的URL验证——Java
- 微信公众平台企业号回调模式的URL验证——Java
- ruby on rail 微信企业号回调模式 url初次验证时 签名的加密验证
- 微信公众平台Token验证失败问题的解决
- 微信公众平台的接口url
- 微信公众平台开发 微信公众平台开发模式 企业微信公众平台 刮刮乐
- ruby on rail 微信企业号回调模式 url初次验证时 echostr的解密
- 微信公众平台——企业号编辑模式的开启和使用
- php7.1微信公众平台消息安全模式的加密及解密
- php7.1微信公众平台消息安全模式的加密及解密
- php7.1微信公众平台消息安全模式的加密及解密
- 企业微信公众平台运营的11个技巧
- 微信企业号接入JDK6和JDK7及JDK8加解密失败处理(Java)
- 微信公众平台开发测试账号配置URL失败的问题
- 企业微信公众平台建设指南
- 企业微信公众平台建设指南
- 开门大吉
- stl--------deque
- CentOS下安装JDK1.7
- 判断ListView的每一个item高度
- 揭开计算机的神秘面纱
- 微信公众平台企业号回调模式的URL验证--jdk6、jdk7加密问题
- 在Android中嵌入Unity3d
- wegg
- IIS SSL配置
- Spark入门到精通视频学习资料--第四章:基于Spark的流处理框架Spark Streaming(2讲)
- stl操作1
- 关于UIScrollView的简单使用及介绍
- Go语言(container介绍)
- ImageView从SdCard中获取图片