In Java, you can use the java.util.Base64 class to encode and decode data using Base64 encoding. This class provides methods for basic Base64 encoding and decoding as specified in RFC 4648.
Here Is An Example Of How To Use The Base64 Class For Encoding And Decoding
import java.util.Base64;
public class Base64Example {
public static void main(String[] args) {
// Encoding a String to Base64
String originalString
= "Hello, this is a string to encode!";
String encodedString = Base64.getEncoder()
.encodeToString(originalString.getBytes());
System.out.println("Encoded string: "
+ encodedString);
// Decoding a Base64 encoded String
byte[] decodedBytes = Base64.getDecoder()
.decode(encodedString);
String decodedString = new String(decodedBytes);
System.out.println("Decoded string: "
+ decodedString);
}
}
- In this example, we encode the string “Hello, this is a string to encode!” using the Base64.getEncoder().encodeToString method and decode the Base64-encoded string back to its original form using the Base64.getDecoder().decode method.
- When you run this code, you should see the following output:
Encoded string: SGVsbG8sIHRoaXMgaXM
gYSBzdHJpbmcgdG8gZW5jb2RlIQ==
Decoded string: Hello, this is a string to encode!
- Make sure to handle exceptions appropriately when working with encoding and decoding to ensure proper error handling and prevent unexpected behavior in your application.
Nested Classes of Base64
Class | Description |
---|---|
Base64.Decoder | This class implements a decoder for decoding byte data using the Base64 encoding scheme as specified in RFC 4648 and RFC 2045. |
Base64.Encoder | This class implements an encoder for encoding byte data using the Base64 encoding scheme as specified in RFC 4648 and RFC 2045. |
Base64 Methods
Class | Description |
---|---|
public static Base64.Decoder getDecoder() | It returns a Base64.Decoder that decodes using the Basic type base64 encoding scheme. |
public static Base64.Encoder getEncoder() | It returns a Base64.Encoder that encodes using the Basic type base64 encoding scheme. |
public static Base64.Decoder getUrlDecoder() | It returns a Base64.Decoder that decodes using the URL and Filename safe type base64 encoding scheme. |
public static Base64.Decoder getMimeDecoder() | It returns a Base64.Decoder that decodes using the MIME type base64 decoding scheme. |
public static Base64.Encoder getMimeEncoder() | It Returns a Base64.Encoder that encodes using the MIME type base64 encoding scheme. |
public static Base64.Encoder getMimeEncoder(int lineLength, byte[] lineSeparator) | It returns a Base64.Encoder that encodes using the MIME type base64 encoding scheme with specified line length and line separators. |
public static Base64.Encoder getUrlEncoder() | It returns a Base64.Encoder that encodes using the URL and Filename safe type base64 encoding scheme. |
Base64 Decoder Methods
Class | Description |
---|---|
public byte[] decode(byte[] src) | It decodes all bytes from the input byte array using the Base64 encoding scheme, writing the results into a newly-allocated output byte array. The returned byte array is of the length of the resulting bytes. |
public byte[] decode(String src) | It decodes a Base64 encoded String into a newly-allocated byte array using the Base64 encoding scheme. |
public int decode(byte[] src, byte[] dst) | It decodes all bytes from the input byte array using the Base64 encoding scheme, writing the results into the given output byte array, starting at offset 0. |
public ByteBuffer decode(ByteBuffer buffer) | It decodes all bytes from the input byte buffer using the Base64 encoding scheme, writing the results into a newly-allocated ByteBuffer. |
public InputStream wrap(InputStream is) | It returns an input stream for decoding Base64 encoded byte stream. |
Base64 Encoder Methods
Class | Description |
---|---|
public byte[] encode(byte[] src) | It encodes all bytes from the specified byte array into a newly-allocated byte array using the Base64 encoding scheme. The returned byte array is of the length of the resulting bytes. |
public int encode(byte[] src, byte[] dst) | It encodes all bytes from the specified byte array using the Base64 encoding scheme, writing the resulting bytes to the given output byte array, starting at offset 0. |
public String encodeToString(byte[] src) | It encodes the specified byte array into a String using the Base64 encoding scheme. |
public ByteBuffer encode(ByteBuffer buffer) | It encodes all remaining bytes from the specified byte buffer into a newly-allocated ByteBuffer using the Base64 encoding scheme. Upon return, the source buffer's position will be updated to its limit; its limit will not have been changed. The returned output buffer's position will be zero and its limit will be the number of resulting encoded bytes. |
public OutputStream wrap(OutputStream os) | It wraps an output stream for encoding byte data using the Base64 encoding scheme. |
public Base64.Encoder withoutPadding() | It returns an encoder instance that encodes equivalently to this one, but without adding any padding character at the end of the encoded byte data. |
Java Base64 Example- Basic Encoding & Decoding
import java.util.Base64;
publicclass Base64BasicEncryptionExample {
publicstaticvoid main(String[] args) {
// Getting encoder
Base64.Encoder encoder = Base64.getEncoder();
// Creating byte array
bytebyteArr[] = {1,2};
// encoding byte array
bytebyteArr2[] = encoder.encode(byteArr);
System.out.println("Encoded byte array: "
+byteArr2);
bytebyteArr3[] = newbyte[5];
// Make sure it has enough size to store copied bytes
intx = encoder.encode(byteArr,byteArr3);
// Returns number of bytes written
System.out.println("Encoded byte array written
to another array: "+byteArr3);
System.out.println("Number
of bytes written: "+x);
// Encoding string
String str = encoder.encodeToString
("JavaTpoint".getBytes());
System.out.println("Encoded string: "+str);
// Getting decoder
Base64.Decoder decoder = Base64.getDecoder();
// Decoding string
String dStr = new String(decoder.decode(str));
System.out.println("Decoded string: "+dStr);
}
}
Output:
Encoded byte array: [B@6bc7c054
Encoded byte array written to another array: [B@232204a1
Number of bytes written: 4
Encoded string: SmF2YVRwb2ludA==
Decoded string: JavaTpoint