WechatUtil.java 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. package com.yingying.tourist.common;
  2. import java.io.UnsupportedEncodingException;
  3. import java.security.MessageDigest;
  4. import java.security.NoSuchAlgorithmException;
  5. import java.util.Formatter;
  6. import java.util.HashMap;
  7. import java.util.Map;
  8. import java.util.UUID;
  9. public class WechatUtil {
  10. /**
  11. * js-sdk微信加密
  12. *
  13. * @param jsapi_ticket
  14. * @param url
  15. * @return
  16. */
  17. public static Map<String, String> sign(String jsapi_ticket, String url) {
  18. Map<String, String> ret = new HashMap<String, String>();
  19. String nonce_str = create_nonce_str();
  20. String timestamp = create_timestamp();
  21. String string1;
  22. String signature = "";
  23. // 注意这里参数名必须全部小写,且必须有序
  24. string1 = "jsapi_ticket=" + jsapi_ticket + "&noncestr=" + nonce_str + "&timestamp=" + timestamp + "&url=" + url;
  25. System.out.println(string1);
  26. try {
  27. MessageDigest crypt = MessageDigest.getInstance("SHA-1");
  28. crypt.reset();
  29. crypt.update(string1.getBytes("UTF-8"));
  30. signature = byteToHex(crypt.digest());
  31. } catch (NoSuchAlgorithmException e) {
  32. e.printStackTrace();
  33. } catch (UnsupportedEncodingException e) {
  34. e.printStackTrace();
  35. }
  36. ret.put("url", url);
  37. ret.put("nonceStr", nonce_str);
  38. ret.put("timestamp", timestamp);
  39. ret.put("signature", signature);
  40. return ret;
  41. }
  42. private static String byteToHex(final byte[] hash) {
  43. Formatter formatter = new Formatter();
  44. for (byte b : hash) {
  45. formatter.format("%02x", b);
  46. }
  47. String result = formatter.toString();
  48. formatter.close();
  49. return result;
  50. }
  51. private static String create_nonce_str() {
  52. return UUID.randomUUID().toString();
  53. }
  54. private static String create_timestamp() {
  55. return Long.toString(System.currentTimeMillis() / 1000);
  56. }
  57. }