base64,网上工具编码结果不一致问题探讨
今天我们就来聊一聊base64
相信同学们肯定接触的不少关于base64的编码和解码,平时 见到base64之后的内容 大概就能看出来这是base64出来的结果.
或者平时在对接 第三方系统时,对方或者我方在对数据进行加密等等都会用到
今天我就来说一说我最近几天遇到的问题: base64 在不同的在线网站上编码的内容不一致
比如:
{"test":"12345","name":"我是大帅"}
上面的一段很简单的json字符串 我们随便找一个在线网站,直接上结果吧
此时编码的结果为: eyJ0ZXN0IjoiMTIzNDUiLCJuYW1lIjoi5oiR5piv5aSn5biFIn0=
在找一个编码网站:
此时得到的结果为:JTdCJTIydGVzdCUyMiUzQSUyMjEyMzQ1JTIyJTJDJTIybmFtZSUyMiUzQSUyMiV1NjIxMSV1NjYyRiV1NTkyNyV1NUUwNSUyMiU3RA==
当时我很诧异, 这是什么情况 为什么base64的结果会不一会样 但是 貌似第一个是对的
经过几番折腾 我发现了其中的奥妙
直接公布答案吧,第一种是对的,而为什么出现第二种呢 原因就是他们在转码之前将字符串进行了url编码
我们来重现一下
同样是这段json
{"test":"12345","name":"我是大帅"}
我们先 url转码:
得到:%7B%22test%22%3A%2212345%22%2C%22name%22%3A%22%E6%88%91%E6%98%AF%E5%A4%A7%E5%B8%85%22%7D
在进行base64:
就得到了不正确的base64:JTdCJTIydGVzdCUyMiUzQSUyMjEyMzQ1JTIyJTJDJTIybmFtZSUyMiUzQSUyMiV1NjIxMSV1NjYyRiV1NTkyNyV1NUUwNSUyMiU3RA==
结论 在使用在线工具的时候 要选择好!!!
文中使用的在线工具地址分别是:
1:https://base64.us/
2:https://www.zxgj.cn/g/base64
谢谢大家