背景:

    下午在做一个前后端md5加密签名校验.

    前端用参数A,B,C,经过MD5加密函数,得到签名D.

    然后前端带着ABCD一块来到后端.

    同样的,后端拿到请求后,用MD5函数对ABC进行加密,得到签名E.

    然后对比D和E,如果相等,证明签名没有问题.

  问题:

    经过数次论证,在相同的条件下(相同的参数,相同的加密函数),D和E始终不相等.

    但是前端的ABC三个参数,手动使用test方法,放在后端的MD5加密工具类util里面来执行,得到签名F.

    签名F和签名D相等,但是签名D和签名E不等. 也就是前端加密和工具类加密相同,但是前端加密和后端流程性加密不同.

    这就很奇葩.有几个可能都会导致这种情况发生.

  分析:

    遇到这种情况,问题初步定为在调用函数前,对参数进行了加工. 但是经过测试,没发现有问题.

    然后再次核查前端调用逻辑,也没有问题.

    然后突然奇想,使用json对象日志来观察下. (因为这段代码的日志,一直都是xx.getParam()这种,直接输出String)

    果然,直接就找到了问题所在. 对象输出 {"data": "\"aaaaaaaaaaaa\""}

    也就是前端传参,实际上将字符串的前后都加上了双引号.

  解决:

    最后前端检查接口发现,是对字符串经过了两次转json.

  思考:

    以后输入日志参数,请尽量使用打印json,还原pojo的原貌,说不定能更快发现问题.    

最新文章

  1. 与你相遇好幸运,德淘gen8历程
  2. Python正则表达式:最短匹配
  3. WIN32 API编程之 透明static
  4. about JNI
  5. Eclipse HibernateTools安装
  6. 转载:C++ STL set学习
  7. Clover
  8. [Cache] C#操作缓存--CacheHelper缓存帮助类 (转载)
  9. 关于iOS应用管理之九宫格的坐标计算以及与UIScrollView的结合
  10. cf486C Palindrome Transformation
  11. Qt中添加OpenCV库
  12. Spring IOC 之Bean定义的继承
  13. 筛法求素数Java
  14. Pickle模块数据对象持久化操作
  15. 后台任务hangfire
  16. 概率p输出1,概率1-p输出0,等概率输出0和1
  17. 利用privoxy劫持http网站数据,插入广告,获取用户名,密码
  18. Java进程线程理解
  19. Elasticsearch6.3 使用jdbc连接
  20. Android 界面间传参数

热门文章

  1. C++基础语法学习:STL
  2. $_GET方法踩坑
  3. vlc qt player 播放器开发实例
  4. 使用Prometheus监控docker compose方式部署的ES
  5. 【Java应用服务体系】「序章入门」全方位盘点和总结调优技术专题指南
  6. 财务精度:BigInteger 与 BigDecimal
  7. 12月9日内容总结——静态文件以及配置、form表单属性的作用、request对象、python连接数据库和Django连接数据库、ORM的基础知识介绍
  8. C++ 地球人口承载力
  9. Mybatis获取插入值的ID
  10. redis-07主从复制