Spec-Zone.ru › OpenJDK 27

Класс PEMEncoder

java.lang.Object
java.security.PEMEncoder
public final class PEMEncoder extends Object
PEMEncoder — это предварительная версия API платформы Java.
Программы могут использовать PEMEncoder только при включённых предварительных функциях.
Предварительные функции могут быть удалены в одном из будущих выпусков или стать постоянными функциями платформы Java.
PEMEncoder реализует кодировщик данных Privacy-Enhanced Mail (PEM). PEM — это текстовый формат кодирования, используемый для хранения и передачи криптографических объектов, таких как асимметричные ключи, сертификаты и списки отзыва сертификатов (CRL). Он определён в RFC 1421 и RFC 7468. PEM состоит из содержимого, закодированного в Base64 и заключённого в заголовок и нижний колонтитул, указывающие тип данных.

Кодирование можно выполнять для криптографических объектов, реализующих BinaryEncodablePREVIEW. Методы encode(BinaryEncodable) и encodeToString(BinaryEncodable) кодируют BinaryEncodable в формате PEM и возвращают данные в виде массива байтов или String.

Закрытые ключи можно зашифровать и закодировать, настроив PEMEncoder с помощью метода withEncryption(char[]), который принимает пароль и возвращает новый экземпляр PEMEncoder, настроенный для шифрования ключа с использованием этого пароля.

PKCS #8 v2.0 определяет структуру ASN.1 OneAsymmetricKey, которая может содержать как закрытые, так и открытые ключи. Объекты KeyPair, переданные методам encode или encodeToString, кодируются в структуре OneAsymmetricKey с использованием типа "PRIVATE KEY".

При кодировании объекта PEMPREVIEW API заключает PEM.content()PREVIEW в заголовок и нижний колонтитул PEM на основе PEM.type()PREVIEW. Значение, возвращаемое методом PEM.leadingData()PREVIEW, не включается в результат.

Ниже перечислены поддерживаемые классы BinaryEncodable и соответствующие им типы PEM:

  • X509Certificate: CERTIFICATE
  • X509CRL: X509 CRL
  • PublicKey: PUBLIC KEY
  • PrivateKey: PRIVATE KEY
  • EncryptedPrivateKeyInfo: ENCRYPTED PRIVATE KEY
  • KeyPair: PRIVATE KEY
  • X509EncodedKeySpec: PUBLIC KEY
  • PKCS8EncodedKeySpec: PRIVATE KEY
  • PEMPREVIEW: PEM.type()PREVIEW

При использовании экземпляра PEMEncoder, настроенного для шифрования:

  • PrivateKey: ENCRYPTED PRIVATE KEY
  • KeyPair: ENCRYPTED PRIVATE KEY
  • PKCS8EncodedKeySpec: ENCRYPTED PRIVATE KEY

Этот класс является неизменяемым и потокобезопасным.

Пример: кодирование закрытого ключа:

    PEMEncoder pe = PEMEncoder.of();
    byte[] pemData = pe.encode(privKey);

Пример: шифрование и кодирование закрытого ключа с использованием пароля:

    PEMEncoder pe = PEMEncoder.of().withEncryption(password);
    byte[] pemData = pe.encode(privKey);
Примечание по реализации:
Реализации могут поддерживать дополнительные типы PEM.
С версии:
25
Внешние спецификации
  • RFC 1421: повышение конфиденциальности электронной почты в Интернете
  • RFC 5958: пакеты асимметричных ключей
  • RFC 7468: текстовое кодирование структур PKIX, PKCS и CMS
См. также:
  • PEMDecoderPREVIEW
  • PEMPREVIEW
  • EncryptedPrivateKeyInfo

Краткое описание методов

Модификатор и тип Метод Описание
byte[] encode(BinaryEncodablePREVIEW be)
Кодирует указанный BinaryEncodable и возвращает массив байтов в кодировке PEM.
String encodeToString(BinaryEncodablePREVIEW be)
Кодирует указанный BinaryEncodable и возвращает строку в кодировке PEM.
static PEMEncoderPREVIEW of()
Возвращает экземпляр PEMEncoder.
PEMEncoderPREVIEW withEncryption(char[] password)
Возвращает копию этого PEMEncoder, настроенную для шифрования и кодирования с использованием указанного пароля и алгоритма шифрования по умолчанию.

Методы, объявленные в классе Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Модификатор и тип Метод Описание
protected Object clone()
Создаёт и возвращает копию этого объекта.
boolean equals(Object obj)
Указывает, равен ли другой объект этому объекту.
protected void finalize()
Устарело, будет удалено: этот элемент API может быть удалён в будущей версии.
Финализация устарела и будет удалена в одном из будущих выпусков.
final Class<?> getClass()
Возвращает класс времени выполнения этого Object.
int hashCode()
Возвращает значение хеш-кода для этого объекта.
final void notify()
Пробуждает один поток, ожидающий на мониторе этого объекта.
final void notifyAll()
Пробуждает все потоки, ожидающие на мониторе этого объекта.
String toString()
Возвращает строковое представление объекта.
final void wait()
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова метода notify или прерывания interrupted.
final void wait(long timeoutMillis)
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова метода notify или прерывания interrupted, либо до истечения заданного времени.
final void wait(long timeoutMillis, int nanos)
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова метода notify или прерывания interrupted, либо до истечения заданного времени.

Подробное описание методов

of

public static PEMEncoderPREVIEW of()
Возвращает экземпляр PEMEncoder.
Возвращает:
экземпляр PEMEncoder

encodeToString

public String encodeToString(BinaryEncodablePREVIEW be)
Кодирует указанный BinaryEncodable и возвращает строку в кодировке PEM.
Параметры:
be — BinaryEncodable для кодирования
Возвращает:
String, содержащую данные в кодировке PEM
Исключения:
IllegalArgumentException — если be не имеет кодировки, относится к неподдерживаемому классу или не может использоваться для шифрования
NullPointerException — если be является null
CryptoExceptionPREVIEW — если при шифровании произошла ошибка
С версии:
27
См. также:
  • withEncryption(char[])

encode

public byte[] encode(BinaryEncodablePREVIEW be)
Кодирует указанный BinaryEncodable и возвращает массив байтов в кодировке PEM.
Параметры:
be — BinaryEncodable для кодирования
Возвращает:
массив байтов в кодировке PEM
Исключения:
IllegalArgumentException — если be не имеет кодировки, относится к неподдерживаемому классу или не может использоваться для шифрования
NullPointerException — если be является null
CryptoExceptionPREVIEW — если при шифровании произошла ошибка
С версии:
27
См. также:
  • withEncryption(char[])

withEncryption

public PEMEncoderPREVIEW withEncryption(char[] password)
Возвращает копию этого PEMEncoder, настроенную для шифрования и кодирования с использованием указанного пароля и алгоритма шифрования по умолчанию.

С помощью этого настроенного экземпляра можно кодировать только объекты PrivateKey, KeyPair и PKCS8EncodedKeySpec. При попытке закодировать другие объекты BinaryEncodable будет выброшено исключение IllegalArgumentException.

Чтобы использовать нестандартные параметры шифрования или другой поставщик, примените метод encrypt класса EncryptedPrivateKeyInfo, а затем передайте полученный объект в encode(BinaryEncodable).

Примечание по реализации:
За алгоритм шифрования по умолчанию отвечает свойство безопасности jdk.epkcs8.defaultAlgorithm. Значения AlgorithmParameterSpec по умолчанию определяются поставщиком.
Параметры:
password — пароль шифрования. Массив копируется и сохраняется в новом экземпляре.
Возвращает:
новый экземпляр PEMEncoder, настроенный для шифрования
Исключения:
NullPointerException — если password является null
CryptoExceptionPREVIEW — если не удалось создать ключ шифрования

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в документации Java SE, содержащей более подробные описания для разработчиков, концептуальные обзоры, определения терминов, обходные решения и примеры работающего кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её аффилированных лиц в США и других странах.
Авторское право © 1993, 2026, Oracle и/или её аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API