Java의 base64.decode

Mohammad Irfan 2023년10월12일
  1. Base64 클래스의 인코딩 및 디코딩 방법
  2. Java의 Base64 인코딩
  3. Java에서 Base64 디코딩
  4. Java에서 Apache 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

Java에서 Apache Commons Codec Library를 사용한 인코딩 및 디코딩

이것은 Java에서 데이터를 인코딩 및 디코딩하는 또 다른 솔루션입니다. 여기에서는 코덱 라이브러리와 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

시작할 때 언급했듯이 Java Base64는 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