1. 程式人生 > >Base64原理簡介

Base64原理簡介

圖片 colspan 字節 結果 AR byte[] cin sco strong

Base64是一種編碼方式,通常用於將二進制數據轉換成可見字符的形式,該過程可逆。 過程大致如下: 1. 對64個可見字符,進行一個索引編碼。索引是二進制的值,對應找到一個可見字符。
Base64 編碼表
ValueChar ValueChar ValueChar ValueChar
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 /
2.上面的表說明只要6位,就可以表示0-63的範圍。 Base64先將每個字節轉成二進制形式,每6位取值,將得到的值作為索引,到1.的表中索引到對應的可見字符。 而一個字節是8位,於是,就有2位多余了。多余了怎麽辦呢,與下一個字節拼接。
很明顯,每3個字節,就可以編碼成4個0-63的數字,對應4個字符。 用代碼說話。
1 public static void main(String[] args) {
2         byte[] bytes = new byte[] { 1, 2, 3 };
3         System.out.println(new String(Base64.encodeBase64(bytes)));
4     }

我們來分析一下。

這個byte數組的二進制數據如下:

00000001  00000010  00000011

000000  010000  001000  000011

0      16      8     3

A      Q      I      D

因此,結果就是AQID。

技術分享圖片

註意兩點:

1)並不能保證每個數組個數都是3的倍數,因此,對於未能補成二進制位的,在後面補0,如下圖A 2)原則上,Base64是最小4個字符一組,對於不足的字符,用=填充,如下圖A, BC 技術分享圖片

Base64原理簡介