基础知识 - 为什么要使用 Base64 编码,有哪些情景需求?

简介: 基础知识 - 为什么要使用 Base64 编码,有哪些情景需求?

公钥证书也好,电子邮件数据也好,经常要用到Base64编码,那么为什么要作一下这样的编码呢?

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

而在网络上交换数据时,比如说从A地传到B地,往往要经过多个路由设备,由于不同的设备对字符的处理方式有一些不同,这样那些不可见字符就有可能被处理错误,这是不利于传输的。

所以就先把数据先做一个Base64编码,统统变成可见字符,这样出错的可能性就大降低了。

 

使用场景

对证书来说,特别是根证书,一般都是作Base64编码的,因为它要在网上被许多人下载。

电子邮件的附件一般也作Base64编码的,因为一个附件数据往往是有不可见字符的。

比如 http 协议当中的key value字段的值,必须进行URLEncode,因为一些特殊符号(等号或者空格)是有特殊含义的,造成混淆,解析失败,那么需要把这些值统一处理为可见字符,传输完再解析回来。

XML格式的文件中如果想嵌入另一个xml文件。直接嵌入,那么各种标签(有两套XML标签)就混乱了,不容易被解析。怎么办?

1、把另一个xml编译成字节数组转换成逗号隔开的字符串。
2、编译成可见字符。

结果:2好些。因为1消耗的空间比原来多一倍,而2只是多三分之一。

网页中一些小图片可以直接以base64编码的方式嵌入。不用再用链接请求消耗资源。

很多比较老的协议还是只支持纯文本的,比如SMTP协议。有时在一些特殊应用的场合,大多数消息是纯文本的,偶尔需要用这条纯文本通道传一张图片之类的情况发生的时候,就会用到base64。

HTTP虽然也是纯文本协议,但是http有针对二进制数据做特殊的规定(mime),所以用http直接传输二进制数据是可行的。但是有些特殊情况,比如返回需要在JSON内部之类的。

目录
相关文章
|
6月前
|
数据安全/隐私保护 C++ Python
Base32系列编码 代码实现过程
Base32系列编码 代码实现过程
66 0
|
3月前
|
存储 安全 数据安全/隐私保护
Base64编码的优缺点
Base64 是一种常用于将二进制数据编码为 ASCII 字符串的编码方法。下面是 Base64 编码的一些优点和缺点: ### 优点: 1. **可读性**:Base64 编码后的数据是纯文本形式的,这使得它可以轻松地在各种文本传输协议和环境中传输,而不会被误解或破坏。 2. **平台无关性**:Base64 编码是基于 ASCII 字符集的,这使得它在几乎所有的操作系统和编程语言中都是可用的。 3. **数据完整性**:Base64 可以确保数据的完整性,因为它是基于 ASCII 字符进行传输的,不会受到二进制数据在不同系统中解释方式的影响。 4. **简单易用**:许多编程语言
|
7月前
|
Java API 索引
一文读懂Base64编码
一文读懂Base64编码
49 0
|
8月前
|
数据采集 算法 安全
Base64 编码原理 && 实现
Base64 编码原理 && 实现
|
8月前
|
前端开发 rax Linux
深度解析shellcode原理及编码技术
深度解析shellcode原理及编码技术
118 0
|
12月前
|
存储 数据库 索引
深入浅出理解base编码
深入浅出理解base编码
155 0
深入浅出理解base编码
|
缓存 运维 NoSQL
|
XML 存储 算法
为啥要 base64 编码?
为啥要 base64 编码?
232 0
为啥要 base64 编码?
|
算法 Android开发
【密码学】Base64 编码 ( Base64 简介 | Base64 编码原理 | 最后编码组字节不足时补位 ‘=‘ 符号 | Base64 编码实现参考 )(二)
【密码学】Base64 编码 ( Base64 简介 | Base64 编码原理 | 最后编码组字节不足时补位 ‘=‘ 符号 | Base64 编码实现参考 )(二)
308 0
|
存储 编解码 Java
一篇文章彻底弄懂Base64编码
一篇文章彻底弄懂Base64编码
354 0
一篇文章彻底弄懂Base64编码