Кодирование/декодирование PEM
Нативное кодирование и декодирование криптографических объектов в формате PEM.
Сравнение кода
✕ Java 8
String pem = "-----BEGIN CERTIFICATE-----\n"
+ Base64.getMimeEncoder()
.encodeToString(
cert.getEncoded())
+ "\n-----END CERTIFICATE-----";
✓ Java 25 (Preview)
// Encode to PEM
String pem = PEMEncoder.of()
.encodeToString(cert);
// Decode from PEM
var cert = PEMDecoder.of()
.decode(pemString);
Заметили проблему в этом коде? Сообщите нам.
Почему современный подход лучше
Без ручного Base64
Заголовки PEM, перенос строк и Base64 обрабатываются автоматически.
Двунаправленный
Кодирование в PEM и декодирование из PEM с помощью одного API.
Стандартный формат
Создаёт PEM-вывод, соответствующий RFC 7468.
Старый подход
Ручной Base64 + заголовки
Современный подход
PEM API
Начиная с JDK
25
Сложность
Продвинутый
Поддержка JDK
Кодирование/декодирование PEM
Предварительный просмотр
Предварительная версия в JDK 25 (JEP 470). Требует --enable-preview.
Как это работает
PEM API предоставляет стандартное кодирование/декодирование для сертификатов, ключей и других криптографических объектов в формате PEM. Больше никакого ручного оборачивания Base64 с заголовками BEGIN/END.
Связанная документация
Доказательство