openjdk.ruOpenJDK на русском

JEP 135: Base64 Encoding & Decoding

Кодирование и декодирование Base64

ОтветственныйAlan Bateman
ТипFeature
ОбластьSE
СтатусClosed / Delivered
Выпуск8
Компонентcore-libs
Обсуждениеcore dash libs dash dev at openjdk dot java dot net
ТрудоёмкостьS
ДлительностьS
ОдобренBrian Goetz
Создан2011/11/11 20:00
Обновлён2017/06/14 20:12
Задача8046125

Аннотация

Определить стандартный API для кодирования и декодирования Base64.

Мотивация

Схемы кодирования Base64 часто используются для кодирования двоичных/октетных последовательностей, которые передаются как текстовые данные. Base64 широко применяется в приложениях, использующих Multipurpose Internal Mail Extensions (MIME), при кодировании паролей для заголовков HTTP, дайджестов сообщений и т. д.

Стандартный API для кодирования и декодирования Base64 давно должен был появиться в JDK. Разработчики просили о нём на протяжении многих лет, и многие прибегали к использованию закрытых и неподдерживаемых классов JDK, таких как sun.misc.BASE64Encoder и sun.misc.BASE64Decoder.

В самом JDK есть несколько внутренних реализаций, например java.util.prefs.Base64, com.sun.org.apache.xml.internal.security.utils.Base64 и com.sun.net.httpserver.Base64. Стандартный API позволил бы отказаться от подобных реализаций.

Описание

Определить простой API для кодирования и декодирования Base64, вероятно, в java.util.

API должен чётко указывать схему кодирования Base64, которую он реализует, вероятно, Base64 Content-Transfer-Encoding, определённую в RFC 1521.

API должен поддерживать типичные случаи, такие как кодирование двоичных данных из массива байтов или прочитанных из входного потока, а также декодирование строк в массив байтов или ByteBuffer.

Следует изучить существующие случаи использования и реализации Base64 в JDK, чтобы найти возможности заменить их новым API.

Тестирование

Для этого API потребуются новые модульные тесты, которые будут разработаны вместе с реализацией. Новые функциональные тесты тоже были бы полезны.

Влияние

  • TCK: потребуются новые тесты.