Looking for java Keywords? Try Ask4Keywords

Java Language Кодирование / декодирование Base64


пример

Иногда вы обнаружите необходимость кодирования двоичных данных в виде строки с кодом base64 .

Для этого мы можем использовать класс DatatypeConverter из пакета javax.xml.bind :

import javax.xml.bind.DatatypeConverter;
import java.util.Arrays;

// arbitrary binary data specified as a byte array
byte[] binaryData = "some arbitrary data".getBytes("UTF-8");

// convert the binary data to the base64-encoded string
String encodedData = DatatypeConverter.printBase64Binary(binaryData);
// encodedData is now "c29tZSBhcmJpdHJhcnkgZGF0YQ=="

// convert the base64-encoded string back to a byte array
byte[] decodedData = DatatypeConverter.parseBase64Binary(encodedData);

// assert that the original data and the decoded data are equal
assert Arrays.equals(binaryData, decodedData);

Apache commons-codec

В качестве альтернативы, мы можем использовать Base64 из общедоступного кодека Apache .

import org.apache.commons.codec.binary.Base64;

// your blob of binary as a byte array
byte[] blob = "someBinaryData".getBytes();

// use the Base64 class to encode
String binaryAsAString = Base64.encodeBase64String(blob);

// use the Base64 class to decode
byte[] blob2 = Base64.decodeBase64(binaryAsAString);

// assert that the two blobs are equal
System.out.println("Equal : " + Boolean.toString(Arrays.equals(blob, blob2)));

Если вы проверите эту программу, то увидите, что someBinaryData кодирует c29tZUJpbmFyeURhdGE= , очень c29tZUJpbmFyeURhdGE= объект String -UTF-8 .


Java SE 8

Детали для этого же можно найти на Base64

// encode with padding
String encoded = Base64.getEncoder().encodeToString(someByteArray);

// encode without padding
String encoded = Base64.getEncoder().withoutPadding().encodeToString(someByteArray);

// decode a String
byte [] barr = Base64.getDecoder().decode(encoded); 

Ссылка