Java Base64 Encode Decode

In Java, the Base64 class is available for encryption operations. It offers methods for both encrypting and decrypting data. To utilize these methods, you must include java.util.Base64 in your source code file.

The class offers a variety of three encoders and decoders to secure data at various tiers. These methods are applicable at the subsequent levels:

Basic Encoding and Decoding

The Base64 encoding and decoding operations are performed using the Base64 alphabet defined by Java in RFC 4648 and RFC 2045. When encoding, no line separator character is appended by the encoder. However, the decoder will discard any data that includes characters not found in the base64 alphabet.

URL and Filename Encoding and Decoding

The encoder and decoder operations utilize the Base64 character set defined by Java in RFC 4648. No line separator character is included by the encoder. Any data containing characters not within the base64 alphabet is rejected by the decoder.

The encoding and decoding operations utilize the Base64 alphabet outlined in RFC 2045. Encoded results should be structured in lines with a maximum of 76 characters per line. Each line is separated by a carriage return '\r' followed by a linefeed '\n'. The final line of encoded output does not have a line separator. During decoding, any characters not present in the Base64 alphabet table, including line separators, are disregarded.

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

Methods 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

Methods 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

Methods 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 and Decoding

Example

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("Hello World".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:

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: C# Tutorial

Java Base64 Example: URL Encoding and Decoding

Example

import java.util.Base64;

publicclass Base64BasicEncryptionExample {

	publicstaticvoid main(String[] args) {

		// Getting encoder

		Base64.Encoder encoder = Base64.getUrlEncoder();

		// Encoding URL

		String eStr = encoder.encodeToString("http://www.hello world.com/java-tutorial/".getBytes());

		System.out.println("Encoded URL: "+eStr);

		// Getting decoder

		Base64.Decoder decoder = Base64.getUrlDecoder();

		// Decoding URl

		String dStr = new String(decoder.decode(eStr));

		System.out.println("Decoded URL: "+dStr);

	}

}

Output:

Output

Encoded URL: aHR0cDovL3d3dy5qYXZhdHBvaW50LmNvbS9qYXZhLXR1dG9yaWFsLw==

Decoded URL: http://www.hello world.com/java-tutorial/

Java Base64 Example: MIME Encoding and Decoding

Example

package Base64Encryption;

import java.util.Base64;

publicclass Base64BasicEncryptionExample {

	publicstaticvoid main(String[] args) {

		// Getting MIME encoder

		Base64.Encoder encoder = Base64.getMimeEncoder();

		String message = "Hello, \nYou are informed regarding your inconsistency of work";

		String eStr = encoder.encodeToString(message.getBytes());

		System.out.println("Encoded MIME message: "+eStr);

		

		// Getting MIME decoder

		Base64.Decoder decoder = Base64.getMimeDecoder();

		// Decoding MIME encoded message

		String dStr = new String(decoder.decode(eStr));

		System.out.println("Decoded message: "+dStr); 

	}

}

Output:

Output

Encoded MIME message: SGVsbG8sIApZb3UgYXJlIGluZm9ybWVkIHJlZ2FyZGluZyB5b3VyIGluY29uc2lzdGVuY3kgb2Yg

d29yaw==

Decoded message: Hello, 

You are informed regarding your inconsistency of work

Input Required

This code uses input(). Please provide values below: