Base64编码知识详解

Base64 是一种编码算法,允许您将任何语言的任何字符转换为由拉丁字母、数字和符号组成的字母表。有了这个,我们可以将特殊字符,如中文徽标、表情符号甚至图像转换为“可读”序列(适用于任何计算机),可以保存或传输到任何其他地方。它通常用于通过仅处理文本的传输来传输二进制数据,例如通过电子邮件发送图像和文件附件。Base64编码表用了64个字符:A-Z、a-z、0-9、/ 和 + 组成,刚好是2的6次方,这也是Base64的由来。Base64每个字符用6个比特位来表示,最后还有一个=用作特殊用途。Base64是一种索引编码,每个字符都对应一个索引,具体的关系图如下:

Base64编码知识详解 教程 第1张

1、Base64 编码规则

首先将二进制数据按每6个比特位为一组编译成一个Base64的编码表中对应的一个字符。解码就是将Base64的字符依次还原回6位的比特位,以此得到原始的二进制数据了。

2、Base64 编码举例

①待编码字符:Man

②对应的二进制:M(01001101)a(01100001)n(01101110),即01001101 01100001 01101110

③按每6个比特位为一组来对二进制进行划分:010011 010110 000101 101110

④将6位进制编译成Base64对应的字符:T W F u,那么Man的Base64编码结果就是TWFu了。

解码就是上面过程的逆过程。按Base64编码表,将Base64字符解码出对应的6位二进制,进而得到原始的二进制数据。

3、Base64 安全吗? 我可以将其用作加密方法吗?

Base64 的编码算法不是加密算法,它很容易被解码,因此不应该用作安全的加密方法。 不要使用此技术来保护敏感数据,请使用安全加密方法。

4、Base64 的用途

Base64 经常用来在不同环境下存储或传输数据,如在处理文本数据的场景中,用于表示、传输、存储一些二进制数据,包括 MIME 的电子邮件及 XML 的一些复杂数据,Base64也被用在URL、Cookie、网页中的图片等传输二进制数据。

要了解为什么要发明 Base64,我们需要了解一些计算机的历史:计算机通过二进制系统进行通信 – 0 和 1,但人们通常希望以更高级的格式与数据进行通信,例如文本或图像。要在计算机之间传输这些数据,必须先以 0 和 1 编码,发送,然后再次解码。有许多不同的方式来执行这种编码,如果我们都同意单一的编码,它会简单得多,但不幸的是,情况并非如此。

最初,创建了许多不同的编码(例如代码 Baudot),每个字符使用不同的位数,直到最终 ASCII 成为每个字符 7 位的模式。然而,大多数计算机以字节存储二进制数据,每个字节由 8 位组成,因此 ASCII 不适合传输此类数据。

为了解决这些问题,引入了 Base64 编码。这允许您将任意字节编码为可以安全发送而不会损坏的字节(ASCII 字母数字字符和一些符号)。缺点是使用 Base64 编码消息会增加其长度,每3个字节的数据被编码为4个ASCII字符。

要可靠地发送文本消息,您可以首先使用您选择的文本编码(例如,UTF-8)将其编码为字节,然后 Base64 将生成的二进制数据编码为可安全发送的文本字符串,编码为 ASCII。接收者将不得不反转此过程以检索原始消息。当然,这需要收件人知道使用了哪些编码,并且这些信息通常需要单独发送。

从历史上看,它已被用于对电子邮件中的二进制数据进行编码,电子邮件服务器可以在其中修改行尾。一个更现代的例子是使用 Base64 编码将图像数据直接嵌入到 HTML 源代码中。这里有必要对数据进行编码,以防止像 << 和 ‘>’ 这样的字符被解释为标签。

✅来源:十一张博客
© 版权声明
THE END
如果觉得这篇文章对您有帮助,不妨考虑请我喝杯奶茶😄
点赞0赞赏 分享
评论 抢沙发
头像
评论人工审核通过显示,请勿重复提交!
提交
头像

昵称

取消
昵称表情代码

    暂无评论内容