md5 中文加密 前后端不一致问题解决

    由于项目要做完整性校验,防止参数被中途篡改,所以采取前端先把所有参数组合在一起,用MD5加盐的方式加密一次,然后把明文的参数和加密后的参数一起传入后端,在拦截器里进行参数对比,方式就是在拦截器里面把明文参数再用MD5加密一次,将传入的密文参数进行比对,结果比较坑的事情来了,前端加密的字符串和后端明文加密后的字符串经过比对,发现不一致,经过仔细推敲,发现可能是中文编码的问题造成,在对前端要加密字符串进行编码,和后端的明文字符串进行编码后,问题解决,解决方案如下:

js:

var md5_sign=MD5(encodeURIComponent(‘2350-公司领导-张三-a9e8a4371057’));

java 拦截器:

String key=MD5Util.MD5Encode(URLEncoder.encode("2350-公司领导-张三-a9e8a4371057"));

这样加密后 后端获取的md5_sign参数和加密后的字符串 key 是一致的,如果数据被篡改,前端和后端对比的字符串不一致,请求将会被拦截!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值