import java.util.UUID;
import java.util.Map;
import java.util.HashMap;
import java.util.Formatter;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.io.UnsupportedEncodingException;public classSign {/*public static void main(String[] args) {
String ticket = WxUtils.getTicket();
// 注意 URL 一定要动态获取,不能 hardcode
String url = "http://"+WxUtils.APP_DOMAIN+"/RAFFLE/gotoLetter";
Map ret = sign(ticket, url);
for (Map.Entry entry : ret.entrySet()) {
System.out.println(entry.getKey() + ", " + entry.getValue());
}
};*/
public static Mapsign(String jsapi_ticket, String url) {
Map ret = new HashMap();
String nonce_str=create_nonce_str();
String timestamp=create_timestamp();
String string1;
String signature= "";//注意这里参数名必须全部小写,且必须有序
string1 = "jsapi_ticket=" + jsapi_ticket +
"&noncestr=" + nonce_str +
"×tamp=" + timestamp +
"&url=" +url;
System.out.println(string1);try{
MessageDigest crypt= MessageDigest.getInstance("SHA-1");
crypt.reset();
crypt.update(string1.getBytes("UTF-8"));
signature=byteToHex(crypt.digest());
}catch(NoSuchAlgorithmException e)
{
e.printStackTrace();
}catch(UnsupportedEncodingException e)
{
e.printStackTrace();
}
ret.put("url", url);
ret.put("jsapi_ticket", jsapi_ticket);
ret.put("nonceStr", nonce_str);
ret.put("timestamp", timestamp);
ret.put("signature", signature);returnret;
}private static String byteToHex(final byte[] hash) {
Formatter formatter= newFormatter();for (byteb : hash)
{
formatter.format("%02x", b);
}
String result=formatter.toString();
formatter.close();returnresult;
}private staticString create_nonce_str() {return UUID.randomUUID().toString().replace("-", "");
}private staticString create_timestamp() {return Long.toString(System.currentTimeMillis() / 1000);
}
}