Base64编码字符超过76个出现换行符

       前段时间在过接口md5校验的时候踩过这个坑,校验方式:MD5(base64(字符串)),在开发环境(window)下没问题,但是发布在linux上面就出现bug,一直校验不通过,但数据放回开发环境又没问题,分别在window环境与linux环境打印原字符串、base64加密、md5串,发现源字符串、base64加密一致,md5串不一致。
       第一反应是MD5加密位数不一样,同个字符串在MD5加密不一致的唯一可能是MD5位数不一样,同个段代码明显不可能。观察打印出来的字符串,发现base64加密后的字符串换行了,找到问题了,linux换行是“\n”,window换行“\r\n”,mac换行“\t”。所以虽然打印base64是一样的,但是在经过第二轮MD5(获取其他加密方式),会有换行符的区别,当然如果双方都是用一直的系统不会出现这个问题。

String base64 = Base64.encodeBase64(token2.getBytes()).toString().replaceAll("[\\s*\t\n\r]","")
String md5Token = DigestUtils.md5Hex(base64);

后面了解到是使用Base64包的问题,使用org.apache.commons包下的Base64.encodeBase64String不会有换行符。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值