Spec-Zone.ru › OpenJDK 25

Класс 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, заключённых между заголовком и завершающей строкой, указывающими тип данных.

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

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

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

При кодировании PEMRecordPREVIEW API обрамляет содержимое PEMRecord.content()PREVIEW заголовком и завершающей строкой PEM, соответствующими значению PEMRecord.type()PREVIEW. PEMRecord.leadingData()PREVIEW не включается в результат кодирования. PEMRecord не выполняет проверку допустимости данных.

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

  • X509Certificate : CERTIFICATE
  • X509CRL : X509 CRL
  • PublicKey: PUBLIC KEY
  • PrivateKey : PRIVATE KEY
  • PrivateKey (если настроен для шифрования): ENCRYPTED PRIVATE KEY
  • EncryptedPrivateKeyInfo : ENCRYPTED PRIVATE KEY
  • KeyPair : PRIVATE KEY
  • X509EncodedKeySpec : PUBLIC KEY
  • PKCS8EncodedKeySpec : PRIVATE KEY
  • PEMRecord : PEMRecord.type()

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

Пример кодирования объекта PrivateKey:

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

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

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

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

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

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

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

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

of

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

encodeToString

public String encodeToString(DEREncodablePREVIEW de)
Кодирует указанный DEREncodable и возвращает строку в формате PEM.
Параметры:
de — DEREncodable для кодирования
Возвращает:
String, содержащую закодированные данные PEM
Вызывает исключение:
IllegalArgumentException — если DEREncodable невозможно закодировать
NullPointerException — если de равно null
См. также:
  • withEncryption(char[])

encode

public byte[] encode(DEREncodablePREVIEW de)
Кодирует указанный DEREncodable и возвращает закодированные данные PEM в массиве байтов.
Параметры:
de — DEREncodable для кодирования
Возвращает:
массив байтов в формате PEM
Вызывает исключение:
IllegalArgumentException — если DEREncodable невозможно закодировать
NullPointerException — если de равно null
См. также:
  • withEncryption(char[])

withEncryption

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

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

Примечание по реализации:
Алгоритм шифрования на основе пароля по умолчанию определяется свойством безопасности jdk.epkcs8.defaultAlgorithm и использует параметры шифрования по умолчанию выбранного поставщика. Для большей гибкости в выборе параметров шифрования используйте EncryptedPrivateKeyInfo.encryptKey(PrivateKey, Key, String, AlgorithmParameterSpec, Provider, SecureRandom)PREVIEW, а возвращённый объект используйте с encode(DEREncodable).
Параметры:
password — пароль для шифрования. Массив клонируется и сохраняется в новом экземпляре.
Возвращает:
новый экземпляр PEMEncoder, настроенный для шифрования
Вызывает исключение:
NullPointerException — если пароль равен null

Сообщить об ошибке или предложить улучшение
Дополнительные справочные материалы по API и документацию для разработчиков см. в документации Java SE, содержащей более подробные описания для разработчиков, обзоры концепций, определения терминов, обходные решения и рабочие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её аффилированных лиц в США и других странах.
Авторское право © 1993, 2025, 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.
https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/security/PEMEncoder.html

Spec-Zone.ru

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