Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
 
 
 
 
 

70 строки
2.0 KiB

  1. package com.simple.utils;
  2. import java.security.MessageDigest;
  3. import java.security.NoSuchAlgorithmException;
  4. import java.util.Arrays;
  5. public class CheckUtil {
  6. //token为自己定义的一个字符串
  7. public static boolean checkSignature(String token, String signature,String timestamp,String nonce) {
  8. String[] arr = new String[]{token,timestamp,nonce};
  9. //排序
  10. Arrays.sort(arr);
  11. //生成字符串
  12. StringBuffer sb = new StringBuffer();
  13. for(int i=0; i<arr.length; i++) {
  14. sb.append(arr[i]);
  15. }
  16. //sha1加密
  17. String tmpStr = getSHA1Str(sb.toString());
  18. //加密字符串与signature比较的时候忽略大小写
  19. return tmpStr.equals(signature.toUpperCase());
  20. }
  21. private static String getSHA1Str(String content) {
  22. MessageDigest md = null;
  23. String tmpStr = null;
  24. try {
  25. md = MessageDigest.getInstance("SHA-1");
  26. // 将三个参数字符串拼接成一个字符串进行 shal 加密
  27. byte[] digest = md.digest(content.toString().getBytes());
  28. tmpStr = byteToStr(digest);
  29. } catch (NoSuchAlgorithmException e) {
  30. e.printStackTrace();
  31. }
  32. return tmpStr;
  33. }
  34. /**
  35. * 将字节数组转换为十六进制字符串
  36. * @param digest
  37. * @return
  38. */
  39. private static String byteToStr(byte[] digest) {
  40. String strDigest = "";
  41. for(int i = 0; i < digest.length; i++){
  42. strDigest += byteToHexStr(digest[i]);
  43. }
  44. return strDigest;
  45. }
  46. /**
  47. * 将字节转换为十六进制字符串
  48. * @param b
  49. * @return
  50. */
  51. private static String byteToHexStr(byte b) {
  52. char[] Digit = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
  53. char[] tempArr = new char[2];
  54. tempArr[0] = Digit[(b >>> 4) & 0X0F];
  55. tempArr[1] = Digit[b & 0X0F];
  56. String s = new String(tempArr);
  57. return s;
  58. }
  59. }