美文网首页
base64 编码

base64 编码

作者: Djbfifjd | 来源:发表于2020-12-11 20:35 被阅读0次

注意:base64 只是一种编码,并不适合用来加密数据。

一、组成

base64 编码就是用 64 个可打印的字符作为一个字符集来表示数据。这 64 个字符包括A-Za-z0-9这62个常见字符,另外还有两个可打印字符在不同的系统中可能会有所不同,常见的是+/这两个字符。

二、base64的编码过程

将每 3 个字节放入一个 24 位的缓冲区中,最后不足 3 个字节的,缓冲区的剩余部分用 0 来填补。然后每次取出 6 位(2 的 6 次方为 64,使用 64 个字符即可表示所有),将高 2 位用 0 来填充,组成一个新的字节,计算出这个新字节的十进制值,对应上面的编码表,输出相应的字符。这样不断地进行下去,就可完成对所有数据的编码工作。

按照以上规则对文本 Man 编码如下:

这样就把文本 Man 编码为了 TWFu。

按照这种编码规则,原来的 24 位(3 个字节)最后变成了 4 个新的字节(32 位),所以编码后的数据比原数据略长 1/3。

注意最后不足 3 个字节的部分用 0 来填补了,那么最后计算出来的十进制值是 0,但是不能对应编码表中的 A(尽管 A 对应 0),因为用来填补的 0 不是有效数据,所以 base64 编码使用 = 来代替 A 表示无效的 0。

因为 = 并不表示有效数据,所以用于对有效数据编码的是 64 个字符,而不是 65 个,所以是 base64,而非 base65!

因为 base64 的应用如此广泛,所以好多编程语言都自带了 base64 的编解码函数,比如 C#、Java、python等自身都有对应 base64 的编解码函数。

三、为什么要使用64个字符

如果每次取更多的位(多于 6 位)来计算,那么字符集的范围将大大增加,编码的应用范围将受到限制。如果每次取更少的位(少于 6 位)来计算,那么编码之后的数据长度就会增加,同样的数据编码之后就需要传输更多的字符。所以,每次取 6 位(2 的 6 次方为 64,使用 64 个字符即可表示所有)来计算刚好平衡了以上这两点。

相关文章

  • iOS URL安全的Base64编码、解码

    参考iOS开发探索-Base64编码iOS URL编码&base64编码URL安全的Base64编码,解码 为什么...

  • BASE64 编码简析

    Base64编码: <1>·Base64编码简介: <2>·使用Base64的原因: <3>·编码原理: 成这个字...

  • SMTP整理

    账号:BASE64编码的账号 密码:BASE64编码的密码 快速BASE64编码网址: http://tools....

  • base64 和 url base64 和 encodeURIC

    1 先来看base64编码 2 再看url base64编码 可以看出,非url base64不会对斜杠进行编码。...

  • Base系列加密解密

    Base编码系列:[Base64][Base32] [Base16] [Base64] Base64编码是使用64...

  • java android 对接接口加密

    加密方式 方案1 使用Base64编码最常用的就是Base64编码了,Base64不算是加密,只是把字符经过编码变...

  • Base64

    Base64简介 Base64 原理解析 编码实现 Base64简介 命令行运行base64编码和解码 对文件操作...

  • base64编码解码原理散图

    base64编码出现原因: base64转码原理000.png base64编码原理: base64转码原理.pn...

  • 加密编码总结

    url编码 base64编码 工作中碰到url与base64配合加解密的问题,base64编码后的字符串中可能含有...

  • URL编码表 | Base64编码表

    URL编码表: Base64编码表:

网友评论

      本文标题:base64 编码

      本文链接:https://www.haomeiwen.com/subject/wegubktx.html