Java での base64.decode

Mohammad Irfan 2023年10月12日
  1. Base64 クラスのエンコードおよびデコードメソッド
  2. Java での Base64 エンコーディング
  3. Java での Base64 デコード
  4. JavaApache Commons Codec Library を使用したエンコードとデコード
  5. Java での URL のエンコードとデコード
  6. Java での MIME エンコーディングとデコーディング
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