Browse Source

md5 校验

tall3
ccsens_wu 4 years ago
parent
commit
a372d90cb9
  1. 38
      cloudutil/src/main/java/com/ccsens/cloudutil/aspect/CacheMd5Aspect.java
  2. 8
      util/src/main/java/com/ccsens/util/JsonResponse.java
  3. 30
      util/src/main/java/com/ccsens/util/Md5Util.java

38
cloudutil/src/main/java/com/ccsens/cloudutil/aspect/CacheMd5Aspect.java

@ -1,14 +1,17 @@
package com.ccsens.cache_test.aspect;
package com.ccsens.cloudutil.aspect;
import com.alibaba.fastjson.JSONObject;
import com.ccsens.cache_test.bean.dto.CacheTest;
import com.ccsens.cache_test.bean.vo.CacheTestVo;
import com.ccsens.cache_test.util.JsonResponse;
import com.ccsens.cache_test.util.Md5Util;
import com.ccsens.util.JsonResponse;
import com.ccsens.util.Md5Util;
import com.ccsens.util.WebConstant;
import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.*;
import org.springframework.stereotype.Component;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletRequest;
@Slf4j
@ -20,21 +23,6 @@ public class CacheMd5Aspect {
public void cacheMd5(){
}
//
// @After("cacheMd5()")
// public void cacheMd5TestAspect(JoinPoint joinPoint) throws JsonProcessingException {
// Object[] args = joinPoint.getArgs();
//// Object proceed = joinPoint.(args);
// Signature signature = joinPoint.getSignature();
// String kind = joinPoint.getKind();
// SourceLocation sourceLocation = joinPoint.getSourceLocation();
// JoinPoint.StaticPart staticPart = joinPoint.getStaticPart();
// Object target = joinPoint.getTarget();
// Object aThis = joinPoint.getThis();
// System.out.println(joinPoint);
//
// System.out.println("============================================---");
// }
@Around("cacheMd5()")
public Object cacheMd5TestAspect1(ProceedingJoinPoint joinPoint) throws Throwable {
@ -42,11 +30,12 @@ public class CacheMd5Aspect {
//拿到入参
Object[] args = joinPoint.getArgs();
CacheTest cacheTest = args == null || args.length < 1 ? null : (CacheTest)args[0];
HttpServletRequest request = ((ServletRequestAttributes)
RequestContextHolder.getRequestAttributes()).getRequest();
//获取入参的md5值
String inMd5 = cacheTest == null ? null : cacheTest.getMd5();
final String inMd5 = request.getHeader(WebConstant.HEADER_KEY_TOKEN);
//获取返回值
JsonResponse<Object> proceed = (JsonResponse<Object>) joinPoint.proceed(args);
JsonResponse<? extends Object> proceed = (JsonResponse<? extends Object>) joinPoint.proceed(args);
//入参没有md5直接返回
if(inMd5 == null){
log.info("cache---入参md5为空");
@ -73,7 +62,10 @@ public class CacheMd5Aspect {
log.info("md5:{}",outMd5);
if(inMd5.equalsIgnoreCase(outMd5)){
log.info("md5相同则返回空");
proceed.setMd5Status(JsonResponse.MD5Status.CHECK_SAME_YES);
proceed.setData(null);
} else {
proceed.setMd5Status(JsonResponse.MD5Status.CHECK_SAME_NO);
}
long e = System.currentTimeMillis();
log.info("切面时间:{}",e-s);

8
util/src/main/java/com/ccsens/util/JsonResponse.java

@ -46,6 +46,14 @@ public class JsonResponse<T> {
private String msg;
@ApiModelProperty(value="成功与否")
private boolean success;
@ApiModelProperty(value = "md5校验状态 0:未校验 1:校验一致 2:校验不一致")
private byte md5Status = 0;
public static class MD5Status{
public final static byte UNCHECK = 0;
public final static byte CHECK_SAME_YES = 1;
public final static byte CHECK_SAME_NO = 2;
}
private JsonResponse() {
}

30
util/src/main/java/com/ccsens/util/Md5Util.java

@ -59,6 +59,36 @@ public class Md5Util {
return str;
}
public static String stringTo(String plainText) {
try {
//生成实现指定摘要算法的 MessageDigest 对象。
MessageDigest md = MessageDigest.getInstance("MD5");
//使用指定的字节数组更新摘要。
md.update(plainText.getBytes());
//通过执行诸如填充之类的最终操作完成哈希计算。
byte b[] = md.digest();
//生成具体的md5密码到buf数组
int i;
StringBuffer buf = new StringBuffer("");
for (int offset = 0; offset < b.length; offset++) {
i = b[offset];
if (i < 0) {
i += 256;
}
if (i < 16) {
buf.append("0");
}
buf.append(Integer.toHexString(i));
}
return buf.toString();
// System.out.println("32位: " + buf.toString());// 32位的加密
// System.out.println("16位: " + buf.toString().substring(8, 24));// 16位的加密,其实就是32位加密后的截取
}
catch (Exception e) {
e.printStackTrace();
}
return "";
}
// public static void main(String args[]) {
// String path = "D:\\home\\btpro\\uploads\\delivers\\20190509\\fc3d9e330c75414d96ebadaac0294fdc.pdf";

Loading…
Cancel
Save