Base64 Encoding in Java
Java provides built-in support for base64 encoding/decoding.
import java.util.Base64;
public class Base64Encoding {
public static void main(String[] args) {
// Here's the string we'll encode/decode.
String data = "abc123!?$*&()'-=@~";
// Java supports both standard and URL-compatible
// base64. Here's how to encode using the standard
// encoder. The encoder requires a byte array, so we
// convert our string to that type.
String sEnc = Base64.getEncoder().encodeToString(data.getBytes());
System.out.println(sEnc);
// Decoding may throw an exception, which you can catch
// if you don't already know the input to be
// well-formed.
try {
byte[] sDec = Base64.getDecoder().decode(sEnc);
System.out.println(new String(sDec));
} catch (IllegalArgumentException e) {
System.out.println("Decoding failed: " + e.getMessage());
}
System.out.println();
// This encodes/decodes using a URL-compatible base64
// format.
String uEnc = Base64.getUrlEncoder().encodeToString(data.getBytes());
System.out.println(uEnc);
try {
byte[] uDec = Base64.getUrlDecoder().decode(uEnc);
System.out.println(new String(uDec));
} catch (IllegalArgumentException e) {
System.out.println("Decoding failed: " + e.getMessage());
}
}
}
The string encodes to slightly different values with the standard and URL base64 encoders (trailing +
vs -
) but they both decode to the original string as desired.
$ java Base64Encoding
YWJjMTIzIT8kKiYoKSctPUB+
abc123!?$*&()'-=@~
YWJjMTIzIT8kKiYoKSctPUB-
abc123!?$*&()'-=@~
In Java, we use the java.util.Base64
class for base64 encoding and decoding. The Base64.getEncoder()
and Base64.getDecoder()
methods provide standard base64 encoding and decoding, while Base64.getUrlEncoder()
and Base64.getUrlDecoder()
provide URL-safe encoding and decoding.
The encodeToString()
method is used for encoding, which takes a byte array as input. To decode, we use the decode()
method, which returns a byte array. We then convert this byte array back to a string for printing.
Note that in Java, decoding can throw an IllegalArgumentException
if the input is not properly formatted base64. It’s good practice to catch this exception when decoding.