e019e273a26fd6d549ce7c0506ac72642c9335e6.svn-base 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. package org.jeecg.config.sign.util;
  2. import com.alibaba.fastjson.JSONObject;
  3. import lombok.extern.slf4j.Slf4j;
  4. import org.jeecg.common.exception.JeecgBootException;
  5. import org.jeecg.common.util.SpringContextUtils;
  6. import org.jeecg.common.util.oConvertUtils;
  7. import org.jeecg.config.StaticConfig;
  8. import org.springframework.util.DigestUtils;
  9. import org.springframework.util.StringUtils;
  10. import java.util.SortedMap;
  11. /**
  12. * 签名工具类
  13. *
  14. * @author jeecg
  15. * @date 20210621
  16. */
  17. @Slf4j
  18. public class SignUtil {
  19. public static final String xPathVariable = "x-path-variable";
  20. /**
  21. * @param params
  22. * 所有的请求参数都会在这里进行排序加密
  23. * @return 验证签名结果
  24. */
  25. public static boolean verifySign(SortedMap<String, String> params,String headerSign) {
  26. if (params == null || StringUtils.isEmpty(headerSign)) {
  27. return false;
  28. }
  29. // 把参数加密
  30. String paramsSign = getParamsSign(params);
  31. log.info("Param Sign : {}", paramsSign);
  32. return !StringUtils.isEmpty(paramsSign) && headerSign.equals(paramsSign);
  33. }
  34. /**
  35. * @param params
  36. * 所有的请求参数都会在这里进行排序加密
  37. * @return 得到签名
  38. */
  39. public static String getParamsSign(SortedMap<String, String> params) {
  40. //去掉 Url 里的时间戳
  41. params.remove("_t");
  42. String paramsJsonStr = JSONObject.toJSONString(params);
  43. log.info("Param paramsJsonStr : {}", paramsJsonStr);
  44. StaticConfig staticConfig = SpringContextUtils.getBean(StaticConfig.class);
  45. String signatureSecret = staticConfig.getSignatureSecret();
  46. if(oConvertUtils.isEmpty(signatureSecret) || signatureSecret.contains("${")){
  47. throw new JeecgBootException("签名密钥 ${jeecg.signatureSecret} 缺少配置 !!");
  48. }
  49. return DigestUtils.md5DigestAsHex((paramsJsonStr + signatureSecret).getBytes()).toUpperCase();
  50. }
  51. }