The accepted answer uses the Apache Commons package but this is how I did it using Java's native libraries
Java 8 and up
import java.util.Base64; public class Base64Encoding { public static void main(String[] args) { Base64.Encoder enc = Base64.getEncoder(); Base64.Decoder dec = Base64.getDecoder(); String str = "77+9x6s="; // encode data using BASE64 String encoded = enc.encodeToString(str.getBytes()); System.out.println("encoded value is \t" + encoded); // Decode data String decoded = new String(dec.decode(encoded)); System.out.println("decoded value is \t" + decoded); System.out.println("original value is \t" + str); } }
Java 6 - 10
import java.io.UnsupportedEncodingException; import javax.xml.bind.DatatypeConverter; public class EncodeString64 { public static void main(String[] args) throws UnsupportedEncodingException { String str = "77+9x6s="; // encode data using BASE64 String encoded = DatatypeConverter.printBase64Binary(str.getBytes()); System.out.println("encoded value is \t" + encoded); // Decode data String decoded = new String(DatatypeConverter.parseBase64Binary(encoded)); System.out.println("decoded value is \t" + decoded); System.out.println("original value is \t" + str); } }
The better way would be to try/catch the encoding/decoding steps but hopefully you get the idea.
DataTypeConverterworks just fine, the original poster has just mixed the order. It should look like this:String str = DatatypeConverter.printBase64Binary("user:123".getBytes());String res = new String(DatatypeConverter.parseBase64Binary(str));