0neqiu's Blog

一叶落而知天下秋

0%

浅析Base64

Base64是什么


Base64是一种二进制数据的表示方法,基于64个可打印字符。每6个比特为一个单元,对应一个可打印字符。例如,3个字节有24比特,对应4个Base64单元,即三个字节可由四个可打印字符表示。

值得注意的是Base64不是加密算法,其仅仅是一种编码方式

注:一个ASCII码字符通常用1个字节来表示

Base64怎么编码

1、原始数据每三个字节作为一组,每个字节8个bit,共24bit

2、将24个bit分为四组,每组6个bit

3、每组前补00,补成四组8个bit

4、根据Base64码表得到对应符号

Base64使用到的64个字符:

  • A-Z 26个
  • a-z 26个
  • 0-9 10个
  • + 1个
  • / 1个
索引 对应字符 索引 对应字符 索引 对应字符 索引 对应字符
0 A 16 Q 32 g 48 w
1 B 17 R 33 h 49 x
2 C 18 S 34 i 50 y
3 D 19 T 35 j 51 z
4 E 20 U 36 k 52 0
5 F 21 V 37 l 53 1
6 G 22 W 38 m 54 2
7 H 23 X 39 n 55 3
8 I 24 Y 40 o 56 4
9 J 25 Z 41 p 57 5
10 K 26 a 42 q 58 6
11 L 27 b 43 r 59 7
12 M 28 c 44 s 60 8
13 N 29 d 45 t 61 9
14 O 30 e 46 u 62 +
15 P 31 f 47 v 63 -

关于”=”

“=”用来补充,以满足分组条件

0neqiu的Base64编码为MG5lcWl1

而0neqi的Base64编码为MG5lcWk=

使得l1变为了k=

[注]: 不足3的整数倍的 缺一个字符补一个,缺两个补两个,不足的部分末尾会被00/0000填充

Base64 DataURI 格式

有时你会发现web页面传给你的base64字符串前面有类似下面的东东。

1
data:image/jpeg;base64,    /9j/4AA...

这是DataURI,大部分浏览器支持直接打开这类二进制数据,但是我们要格外注意,如果你只是想要真实的Base64内容就需要取,后边的内容

引用文章:

让你彻底理解Base64算法(Base64是什么,Base64解决什么问题,Base64字符串末尾的=是什么) - 知乎

什么是Base64算法?——全网最详细讲解