HOWTO · Java

Java での base64.decode

この記事では、Java の base64.decode について紹介します。

このページの内容

このチュートリアルでは、Java での base64.decode とは何か、およびそれを使用して Java でエンコードされたデータをデコードする方法を紹介します。

Java は、Java 8 バージョンに新しいクラス Base64 を追加しました。このクラスには、データのエンコードとデコードに使用できるエンコーダーやデコーダーなどのネストされたクラスがいくつかあります。基本的なエンコード、URL エンコード、MIME エンコード、それぞれのデコードサポートなど、いくつかのエンコードされた機能を使用できます。それぞれの目的のための方法を以下に見ることができます。

Base64 クラスのエンコードおよびデコードメソッド

// Basic Encoding Decoding
public static Base64.Decoder getDecoder() public static Base64
    .Encoder getEncoder()

    // Url Encoding Decoding
    public static Base64.Decoder getUrlDecoder() public static Base64
    .Encoder getUrlEncoder()

    // Mime Encoding Decoding
    public static Base64.Decoder getMimeDecoder() public static Base64.Encoder getMimeEncoder()

この記事では、基本的なエンコーディングとその他のタイプのエンコーディングをエンコードおよびデコードする方法を学習します。いくつかの例から始めましょう。

Java での Base64 エンコーディング

これは基本的なエンコーディングの例です。Java は、データをエンコードするための getEncoder() メソッドを提供します。以下の例を参照してください。

import java.io.UnsupportedEncodingException;
import java.util.Base64;
import java.util.Base64.Encoder;
public class SimpleTesting {
  public static void main(String[] args) throws UnsupportedEncodingException {
    String msg = "This is confidential";
    System.out.println("Message  before encoding: " + msg);
    byte[] bytes = msg.getBytes("UTF-8");
    Encoder encoder = Base64.getEncoder();
    String encoded = encoder.encodeToString(bytes);
    System.out.println("Message after encoding: " + encoded);
  }
}

出力:

Message  before encoding: This is confidential
Message after encoding: VGhpcyBpcyBjb25maWRlbnRpYWw=

Java での Base64 デコード

ここでは、getDecoder() メソッドを使用して、エンコードされたデータをデコードしました。このメソッドは、結果をバイト単位で返します。したがって、検証するために、String コンストラクターを使用してデータを String に戻しました。

import java.io.UnsupportedEncodingException;
import java.util.Base64;
import java.util.Base64.Encoder;
public class SimpleTesting {
  public static void main(String[] args) throws UnsupportedEncodingException {
    String msg = "This is confidential";
    System.out.println("Message  before encoding: " + msg);
    byte[] bytes = msg.getBytes("UTF-8");
    Encoder encoder = Base64.getEncoder();
    String encoded = encoder.encodeToString(bytes);
    System.out.println("Message after encoding: " + encoded);
    byte[] decoded = Base64.getDecoder().decode(encoded);
    String decodedMsg = new String(decoded);
    System.out.println("Decoded Message " + decodedMsg);
  }
}

出力:

Message before encoding: This is confidential
Message after encoding: VGhpcyBpcyBjb25maWRlbnRpYWw=
Decoded Message This is confidential

JavaApache Commons Codec Library を使用したエンコードとデコード

これは、Java でデータをエンコードおよびデコードするためのもう 1つのソリューションです。ここでは、コーデックライブラリとその Base64 クラスを使用しています。decodeBase64() メソッドを使用してさらにデコードできるエンコードされた文字列を返す encodeBase64() メソッドを提供します。以下の例を参照してください。

import java.io.UnsupportedEncodingException;
import org.apache.commons.codec.binary.Base64;

public class SimpleTesting {
  public static void main(String[] args) throws UnsupportedEncodingException {
    String msg = "This is confidential";
    System.out.println("Message  before encoding: " + msg);
    byte[] bytes = msg.getBytes("UTF-8");
    String encoding = new String(Base64.encodeBase64(bytes));
    System.out.println("---------After Encoding-----------");
    System.out.println(encoding);

    // Decoding
    String decoding = new String(Base64.decodeBase64(encoding));
    System.out.println("---------After Decoding----------");
    System.out.println(decoding);
  }
}

出力:

Message  before encoding: This is confidential
---------After Encoding-----------
VGhpcyBpcyBjb25maWRlbnRpYWw=
---------After Decoding----------
This is confidential

Java での URL のエンコードとデコード

最初に述べたように、JavaBase64 は URL のエンコードとデコードにも使用できます。したがって、この例では、エンコードに getUrlEncoder() メソッドを使用し、URL をデコードするために getUrlDecoder() メソッドを使用しました。以下の例を参照してください。

import java.io.UnsupportedEncodingException;
import java.util.Base64;
import java.util.Base64.Encoder;
public class SimpleTesting {
  public static void main(String[] args) throws UnsupportedEncodingException {
    String url = "https://www.delftstack.com/";
    System.out.println("Message  before encoding: " + url);
    byte[] bytes = url.getBytes("UTF-8");
    Encoder encoder = Base64.getUrlEncoder();
    String encoded = encoder.encodeToString(bytes);
    System.out.println("Message after encoding: " + encoded);
    // Decoding
    String decoding = new String(Base64.getUrlDecoder().decode(encoded));
    System.out.println("---------After Decoding----------");
    System.out.println(decoding);
  }
}

出力:

Message  before encoding: https://www.delftstack.com/
Message after encoding: aHR0cHM6Ly93d3cuZGVsZnRzdGFjay5jb20v
---------After Decoding----------
https://www.delftstack.com/

Java での MIME エンコーディングとデコーディング

MIME データをエンコードするために、Java はエンコードされたバイトを返す getMimeEncoder()メソッドを提供し、Java が提供する getMimeDecoder()メソッドをデコードします。以下の例を参照してください。

import java.io.UnsupportedEncodingException;
import java.util.Base64;
import java.util.Base64.Encoder;

public class SimpleTesting {
  public static void main(String[] args) throws UnsupportedEncodingException {
    String msg = "This is \n confidential \n file";
    System.out.println("Message  before encoding: " + msg);
    byte[] bytes = msg.getBytes("UTF-8");
    Encoder encoder = Base64.getMimeEncoder();
    String encoded = encoder.encodeToString(bytes);
    System.out.println("Message after encoding: " + encoded);
    // Decoding
    String decoding = new String(Base64.getMimeDecoder().decode(encoded));
    System.out.println("---------After Decoding----------");
    System.out.println(decoding);
  }
}

出力:

Message  before encoding: This is 
 confidential 
 file
Message after encoding: VGhpcyBpcyAKIGNvbmZpZGVudGlhbCAKIGZpbGU=
---------After Decoding----------
This is 
 confidential 
 file