Java Base64のエンコードとデコードのサンプル

JavaのBase64のエンコードとデコードのサンプルです。
Java標準のBase64クラスを使用します。

Base64クラス

  • Java8で標準機能として追加されました
  • 以下の3つの種類があります
    種類 メソッド 説明
    基本 getEncoder()とgetDecoder() RFC4648およびRFC2045の表1に明記された「Base64アルファベット」を使用する
    エンコーダは改行文字を追加しない
    デコーダは、base64アルファベットの範囲外の文字を含むデータを拒否する
    URLおよびファイル名で安全 getUrlEncoder()とgetUrlDecoder() RFC4648の表2に明記された「URLおよびファイル名で安全なBase64アルファベット」を使用する
    エンコーダは改行文字を追加しない
    デコーダは、base64アルファベットの範囲外の文字を含むデータを拒否する
    MIME getMimeEncoder()とgetMimeDecoder() RFC2045の表1に明記された「Base64アルファベット」を使用する
    エンコードされた出力は、それぞれが76文字以下で、キャリッジ・リターン「\r」の直後に改行「\n」を続けたものが行区切り文字となる
    デコーダは、base64アルファベット表で見つからない行区切り文字またはその他の文字はすべて無視する
  • 以下はJava8 API仕様のBase64クラスのリンクです
    https://docs.oracle.com/javase/jp/8/docs/api/java/util/Base64.html

コード

サンプルのコードです。

package test1;

import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.util.Base64;

/**
 * Base64のサンプル
 */
class Sample {
	void runSample() {

		Charset charset = StandardCharsets.UTF_8;
		String moji = "abcあいう123";
		//---------------------------------
		// getEncoder()とgetDecoder()
		//---------------------------------
		String en1;
		String de1;
		en1 = new String(Base64.getEncoder()
			.encode(moji.getBytes(charset)), charset);
		System.out.println("en1= " + en1);
		// 出力結果 : en1= YWJj44GC44GE44GGMTIz

		de1 = new String(Base64.getDecoder()
			.decode(en1.getBytes(charset)), charset);
		System.out.println("de1= " + de1);
		// 出力結果 : de1= abcあいう123

		//---------------------------------
		// getUrlEncoder()とgetUrlDecoder()
		//---------------------------------
		String en2;
		String de2;
		en2 = new String(Base64.getUrlEncoder()
			.encode(moji.getBytes(charset)), charset);
		System.out.println("en2= " + en2);
		// 出力結果 : en2= YWJj44GC44GE44GGMTIz

		de2 = new String(Base64.getUrlDecoder()
			.decode(en2.getBytes(charset)), charset);
		System.out.println("de2= " + de2);
		// 出力結果 : de2= abcあいう123

		//---------------------------------
		// getMimeEncoder()とgetMimeDecoder()
		//---------------------------------
		String en3;
		String de3;
		en3 = new String(Base64.getMimeEncoder()
			.encode(moji.getBytes(charset)), charset);
		System.out.println("en3= " + en3);
		// 出力結果 : en3= YWJj44GC44GE44GGMTIz
			
		de3 = new String(Base64.getMimeDecoder()
			.decode(en3.getBytes(charset)),charset);
		System.out.println("de3= " + de3);
		// 出力結果 : de3= abcあいう123
	}
}
public class Test1 {
	public static void main(String[] args) {
		Sample s = new Sample();
		s.runSample();
	}
}

関連の記事

Java バイト配列の作成と復号のサンプル(getBytes)



△上に戻る