Algunos servicios hoy en día estan comenzando a utilizar mucho la transferencia de información por base64, esto para impedir la transferencia de texto plano, la transferencia errónea de caracteres especiales en un request o bien para transferir un texto previamente encriptado, que utilice caracteres ASCII o que no esten en UTF-8.
Debemos tener en cuenta que base64 no es un tipo de cifrado, ya que no utiliza claves o certificados de seguridad que permitan evitar un descifrado del mismo.
Lo primero que debemos hacer es crear una clase java, le llamaré Conversion, en ella vamos a crear 2 métodos:
Decode, lo usaremos para decodificar el texto en base64:
public String decode(String s) throws UnsupportedEncodingException { String respuesta = "error"; try { respuesta = new String(Base64.getDecoder().decode(s.getBytes("UTF8")),"UTF-8"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } return respuesta; }
Y Encode, lo usaremos para codificar el texto a base64:
public String encode(String s) { String respuesta = "error"; try { respuesta = new String(Base64.getEncoder().encode(s.getBytes("UTF8")),"UTF-8"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } return respuesta; }

Luego de ello, crearemos nuestra clase main y probaremos su funcionamiento:
public static void main(String arg[]){ Conversion res = new Conversion(); String base64 = "" ; base64 = res.encode("Hola mundo!"); //Encriptamos nuestro Hola mundo! System.out.println(base64 + "\n"); //Desciframos nuestro string en base64 System.out.println(res.decode(base64)); }
Compilamos nuestra clase y probamos su funcionamiento:

De esta manera podemos codificar y decodificar a base64 en java.