微信测试服务器验证sha1加密法,工具类
1 package org.fc.Util; import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Arrays; import com.sun.mail.handlers.message_rfc822; public class SignUtil { private static String token="XXXXXX"; /**
* 传入三个参数以及微信的token(静态自己设定)验证,
* @param signature 签名用来核实最后的结果是否一致
* @param timestamp 时间标记
* @param nonce 随机数字标记
* @return 一个布尔值确定最后加密得到的是否与signature一致
*/
public static boolean checkSignature(String signature,
String timestamp,String nonce){
//将传入参数变成一个String数组然后进行字典排序
String[] arr=new String[]{token,timestamp,nonce};
Arrays.sort(arr);
//创建一个对象储存排序后三个String的结合体
StringBuilder content=new StringBuilder();
for(int i=0;i<arr.length;i++){
content.append(arr[i]);
} //启动sha1加密法的工具
MessageDigest md=null;
String tmpStr=null;
try {
md=MessageDigest.getInstance("SHA-1");
//md.digest()方法必须作用于字节数组
byte[] digest=md.digest(content.toString().getBytes());
//将字节数组弄成字符串
tmpStr=byteToStr(digest);
} catch (NoSuchAlgorithmException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
content=null; return tmpStr!=null?tmpStr.equals(signature.toUpperCase()):false; } /**
* 将字节加工然后转化成字符串
* @param digest
* @return
*/
private static String byteToStr(byte[] digest){
String strDigest="";
for(int i=0;i<digest.length;i++){
//将取得字符的二进制码转化为16进制码的的码数字符串
strDigest+=byteToHexStr(digest[i]);
}
return strDigest;
} /**
* 把每个字节加工成一个16位的字符串
* @param b
* @return
*/
public static String byteToHexStr(byte b){
//转位数参照表
char[] Digit= {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'}; //位操作把2进制转化为16进制
char[] tempArr=new char[2];
tempArr[0]=Digit[(b>>>4)&0X0F];//XXXX&1111那么得到的还是XXXX
tempArr[1]=Digit[b&0X0F];//XXXX&1111那么得到的还是XXXX //得到进制码的字符串
String s=new String(tempArr);
return s;
}
}
这个方法用于微信。如果有其他作用请分离
微信测试服务器验证sha1加密法,工具类的更多相关文章
- Android分享到微信和朋友圈的工具类
1.只要填写上正确的app_id,且引用上该工具类你就能实现分享到朋友圈和分享到微信. 2.需要到微信平台下载jar包,以及注册一个appid import android.content.Conte ...
- SHA1签名工具类java
package com.net.util; import java.security.MessageDigest; import java.util.Iterator; import java.uti ...
- 手机号码格式验证和 FASTDFS 工具类
常见大陆和香港号码格式验证 import java.util.regex.Matcher; import java.util.regex.Pattern; import java.util.regex ...
- java 验证表单工具类,史上最全
package com.wiker.utils; import java.util.regex.*; /** * * @version 1.0 * @author wiker * @since JDK ...
- java 生成微信的二维码 工具类
package com.app.wii.util; import java.io.File;import java.io.FileInputStream;import java.io.FileOutp ...
- 微信https请求工具类
工作中用到的微信https请求工具类. package com.gxgrh.wechat.tools; import com.gxgrh.wechat.wechatapi.service.System ...
- .net使用正则表达式校验、匹配字符工具类
开发程序离不开数据的校验,这里整理了一些数据的校验.匹配的方法: /// <summary> /// 字符(串)验证.匹配工具类 /// </summary> public c ...
- java 微信开发的工具类WeChatUtils
import com.alibaba.fastjson.JSONObject;import com.bhudy.entity.BhudyPlugin;import com.bhudy.service. ...
- Java 后台验证的工具类
Java 后台验证的工具类 public class ValidationUtil { //手机号 public static String mobile = "^( ...
随机推荐
- ASP.NET 显示项目之外的图片
1.<asp:Image>标签的使用Loginer.images是图片的路径 this.images.ImageUrl = "showImg.aspx?imgFile=" ...
- BZOJ1269——[AHOI2006]文本编辑器editor
1.题意:各种splay操作,一道好的模板题2333 2.分析:splay模板题,没啥解释QAQ #include <stack> #include <cstdio> #inc ...
- matlab -xlsread 打开xls文件出错:服务器出现意外情况
错误:xlsread:服务器出现意外情况 原因:非matlab问题,Excel的com加载项启用 解决方法:office - Excel选项-加载项:管理-com加载项-转到-取消可用加载项的勾选.
- BZOJ 2086: [Poi2010]Blocks
Description 每次可以将大于 \(k\) 的一个数 \(-1\), 在左边或右边的数 \(+1\) ,问最大能得到多长的序列每个数都大于等于 \(k\) . Sol 单调栈. 这道题好神啊q ...
- linux Mint wine安装qq,桌面快捷键配置
在桌面新建qq.desktop文件,添加以下内容 #!/usr/bin/env xdg-open[Desktop Entry]Comment=QQTerminal=falseName=QQExec=w ...
- 2. 上传Android代码到github
1. 建立git仓库 cd到本地项目根目录,执行git命令 git init 同时会在项目根目录下生成一个.git的隐藏文件 windows下先禁用 ...
- android分页请求,重复数据如何处理
1.如图 如图上的ks031数据,在数据请求时,第一次请求20条数据,再次加载下一页20条数据时,后台的数据处理导致ks031排序到了第2页,出现加载重复现象, 这种情况则是怎么处理? 有谁明白,求指 ...
- 排序之----插入排序(C#实现)
算法步骤:(从小到大) 1:将第一个元素与第二个元素比较大小,如果第一个元素小于等于第二个元素,不做处理,继续比较第二个元素和第三个元素. 如果第三个元素小于第二个元素,保存要移动的元素(第三个元素) ...
- spring定时任务详解(@Scheduled注解)( 转 李秀才的博客 )
在springMVC里使用spring的定时任务非常的简单,如下: (一)在xml里加入task的命名空间 xmlns:task="http://www.springframework.or ...
- MFC序列化与反序列化
#pragma once #include "afx.h" #include <vector> using std::vector; class HzyData : p ...