Sha1Util.java 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. package com.hssx.utils;
  2. import java.net.URLDecoder;
  3. import java.security.MessageDigest;
  4. import java.util.Iterator;
  5. import java.util.Map;
  6. import java.util.Random;
  7. import java.util.Set;
  8. import java.util.SortedMap;
  9. /*
  10. '============================================================================
  11. 'api说明:
  12. 'createSHA1Sign创建签名SHA1
  13. 'getSha1()Sha1签名
  14. '============================================================================
  15. '*/
  16. public class Sha1Util {
  17. public static void main(String[] args) {
  18. String str = "jsapi_ticket=kgt8ON7yVITDhtdwci0qecaNzS34qhbQACy88uRm_S0XvT3hcWiBONbLzKnA5o5uPukt2sA3a8bBfETg4TyaQg&noncestr=10907813b97e249163587e6246612e21&timestamp=1516590573&url=http://www.dzjy.com/payHtml.html?num=1&code=001EjC0a2q6qoO0fn2Z92E6D0a2EjC0D&state=1";
  19. String sign = getSha1(str);
  20. System.out.println(sign);
  21. }
  22. public static String getNonceStr() {
  23. Random random = new Random();
  24. return MD5Util.MD5Encode(String.valueOf(random.nextInt(10000)), "UTF-8");
  25. }
  26. public static String getTimeStamp() {
  27. return String.valueOf(System.currentTimeMillis() / 1000);
  28. }
  29. //创建签名SHA1
  30. public static String createSHA1Sign(SortedMap<String, String> signParams) throws Exception {
  31. StringBuffer sb = new StringBuffer();
  32. Set es = signParams.entrySet();
  33. Iterator it = es.iterator();
  34. while (it.hasNext()) {
  35. Map.Entry entry = (Map.Entry) it.next();
  36. String k = (String) entry.getKey();
  37. String v = (String) entry.getValue();
  38. sb.append(k + "=" + v + "&");
  39. //要采用URLENCODER的原始值!
  40. }
  41. String params = sb.substring(0, sb.lastIndexOf("&"));
  42. System.out.println("sha1之前:" + params);
  43. System.out.println("SHA1签名为:"+getSha1(params));
  44. return getSha1(params);
  45. }
  46. //Sha1签名
  47. public static String getSha1(String str) {
  48. if (str == null || str.length() == 0) {
  49. return null;
  50. }
  51. char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
  52. 'a', 'b', 'c', 'd', 'e', 'f' };
  53. try {
  54. MessageDigest mdTemp = MessageDigest.getInstance("SHA1");
  55. mdTemp.update(str.getBytes("UTF-8"));
  56. byte[] md = mdTemp.digest();
  57. int j = md.length;
  58. char buf[] = new char[j * 2];
  59. int k = 0;
  60. for (int i = 0; i < j; i++) {
  61. byte byte0 = md[i];
  62. buf[k++] = hexDigits[byte0 >>> 4 & 0xf];
  63. buf[k++] = hexDigits[byte0 & 0xf];
  64. }
  65. return new String(buf);
  66. } catch (Exception e) {
  67. return null;
  68. }
  69. }
  70. }