Мне интересно, какую библиотеку использовать для кодирования/декодирования base64? Мне нужно, чтобы эта функциональность была достаточно стабильной для использования в производстве.
В какой библиотеке Java предусмотрена кодировка/декодирование base64?
Ответ 1
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
Java 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
Ответ 2
В Apache Commons, commons-codec-1.7.jar содержит класс Base64, который может для кодирования.
Через Maven:
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>20041127.091804</version>
</dependency>
Ответ 3
Если вы разработчик Android, для этой цели вы можете использовать класс android.util.Base64
.
Ответ 4
Guava также имеет Base64 (среди других кодировок и невероятно полезных вещей)