Какая библиотека Java обеспечивает кодирование / декодирование base64?

Мне интересно, какую библиотеку использовать для кодирования / декодирования base64? Мне нужно, чтобы эта функциональность была достаточно стабильной для производственного использования.

4 ответа

Решение

Java 9

Используйте решение Java 8. Примечание. DatatypeConverter все еще можно использовать, но теперь он находится в пределах java.xml.bind модуль, который нужно будет включить.

module org.example.foo {
    requires java.xml.bind;
}

Java 8

Java 8 теперь предоставляет java.util.Base64 для кодирования и декодирования base64.

кодирование

byte[] message = "hello world".getBytes(StandardCharsets.UTF_8);
String encoded = Base64.getEncoder().encodeToString(message);
System.out.println(encoded);
// => aGVsbG8gd29ybGQ=

расшифровка

byte[] decoded = Base64.getDecoder().decode("aGVsbG8gd29ybGQ=");
System.out.println(new String(decoded, StandardCharsets.UTF_8));
// => hello world

Ява 6 и 7

Начиная с Java 6 менее известный класс javax.xml.bind.DatatypeConverter может быть использован. Это часть JRE, дополнительные библиотеки не требуются.

кодирование

byte[] message = "hello world".getBytes("UTF-8");
String encoded = DatatypeConverter.printBase64Binary(message);
System.out.println(encoded);
// => aGVsbG8gd29ybGQ=  

расшифровка

byte[] decoded = DatatypeConverter.parseBase64Binary("aGVsbG8gd29ybGQ=");
System.out.println(new String(decoded, "UTF-8"));
// => hello world

В Apache Commons commons-codec-1.7.jar содержит класс Base64, который можно использовать для кодирования.

Виа Maven:

<dependency>
    <groupId>commons-codec</groupId>
    <artifactId>commons-codec</artifactId>
    <version>20041127.091804</version>
</dependency>

Прямое скачивание

Если вы разработчик Android, вы можете использовать android.util.Base64 класс для этой цели.

У Guava также есть Base64 (среди других кодировок и невероятно полезных вещей)

Другие вопросы по тегам