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 类。它提供了 encodeBase64() 方法,该方法返回可以使用 decodeBase64() 方法进一步解码的编码字符串。请参阅下面的示例。

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() 方法进行编码,并使用 getUrlDecoder() 方法对 URL 进行解码。请参阅下面的示例。

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