新增加签验签功能

最近项目需求,要求给项目进行加签验签。目的是为了防止数据被篡改,加强数据安全性。

加签验签的功能实现大致分为:

1(加签)前端对数据进行MD5加密,将MD5后的key放入请求头中,与数据一同传入后台。

                                                        

2(验签)后台接收数据时,在aop层对传输过来的数据重新进行MD5加密,并且取出请求头中的key,与其对比若一致则表明数据没有被篡改,若不一致则表示数据遭到篡改直接返回提示“验签失败”。

 1 @Around("md5InfoBefore()")
 2     public Object md5InfoBefore(ProceedingJoinPoint point) throws Throwable {
 3         log.info("--------md5InfoBefore PointCut Start--------");
 4         HttpServletRequest request = getHttpServletRequest();
 5         String requestUri = request.getRequestURI();
 6         log.info("--------requestUri:"+requestUri);
 7         //切点中获取requestBody中的值
 8         Object[] objects = point.getArgs();
 9         Map<String,Object> reqData=(Map<String, Object>) objects[0];
10         String key= MD5Encrypt.encodeWithoutfix(reqData.get("data").toString()+"&appKey=778899&AppSecret=123456" + new SimpleDateFormat("yyyyMMdd").format(new Date()));
11         if (!request.getHeader("key").equals(key) || StringUtils.isEmpty(request.getHeader("key"))){
12             throw new Exception("验签失败");
13         }
14         Map<String,Object> maps=new HashMap<>();
15         maps.put("data",JsonUtil.jsonToBean(reqData.get("data").toString(),Map.class));
16         objects[0] =maps;
17         return point.proceed(objects);
18     }

 

3(问题)一开始前后端加签一直不成功,原因:前端传入的data数据在后台接收时,顺序会被打乱,后端将乱序的data数据进行MD5后会产生不同的key因此与前端的key不一致。

               解决方案:前端将data数据传入后台时,对数据进行json转化,转成String类型。后台接收时,以String类型接收并且进行MD5这样就会与前端的key一致从而通过验签。

 

转载于:https://www.cnblogs.com/lei-zhou/p/9542409.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值