Java 中的 base64.decode

Mohammad Irfan 2023年1月30日 2021年10月30日
  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