您的位置:首页 > 移动开发 > 微信开发

java 微信分享签名生成方法

2015-01-16 15:29 309 查看
public static String getSign(String noncestrs, String jsapi_tickets, String timestamps, String urls){
String[] arr = new String[] { "jsapi_ticket="+jsapi_tickets, "noncestr="+noncestrs, "timestamp="+timestamps, "url="+urls };
Arrays.sort(arr);
String string1 = null;
for (int i = 0; i < arr.length; i++) {
//content.append(arr[i]);
if(string1 == null){
string1 = arr[i]+"&";
}else{
string1 +=arr[i]+"&";
}
}
string1 = string1.substring(0, string1.length()-1);
System.out.println(string1);
MessageDigest md = null;
String tmpStr = null;
try {
md = MessageDigest.getInstance("SHA-1");
// 将三个参数字符串拼接成一个字符串进行sha1加密
byte[] digest = md.digest(string1.toString().getBytes());
tmpStr = byteToStr(digest);
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
return tmpStr;
}
/**
* 将字节数组转换为十六进制字符串
* @param byteArray
* @return
*/
private static String byteToStr(byte[] byteArray) {
String strDigest = "";
for (int i = 0; i < byteArray.length; i++) {
strDigest += byteToHexStr(byteArray[i]);
}
return strDigest;
}

/**
* 将字节转换为十六进制字符串
*
* @param mByte
*            *
* @return
**/
private static String byteToHexStr(byte mByte) {
char[] Digit = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a',
'b', 'c', 'd', 'e', 'f' };
char[] tempArr = new char[2];
tempArr[0] = Digit[(mByte >>> 4) & 0X0F];
tempArr[1] = Digit[mByte & 0X0F];

String s = new String(tempArr);
return s;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: