Base64编码
Base64是什么
Base64编码可用于在HTTP环境下传递较长的标识信息。Base64包括小写字母a-z、大写字母A-Z、数字0-9、符号"+"、"/"一共64个字符的字符集另加一个“=”,实际是65个字符)。任何符号都可以转换成这个字符集中的字符,这个转换过程就叫做Base64编码。Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法。可查看RFC2045~RFC2049。
Base64怎么转换
首先将字符串(图片等)转换成二进制序列,然后按每6个二进制位为一组,分成若干组,如果不足6位,则低位补0。每6位组成一个新的字节,高位补00,构成一个新的二进制序列,最后根据base64索引表中的值找到对应的字符。
(以上两段引用自https://zhuanlan.zhihu.com/p/339477329和百度百科“Base64”词条)
由于Base64编码出的长度必须是4的倍数,故不足4的倍数的长度用“=”补至4的倍数。
Base编码表:
索引 | 对应字符 | 索引 | 对应字符 | 索引 | 对应字符 | 索引 | 对应字符 |
0 | A | 17 | R | 34 | i | 51 | z |
1 | B | 18 | S | 35 | j | 52 | 0 |
2 | C | 19 | T | 36 | k | 53 | 1 |
3 | D | 20 | U | 37 | l | 54 | 2 |
4 | E | 21 | V | 38 | m | 55 | 3 |
5 | F | 22 | W | 39 | n | 56 | 4 |
6 | G | 23 | X | 40 | o | 57 | 5 |
7 | H | 24 | Y | 41 | p | 58 | 6 |
8 | I | 25 | Z | 42 | q | 59 | 7 |
9 | J | 26 | a | 43 | r | 60 | 8 |
10 | K | 27 | b | 44 | s | 61 | 9 |
11 | L | 28 | c | 45 | t | 62 | + |
12 | M | 29 | d | 46 | u | 63 | / |
13 | N | 30 | e | 47 | v | ||
14 | O | 31 | f | 48 | w | ||
15 | P | 32 | g | 49 | x | ||
16 | Q | 33 | h | 50 | y |
故由此规律,我们可以计算我的学号20221424的Base64编码:
1.由ASKII编码可知,2、0、2、2、1、4、2、4八个数字分别对应的十进制数为50、48、50、50、49、52、50、52。
2.将十进制数转化为二进制数并将每个二进制数补至八位(即1bit):00110010、00110000、00110010、00110010、00110001、00110100、00110010、00110100。
3.将二进制数连在一起并重新分配并在高位补00(位数不足则在低位也补00直到补至8个数字):00001100、00100011、00000000、00110010、00001100、00100011、00000100、00110100、00001100、00100011、00010000。并将8位二进制数转换成十进制数12、35、0、50、12、35、4、52、12、35、16。
4.找到对应字符并连起来即得到“MjAyMjE0MjQ=”
由相关网站计算出的结果也与上述推导一致