java BASE64Encoder詳解
Base64是網絡上最常見的用于傳輸8Bit字節代碼的編碼方式之一,在發送電子郵件時,服務器認證的用戶名和密碼需要用Base64編碼,附件也需要用Base64編碼。
Base64要求把每三個8Bit的字節轉換為四個6Bit的字節(3*8 = 4*6 = 24),然后把6Bit再添兩位高位0,組成四個8Bit的字節,也就是說,轉換后的字符串理論上將要比原來的長1/3。
原文的字節最后不夠3個的地方用0來補足,轉換時Base64編碼用=號來代替。這就是為什么有些Base64編碼會以一個或兩個等號結束的原因,但等號最多只有兩個。
Java代碼實現:
BASE64Encoder和BASE64Decoder兩個方法都是sun公司的內部方法,并沒有在Java api中公開過,所以使用這些方法是不安全的,將來隨時可能會從中去除,所以相應的應該使用替代的對象及方法
Eclipse中不到BASE64Encoder的解決方法:按照如下方法設置Eclipse導入%JAVA_HOME%\jre\lib目錄下的rt.jar包即可,Project->Properties,選擇Java Build Path設置項,再選擇Libraries標簽,Add External Jars添加%JAVA_HOME%\jre\lib\rt.jar就可以使用啦!
Base64.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
<span style= "font-family:Times New Roman;font-size:14px;" > package cn.hncu.encoder; import java.io.IOException; import sun.misc.BASE64Decoder; import sun.misc.BASE64Encoder; public class Base64 { public static void main(String[] args) { try { String name= "我愛你" ; String pwd= "你卻不知道。" ; BASE64Encoder en= new BASE64Encoder(); name=en.encode(name.getBytes( "utf-8" )); //5oiR54ix5L2g pwd=en.encode(pwd.getBytes( "utf-8" )); //5L2g5Y205LiN55+l6YGT44CC System.out.println(name+ "," +pwd); BASE64Decoder den= new BASE64Decoder(); name= new String(den.decodeBuffer(name), "utf-8" ); pwd= new String(den.decodeBuffer(pwd), "utf-8" ); System.out.println(name+ "," +pwd); } catch (IOException e) { e.printStackTrace(); } } } </span> |
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
原文鏈接:http://blog.csdn.net/zuosixiaonengshou/article/details/53689587