Java Base64編碼使用介紹

indexman發表於2017-12-19

Base64編碼介紹
    BASE64 編碼是一種常用的字元編碼,Base64編碼本質上是一種將二進位制資料轉成文字資料的方案。
但base64不是安全領域下的加密解密演算法。能起到安全作用的效果很差,而且很容易破解,他核心作用應該是傳輸資料的正確性,有些閘道器或系統只能使用ASCII字元。
Base64就是用來將非ASCII字元的資料轉換成ASCII字元的一種方法,而且base64特別適合在http,mime協議下快速傳輸資料。


使用場景

1.對資料傳輸過程中不可見字元的處理;
2.將圖片二進位制轉為Base64編碼嵌入網頁,可有效減少HTTP請求圖片帶來效能提升;



Java對於Base64編碼的支援
這裡只講原生JDK支援,足夠你用的,別搞些第三方的:

package com.dylan.security;

import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;

import java.io.IOException;
import java.util.Base64;

/**
 * Base64編碼測試類
 *
 * @author xusucheng
 * @create 2017-12-19
 **/
public class TestBase64 {
    public static final String toEncode="Hello Base64!";

    /**
     * jdk8以前
     * @throws IOException
     */
    public static void TestBase64Old() throws IOException {
        //編碼
        BASE64Encoder encoder=new BASE64Encoder();
        String encoded = encoder.encode(toEncode.getBytes());
        System.out.println("編碼後:"+encoded);

        //解碼
        BASE64Decoder decoder=new BASE64Decoder();
        byte[] decoded = decoder.decodeBuffer(encoded);
        System.out.println("解碼後:"+new String(decoded));

    }

    /**
     * jdk1.8後
     */
    public static void TestBase64New(){
        //編碼
        String encoded = Base64.getEncoder().encodeToString(toEncode.getBytes());
        System.out.println("編碼後:"+encoded);
        //解碼
        byte[] decoded = Base64.getDecoder().decode(encoded);
        System.out.println("解碼後:"+new String(decoded));
    }


    public static void main(String[] args) throws IOException {
        System.out.println("Before JDK1.8:");
        TestBase64Old();
        System.out.println("After JDK1.8:");
        TestBase64New();
    }
}

輸出:

Before JDK1.8:
編碼後:SGVsbG8gQmFzZTY0IQ==
解碼後:Hello Base64!
From JDK1.8:
加密後:SGVsbG8gQmFzZTY0IQ==
解碼後:Hello Base64!


相關文章