Java-Base64演算法

來源:互聯網
上載者:User

標籤:問題   width   encode   二進位   src   建議   tab   進位轉換   16px   

Base64演算法最早是為瞭解決電子郵件傳輸的問題的,早先的郵件傳輸協議中只支援ASCII碼傳遞,如果要傳輸二進位檔案,片和視頻,是無法傳輸的,而BASE64可以將二進位檔案內容編碼成為只包含ASCII碼的內容,這樣就可以傳輸了。

Base64演算法大家常常說成是密碼編譯演算法,但準確的來說,Base64不是一種密碼編譯演算法,只能算是一種基於64個字元的編碼演算法。

它有一個字元對應表,每個字元對應表了一個十進位編碼,共映射了64個字元。Base64將給定的資料經二進位轉換後與字元對應表相對應,得到所謂的密文;映射表如下,映射表的最後是一個等號,是作為補位符用來補位的。

編號 字元   編號 字元   編號 字元   編號 字元
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演算法的實現步驟如下:

1. 將給定的字串以字元為單位轉換為對應的字元編碼(如ASCII碼);2. 將獲得的字元編碼轉換為二進位碼;3. 對獲得的二進位碼做分組轉換操作,每3個8位二進位碼為一組,轉換為每4個6位二進位碼為一組(不足6位時地位補0).這是一個分組變化的過程,3個8位二進位碼和4個6位二進位碼的長度都是24位;4. 對獲得的4個6位二進位補位,向6位二進位碼添加2位高位0,組成4個8位二進位碼;5. 將獲得的4個8位二進位碼轉換位10進位碼;6. 將獲得的十進位碼轉換位Base64字元表中對應的字元;

ASCII碼字元編碼

例如:對A進行Base64編碼;

最終:QQ==

 
   

最終產生的編碼中有了兩個等號,這是因為原文的二進位碼不足24位,最近轉換為十進位碼時也不足4項,這時就需要用等號補位;

經Base64編碼後的字串最多隻會有2個等號,這是因為 餘數 = 原文位元組數 MOD 3,所以餘數只能時0,1,2。通常判別一個字串是不是Base64編碼的第一步操作就是判斷這個字串末尾是不是有等號。這同時也說明,Base64編碼後的字串是以4個字元為單位,其長度只能是4個字元的整數倍。

 

非ASCII碼字元編碼

ASCII碼可以表示十進位範圍為0~127的字元,對應二進位範圍是00000000~01111111,ASCII碼包含了阿拉伯數字,大小寫英文字母和一些控制符,但卻沒有包含中文,因此有了GB2312,GBK和UTF-8等編碼。GBK,GB2312用2個位元組來表示一個漢字,UTF-8則用3個位元組來表示一個漢字。 

例如:對密這個字以UTF-8的形式進行Base64編碼;

最終:5a+G

 
   

當然,如果我們不使用UTF-8,而是使用GBK來進行編碼,那編碼後的結果就不是5a+G了。

JDK中Base64的實現在JDK1.7之前是沒有對外的公用介面的,只有一個非標準實現,位於sun.misc包中,提供BASE64Encoder類和BASE64Decoder類。由於是不對外,所以不建議使用,因為後續JDK版本可能會去掉對這兩個類的支援。

而JDK8之後已經有了對應的介面,位於java.util包下。

 

參考自《Java加密解密的藝術》

Java-Base64演算法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.