base64简介
base64是一种编码形式,通常用于把二进制数据编码成可写的字符串形式的数据。这是一种可逆的编码形式。
8位变6位
base64编码将一个8位字节序列拆散位6位的片段,并为每个6位的片段分配一个字符;这个字符是Base64字母表中的64个字符之一。
可以安全的放在HTTP首部字段。这64个字符包括A-Za-z0-9+/。后面还会需要第65个字符"=";
数字 | 符号 | 数字 | 符号 | 数字 | 符号 | 数字 | 符号 |
---|---|---|---|---|---|---|---|
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 | / |
base64 填充
base64编码会受到一个8位字节的序列,将这个序列流划分成6位的块。
如果序列无法正好划分成6位的块,则在后面填充0;使二进制序列的长度成为24的倍数(6和8的最小公倍数);如果不够公倍数,则后面填充6个1,转译成=;最新的浏览器提供了自动生成base64的方法atob和btob
例如:
btoa('ccc')
-->01100011 01100011 01100011
-->011000 110110 001101 100011
-->Y2Nj
btoa('cccc')
-->01100011 01100011 01100011 01100011
-->011000 110110 001101 100011 011000 110000 xxxxxx xxxxxx
-->Y2NjYw==
atob('Y2Nj')
-->011000 110110 001101 100011
-->01100011 01100011 01100011
-->ccc
atob('Y2NjYw==')
-->011000 110110 001101 100011 011000 110000 xxxxxx xxxxxx
-->01100011 01100011 01100011 01100011
-->cccc
atob("Y2NjYw")
-->011000 110110 001101 100011 011000 110000 xxxxxx xxxxxx
-->01100011 01100011 01100011 01100011
-->cccc