sha1加密算法

public static void main(String[] args) throws UnsupportedEncodingException {

/*
* 获取jsapi_ticket
*
*/

//获取access_token
String accessTokenUrl = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET";
accessTokenUrl = accessTokenUrl.replace("APPID", Configure.appID);
accessTokenUrl = accessTokenUrl.replace("APPSECRET", Configure.appsecret);
JSONObject jsonObject = NetTools.httpsRequest(accessTokenUrl, "GET", null);
// System.out.println("jsonObject---"+jsonObject);
String accessToken = (String) jsonObject.get("access_token");
// System.out.println("accessToken---"+accessToken);
//获取jsapi_ticket
String jsapiTicketUrl ="https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=ACCESS_TOKEN&type=jsapi";
jsapiTicketUrl = jsapiTicketUrl.replace("ACCESS_TOKEN", accessToken);
JSONObject jsapiObject = NetTools.httpsRequest(jsapiTicketUrl, "GET", null);
Integer errCode = (Integer) jsapiObject.get("errcode");
// System.out.println("errCode---"+errCode);
String ticket = (String) jsapiObject.get("ticket");


WxPaySendData data = new WxPaySendData();
data.setAppId(Configure.appID);
System.out.println("time--"+Calendar.getInstance().getTimeInMillis()+"".length());
String timeStr = Calendar.getInstance().getTimeInMillis()+"";
timeStr = timeStr.substring(0, 9);
data.setTimeStamp(timeStr);
data.setNonceStr(RandomStringGenerator.getRandomStringByLength(16));
data.setJspUrl("http://dipark.aramark.cn/oosweb/app/wx/recipeOrder/goTo?id=f2d001616b2f403fb13a86af62b61f92");
data.setJsapiTicket(ticket);
// String signature = UnifiedorderService.jsapiSign(data);
System.out.println("ticket---"+ticket);
System.out.println("nonceStr----"+data.getNonceStr());
System.out.println("timestamp----"+data.getTimeStamp());

// System.out.println("signature---"+signature);


//字典序排序
HashMap<String,Object> map=new HashMap<String,Object>();

map.put("jsapi_ticket", data.getJsapiTicket());
map.put("noncestr", data.getNonceStr());
map.put("timestamp", data.getTimeStamp());
map.put("url", data.getJspUrl());


Collection<String> keyset= map.keySet();

List<String> list=new ArrayList<String>(keyset);

Collections.sort(list);
//这种打印出的字符串顺序和微信官网提供的字典序顺序是一致的
String detail = "";
for(int i=0;i<list.size();i++){
if(i == 0 ){
detail = list.get(i)+"="+map.get(list.get(i));
}else{
detail += "&"+list.get(i)+"="+map.get(list.get(i));
}


System.err.println(list.get(i)+"="+map.get(list.get(i)));
}

System.err.println("detail--"+detail);
String s = "jsapi_ticket=sM4AOVdWfPE4DxkXGEs8VMCPGGVi4C3VM0P37wVUCFvkVAy_90u5h9nbSlYy3-Sl-HhTdfl2fzFy1AOcHKP7qg&noncestr=Wm3WZYTPz0wzccnW&timestamp=1414587457&url=http://mp.weixin.qq.com?params=value";
String ss = "jsapi_ticket=kgt8ON7yVITDhtdwci0qeVobpUZDYzWPTM3stkoQPWc3AFG-gv46LxoOBqb9JK7cTZYzNDOI9nS-jcW-ppp9yQ&noncestr=sc1b3z71h2fdf3lu&timestamp=1504253434&url=http://dipark.aramark.cn/oosweb/app/wx/recipeOrder/goTo?id=f2d001616b2f403fb13a86af62b61f92";
System.out.println("detail--"+s);
System.out.println("s--+"+getSha1(detail));

}

public static String getSha1(String str){
if (null == str || 0 == str.length()){
return null;
}
char[] hexDigits = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
'a', 'b', 'c', 'd', 'e', 'f'};
try {
MessageDigest mdTemp = MessageDigest.getInstance("SHA1");
mdTemp.update(str.getBytes("UTF-8"));

byte[] md = mdTemp.digest();
int j = md.length;
char[] buf = new char[j * 2];
int k = 0;
for (int i = 0; i < j; i++) {
byte byte0 = md[i];
buf[k++] = hexDigits[byte0 >>> 4 & 0xf];
buf[k++] = hexDigits[byte0 & 0xf];
}
return new String(buf);
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}

return null;
}












原文地址:https://www.cnblogs.com/kongxc/p/7463810.html