Base64算法介绍
Base64就是用64个英文字符来表示二进制数据的一种编码方式。64个英文字符分别是A-Z、a-z、0-9、/+。
64个字符展示
| 编号 | 字符 | 编号 | 字符 |
|---|---|---|---|
| 0 | A | 32 | g |
| 1 | B | 33 | h |
| 2 | C | 34 | i |
| 3 | D | 35 | j |
| 4 | E | 36 | k |
| 5 | F | 37 | l |
| 6 | G | 38 | m |
| 7 | H | 39 | n |
| 8 | I | 40 | o |
| 9 | J | 41 | p |
| 10 | K | 42 | q |
| 11 | L | 43 | r |
| 12 | M | 44 | s |
| 13 | N | 45 | t |
| 14 | O | 46 | u |
| 15 | P | 47 | v |
| 16 | Q | 48 | w |
| 17 | R | 49 | x |
| 18 | S | 50 | y |
| 19 | T | 51 | z |
| 20 | U | 52 | 0 |
| 21 | V | 53 | 1 |
| 22 | W | 54 | 2 |
| 23 | X | 55 | 3 |
| 24 | Y | 56 | 4 |
| 25 | Z | 57 | 5 |
| 26 | a | 58 | 6 |
| 27 | b | 59 | 7 |
| 28 | c | 60 | 8 |
| 29 | d | 61 | 9 |
| 30 | e | 62 | + |
| 31 | f | 63 | / |
基本思想
将原数据每3个字节(24bit)分为一组,然后将这24bit数据按照每6bit一组,重新划分为4组,分组完成之后,再将每每6bit数据为单元进行映射。
编码流程
- 将给定的数据转换成二进制编码,转换成二进制编码的方式。
- 对给定的编码做分组转换操作,每3个字节(24bit)分为一组,然后将这24bit划分为4组6bit。
- 对获得的4组6bit编码进行补位,向6bit编码的高位补2bit 0,变成4组8bit编码。
- 将每个8bit编码转换为十进制编码。
- 以十进制编码为索引,映射为上表中对应的字符。
当原文字节长度是3的整数倍
比如,将字符串ABC转换成Base64编码:
1.将ABC分别转换成二进制数据如下
2.将图中的二进制数据以6bit分为四组
3.将四组6bit进行高位补0,补成8bit
4.将补完后的8bit二进制转换成十进制
5.按照十进制编号找到对应的字符

当原文字节长度不是3的整数倍
比如,将字符串ABCD转换成Base64编码:
1.将ABCD分别转换成二进制数据如下
2.由于ABCD总共有32bit,需要补全称24的倍数,补全16bit,补全后,将图中的二进制数据以6bit分为四组
3.将四组6bit进行高位补0,补成8bit
4.将补完后的8bit二进制转换成十进制
5.按照十进制编号找到对应的字符
6.由于后边16位0都是填充的,因此不能映射成字符A,Base64中规定,填充的0字节用=来进行补全

注意:
原文的数据长度除以3余数为0时,编码之后后面没有"=";当余数为1时,后面有两个"=",当余数是2时,后面有一个"=","="的个数也就是补充的字节数。
6139

被折叠的 条评论
为什么被折叠?



