Base64编码介绍及基于Java语言实现

 

Base64编码被设计用来表示任意顺序的八位一个字节单元,允许使用大写和小写字符而不要求内容可读。65US-ASCII子集被用来表示Base64编码,所以每六位表示一个可以打印的Base64的字符,第65字符’=’被用来表示特殊处理的功能字符,后面会详细说明。

 

预编码处理一次输入24位(三个字符)作为一组,输出的是四个Base64的编码字符24位(每个字符六位)。编码处理遵循从左到右的顺序,一个24位的输入可以看作是三个八位的字符组,

编码以后,24位的字符则被转换为四个6位的字符组,每个字符被翻译成Base64字符表中的匹配的一个字符。

 

每六位都被转换成为一个index数值去匹配Base64编码表中的一个字符输出,Base64的字符表如下:

Value Encoding Value Encoding Value Encoding Value Encoding

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       (pad) =

15 P                  32 g             49 x

16 Q                 33 h              50 y

 

 

字符’=’作为填充字符,对于任何不满足24为输入的编码字符,以零做作为填充成为24位(三字节)输入,对于任何输出的编码字符小于24位的都应当以’=’字符填充。对于以下情形: