Класс PEMEncoder
public final class PEMEncoder extends Object
PEMEncoder — это предварительная версия API платформы 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
- Внешние спецификации
- См. также:
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
byte[] |
encode |
Кодирует указанный BinaryEncodable и возвращает массив байтов в кодировке PEM. |
String |
encodeToString |
Кодирует указанный BinaryEncodable и возвращает строку в кодировке PEM. |
static PEMEncoderPREVIEW |
of() |
Возвращает экземпляр PEMEncoder. |
PEMEncoderPREVIEW |
withEncryption |
Возвращает копию этого PEMEncoder, настроенную для шифрования и кодирования с использованием указанного пароля и алгоритма шифрования по умолчанию. |
Методы, объявленные в классе Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait | Модификатор и тип | Метод | Описание |
|---|---|---|
protected Object |
clone() |
Создаёт и возвращает копию этого объекта. |
boolean |
equals |
Указывает, равен ли другой объект этому объекту. |
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 |
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова метода notify или прерывания interrupted, либо до истечения заданного времени. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова метода 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
- См. также:
encode
public byte[] encode(BinaryEncodablePREVIEW be)
BinaryEncodable и возвращает массив байтов в кодировке PEM.- Параметры:
-
be—BinaryEncodableдля кодирования - Возвращает:
- массив байтов в кодировке PEM
- Исключения:
-
IllegalArgumentException— еслиbeне имеет кодировки, относится к неподдерживаемому классу или не может использоваться для шифрования -
NullPointerException— еслиbeявляетсяnull -
CryptoExceptionPREVIEW— если при шифровании произошла ошибка - С версии:
- 27
- См. также:
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— если не удалось создать ключ шифрования
© 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.
PEMEncoderтолько при включённых предварительных функциях.