Base64和urlencode

 我来答
温屿17
2022-07-25 · TA获得超过1.2万个赞
知道小有建树答主
回答量:827
采纳率:0%
帮助的人:95.7万
展开全部

使用base64的初衷。是为了方便把含有不可见字符串的信息用可见字符串表示出来

我们知道在计算机中任何数据都是按ascii码存储的,而ascii码的128~255之间的值是不可见字符。

而在网络上交换数据时,比如说从A地传到B地,往往要经过多个路由设备,由于不同的设备对字符的处理方式有一些不同,这样那些不可见字符就有可能被处理错误,这是不利于传输的。所以就先把数据先做一个Base64编码,统统变成可见字符,这样出错的可能性就大降低了。

urlencode

url编码主要是为了解决一些url中的一些特殊字符和歧义字符或者中文字符的传输问题,

1. base64编码里面有一个 “+” 号,在urlecode编码中 “+” 会被解码成空格,urlencode时,"+" 号肯定是由空格编码出来的,但是base64编码的结果中 "+" 不是空格编码出来的,如果将base64编码作为安全的url编码使用,则 “+” 将被解码成空格,这是我们不愿看到的; 所以不要base64编码作为url编码来使用.

2. 我们知道http头里面可能会用base64编码来传输一些信息,因为这些信息不会被web服务器默认做url解码的,我们可以得到原始的编码信息, 所以http头里面使用base64编码是可以接受的

用base64编码后再进行URL编码,再传输可能会避免此类问题。

Base64编码将二进制数据按照每三个字节转换成四个字节可读字符,编码后的字符长度大约为136.1%。字符范围为 A-Z a-z 0-9 \ +。但编码后的字符串不太适合使用URL传输,中文加密后的乱码也多是因为这个原因引起:放在url中传输时+号会被替换成空格;并且每76个字符都会添加一个换行"\n",这个换行符合会丢失。

例如:

哈哈哈哈哈哈。。。。

会被编码为:

uf65/rn+uf65/rn+oaOho6GjDQoNCrn+uf65/rn+uf65/qGjoaOhow0KDQq5/rn+uf65/rn+uf6h\no6GjoaM=

放在URL中传输时会变成(不是urlencode的意思,并没有urlencode)

uf65/rn uf65/rn oaOho6GjDQoNCrn uf65/rn uf65/qGjoaOhow0KDQq5/rn uf65/rn uf6h

o6GjoaM=

解析肯定会出问题。

所以在传输和解密时要做如下处理:

1.去掉\n

2.替换空格为+

获取到的请求数据

eyJqb3NfcGFyYW1ldGVycyI6eyJhcHBfa2V5IjoiNDUyNDJFMkU0QjA3RTNCODcyRDExNjM1MTUyRjY1MzIiLCJlbmRfZGF0ZSI6MTQ2OTgwODAwMDAwMCwiaXRlbV9jb2RlIjoiRldfR09PRFMtNDY4MTAtMSIsInVzZXJfbmFtZSI6IueIseWxi awj WumOaWueaXl iIsOW6lyIsInZlcnNpb25fbm8iOjF9fQ==

Base64编码 使用的字符包括大小写字母各26个,加上10个数字,和加号“+”,斜杠“/”,一共64个字符,等号“=”用来作为后缀用途。

其中的+, /, = 都是需要urlencode的,所以无法取代。

不能,base64有转码功能:

由于 ASCII 码称为了国际标准,所以我们要把其它字符转成 ASCII 就要用到 base64。

utf-8 -> base64(编码) -> ASCII
ASCII -> base64(解码) -> utf-8

这样就可以让只支持 ASCII 的计算机支持 utf-8 了。

参考: https://juejin.im/post/5b7d50106fb9a019d7475785

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
亚远景信息科技
2024-12-11 广告
上海亚远景信息科技有限公司是国内汽车行业咨询及评估领军机构之一,深耕于ASPICE、敏捷SPICE、ISO26262功能安全、ISO21434车辆网络安全领域,拥有20年以上的行业经验,专精于培训、咨询及评估服务,广受全球车厂及供应商赞誉,... 点击进入详情页
本回答由亚远景信息科技提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式