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=”

由相关网站计算出的结果也与上述推导一致

 

posted @ 2022-09-13 20:31  煙_火_人_間  阅读(86)  评论(0编辑  收藏  举报