OtherUtil.java 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. package com.ylx.massage.utils;
  2. /**
  3. * @author jianlong
  4. * @date 2024-06-04 09:13
  5. */
  6. import java.security.MessageDigest;
  7. import java.util.Locale;
  8. import java.util.Random;
  9. /**
  10. * 其他工具类
  11. *
  12. */
  13. public class OtherUtil {
  14. private final static byte[] HEX = "0123456789ABCDEF".getBytes();
  15. private final static String STRING = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
  16. private final static String MESSAGE_DIGEST_INSTANCE = "SHA-1";
  17. private final static String ENCODING = "UTF-8";
  18. /**
  19. * 从字节数组到十六进制字符串转换
  20. */
  21. public static String bytes2HexString(byte[] b) {
  22. byte[] buff = new byte[2 * b.length];
  23. for (int i = 0; i < b.length; i++) {
  24. buff[2 * i] = HEX[(b[i] >> 4) & 0x0f];
  25. buff[2 * i + 1] = HEX[b[i] & 0x0f];
  26. }
  27. return new String(buff);
  28. }
  29. /**
  30. * 校验参数是否合法
  31. */
  32. public static boolean verification(String[] params, String signature) throws Exception {
  33. // 拼接
  34. String paramstr = params[0] + params[1] + params[2];
  35. // 获取 shal 算法封装类
  36. MessageDigest messageDigest = MessageDigest.getInstance(MESSAGE_DIGEST_INSTANCE);
  37. // 进行加密
  38. byte[] digestResult = messageDigest.digest(paramstr.getBytes(ENCODING));
  39. // 拿到加密结果
  40. String mysignature = OtherUtil.bytes2HexString(digestResult);
  41. mysignature = mysignature.toLowerCase(Locale.ROOT);
  42. // 是否正确
  43. return mysignature.equals(signature);
  44. }
  45. /**
  46. * 用户要求产生字符串的长度
  47. */
  48. public static String getRandomString(int length){
  49. Random random = new Random();
  50. StringBuilder sb = new StringBuilder();
  51. for(int i = 0; i < length; i++){
  52. int number = random.nextInt(62);
  53. sb.append(STRING.charAt(number));
  54. }
  55. return sb.toString();
  56. }
  57. }