BASE64和其餘類似的編碼算法一般用於轉換二進制數據爲文本數據,其目的是爲了簡化存儲或傳輸。更具體地說,BASE64算法主要用於轉換二進制數據爲ASCII字符串格式。java
常見的幾種Base64算法算法
要使用Base64Encoder,卻發如今Eclipse中沒法找到該類,原來Base64Encoder並不屬於JDK標準庫範疇,可是又包含在了JDK中。ui
問題的解決方案: Project->Properties,選擇Java Build Path設置項,再選擇Libraries標籤,Add External Jars添加%JAVA_HOME%\jre\lib\rt.jar就行。編碼
/** * Java自帶的Base64算法 */ public static void JDKBase64(String string) throws IOException{ //JDK 提供的Base64算法 對象 BASE64Encoder encode=new BASE64Encoder(); //Base64 編碼 String encoder = encode.encode(string.getBytes()); System.out.println("encode: " + encoder); BASE64Decoder decode=new BASE64Decoder(); byte[] decodeBuffer = decode.decodeBuffer(encoder); System.out.println("decode: " + new String(decodeBuffer)); }
使用前引入依賴:spa
<dependency> <groupId>commons-codec</groupId> <artifactId>commons-codec</artifactId> <version>1.5</version> </dependency>
code:code
/** * commons-codec的Base64算法 */ public static void codecBase64(String string){ //編碼 byte[] encodeBase64 = Base64.encodeBase64(string.getBytes()); System.out.println("encode: " + Hex.encodeHexString(encodeBase64)); //解碼 byte[] decodeBase64 = Base64.decodeBase64(encodeBase64); System.out.println("decode: " + new String(decodeBase64)); }
使用前引入依賴:xml
<dependency> <groupId>org.bouncycastle</groupId> <artifactId>bcprov-jdk15on</artifactId> <version>1.54</version> </dependency>
code:對象
/** * Bouncy Castle的Base64算法 */ public static void bcBase64(String string){ //編碼 byte[] encode = org.bouncycastle.util.encoders.Base64.encode(string.getBytes()); System.out.println("encode: " + new String(encode)); //解碼 byte[] decode = org.bouncycastle.util.encoders.Base64.decode(encode); System.out.println("decode: " + new String(decode)); }