美文网首页
Base 64 简介

Base 64 简介

作者: ZONE画派 | 来源:发表于2019-01-15 21:12 被阅读11次

Base 64 简介

Base 64 是一种基于 64 个可打印字符表示二进制数据的表示方法。

由于 2^6 = 64,所以每 6 位为一个单元,对应一个可打印字符串。4 个可打印字符(Base 64 单元)则对应 3 字节(24bit = 8 byte)。

它可以用来传输电子邮件中非 ASCII 码的字符(早期设计目的)。

但其有着更重要的意义:

  • 所有的二进制文件,都可以因此转化为可打印的文本编码,使用文本软件进行编辑
  • 能够对文本进行简单的加密

Base 64 常用于一些处理文本数据的场合,如表示、存储、传输一些二进制数据。(MIME 的电子邮件以及 XML 的一些复杂数据等)

Base 64 转换规则

以 6 位为一个单元,那么显然其包括 64 个字符(大写字母 A-Z,小写字母 a-z,数字 0-9,加号 +,斜杠 / )。

传输的字节数不一定是3的倍数,可能最后需要作为后缀的还有一个等号 = 字符。

转换为 Base 64 后的数据比原始数据略长(大约是原来的 4/3 倍)。

具体规则如下:

  1. 每 3 个字节(Byte)作为一组,一共 24 个二进制位(bit)。
  2. 将 24 个二进制位分成 4 组,每组有 6 个二进制位。
  3. 每组前面加 2 个 0x00 ( 8 bit ),扩展为 32 个二进制,即 4 个字节。
  4. 按照以下表格,转为对应的符号,这就是 Base 64 的编码值。

/*  0 -  7: 000000 - 000111 */   'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H',
/*  8 - 15: 001000 - 001111 */   'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P',
/* 16 - 23: 010000 - 010111 */   'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X',
/* 24 - 31: 011000 - 011111 */   'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f',
/* 32 - 39: 100000 - 100111 */   'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n',
/* 40 - 47: 101000 - 101111 */   'o', 'p', 'q', 'r', 's', 't', 'u', 'v',
/* 48 - 55: 110000 - 110111 */   'w', 'x', 'y', 'z', '0', '1', '2', '3',
/* 56 - 63: 111000 - 111111 */   '4', '5', '6', '7', '8', '9', '+', '/'

举例说明,以文本 Man 说明:

文本 M a n
ASCII 编码 77 97 110

文本 0 7 0 7 0 7
二进制位 0 1 0 0 1 1 0 1 0 1 1 0 0 0 0 1 0 1 1 0 1 1 1 0
Base 64 0 5 0 5 0 5 0 5

Base 64 值 19(010011) 22(010110) 5(000101) 46(101110)
Base 64 编码 T W F u
传输 Base 64 值 19(00010011) 22(00010110) 5(00000101) 46(00101110)

传出的末尾可能会多出 1 个或 2 个字节的数据(3个字节才能对应 4 个 Base 64 单元)。

需要用以下方式处理。

文本(1 Byte) A(01000001) 补充的部分(00000000) 补充的部分(00000000)
Base 64 编码 Q(010000) Q(010000) = (000000) = (000000)

文本(1 Byte) B(01000010) C(01000011) 补充的部分(00000000)
Base 64 编码 Q(010000) k(100100) M(001100) = (000000)

末尾的 000000 采用 = 符号

用于 URL 的改进 Base 64 编码

URL 传输对于 =+/ 字符都有其特殊的用意(用于 URL 编解码和数据库存储时),使用标准 Base 64 现在回带来转换的麻烦。

针对 URL 的改进 Base 64 编码则是不在末尾填充 = 号,且把 + 号改成 -/ 号改成 _

用于正则表达式的改进 Base 64 变种

+ 改为 ! (在正则表达式有特殊含义)

/ 改为 - (在正则表达式有特殊含义)

还有 *+/ * 改为 _-._ (用作编程语言中的标识符名称)或 .- (用于 XML 中的Nmtoken)或 _:(用于 XML 中的Name)

相关文章

  • Base64

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

  • BASE64 编码简析

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

  • Base 64 简介

    Base 64 简介 Base 64 是一种基于 64 个可打印字符表示二进制数据的表示方法。 由于 2^6 = ...

  • base 64编码

    base 64简介 base64是一种用64个字符来表示任意二进制数据的方法。 base 64编码可以将任意一组字...

  • iOS安全之路--Base64

    一、Base64简介 Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一。Base64编码可用于在...

  • base64

    1.Base64简介 Base64是一种基于64个可打印字符来表示二进制数据的表示方法。base64编码一般有下面...

  • Base系列加密解密

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

  • python标准模块介绍 -Base64: Base64, Ba

    简介 功能:RFC 3548: Base16, Base32, Base64 数据编码。转换二进制数据为适合明文协...

  • C语言应用(3)——Base64编码/解码

    一、简介 Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字...

  • Base64加密算法

    Base64加密后进行GZIP压缩处理,获得明文,安全性得到了保证。 简介标准的Base64并不适合直接放在URL...

网友评论

      本文标题:Base 64 简介

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