Spec-Zone.ru › OpenJDK 25

Класс SealedObject

java.lang.Object
javax.crypto.SealedObject
Все реализуемые интерфейсы:
Serializable
public class SealedObject extends Object implements Serializable
Этот класс позволяет программисту создавать объект и защищать его конфиденциальность с помощью криптографического алгоритма.

Для любого объекта Serializable можно создать SealedObject, который инкапсулирует исходный объект в сериализованном формате (то есть создает «глубокую копию») и запечатывает (шифрует) его сериализованное содержимое с помощью криптографического алгоритма, например AES, чтобы защитить его конфиденциальность. Впоследствии зашифрованное содержимое можно расшифровать (с помощью соответствующего алгоритма и правильного ключа расшифрования) и десериализовать, получив исходный объект.

Обратите внимание, что объект Cipher должен быть полностью инициализирован с правильным алгоритмом, ключом, схемой заполнения и т. д. до его применения к объекту SealedObject.

Исходный запечатанный объект можно восстановить двумя способами:

  • с помощью метода getObject, принимающего объект Cipher.

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

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

  • с помощью одного из методов getObject, принимающих объект Key.

    В этом случае метод getObject создает объект шифра для соответствующего алгоритма расшифрования и инициализирует его переданным ключом расшифрования и параметрами алгоритма (если они есть), сохраненными в запечатанном объекте.

    Преимущество этого подхода состоит в том, что стороне, распечатывающей объект, не нужно отслеживать параметры (например, вектор инициализации), использовавшиеся для запечатывания объекта.

Начиная с версии:
1.4
См. также:
  • Cipher
  • Форма сериализации

Краткое описание полей

Модификатор и тип Поле Описание
protected byte[] encodedParams
Криптографические параметры, используемые объектом шифра Cipher, закодированные в формате по умолчанию.

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

SealedObject(Serializable object, Cipher c)
SealedObject(SealedObject so)
Модификатор Конструктор Описание
Создает SealedObject из объекта любого типа Serializable.
protected
Создает объект SealedObject из переданного объекта SealedObject.

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

Модификатор и тип Метод Описание
final String getAlgorithm()
Возвращает алгоритм, использованный для запечатывания этого объекта.
final Object getObject(Key key)
Получает исходный (инкапсулированный) объект.
final Object getObject(Key key, String provider)
Получает исходный (инкапсулированный) объект.
final Object getObject(Cipher c)
Получает исходный (инкапсулированный) объект.

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

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

Подробное описание полей

encodedParams

protected byte[] encodedParams
Криптографические параметры, используемые объектом шифра Cipher, закодированные в формате по умолчанию.

То есть Cipher.getParameters().getEncoded().

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

SealedObject

public SealedObject(Serializable object, Cipher c) throws IOException, IllegalBlockSizeException
Создает SealedObject из объекта любого типа Serializable.

Переданный объект сериализуется, а его сериализованное содержимое шифруется с помощью переданного объекта Cipher, который должен быть полностью инициализирован.

Все параметры алгоритма, которые могут использоваться при шифровании, сохраняются в новом объекте SealedObject.

Параметры:
object — объект, который нужно запечатать; может быть null.
c — шифр, используемый для запечатывания объекта.
Исключения:
NullPointerException — если переданный шифр является null.
IOException — если при сериализации возникает ошибка
IllegalBlockSizeException — если переданный шифр является блочным шифром, заполнение не запрошено, а общая длина входных данных (то есть длина сериализованного содержимого объекта) не кратна размеру блока шифра

SealedObject

protected SealedObject(SealedObject so)
Создает объект SealedObject из переданного объекта SealedObject.
Параметры:
so — объект SealedObject
Исключения:
NullPointerException — если переданный запечатанный объект является null.

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

getAlgorithm

public final String getAlgorithm()
Возвращает алгоритм, использованный для запечатывания этого объекта.
Возвращает:
алгоритм, использованный для запечатывания этого объекта.

getObject

public final Object getObject(Key key) throws IOException, ClassNotFoundException, NoSuchAlgorithmException, InvalidKeyException
Получает исходный (инкапсулированный) объект.

Этот метод создает шифр для алгоритма, использованного при запечатывании. Если пакет поставщика по умолчанию предоставляет реализацию этого алгоритма, используется объект Cipher, содержащий эту реализацию. Если алгоритм недоступен в пакете по умолчанию, выполняется поиск в других пакетах. Объект Cipher инициализируется для расшифрования с использованием переданного key и параметров (если они есть), использовавшихся при запечатывании.

Инкапсулированный объект распечатывается и десериализуется перед возвратом.

Параметры:
key — ключ, используемый для распечатывания объекта.
Возвращает:
исходный объект.
Исключения:
IOException — если при десериализации возникает ошибка.
ClassNotFoundException — если при десериализации возникает ошибка.
NoSuchAlgorithmException — если алгоритм для распечатывания объекта недоступен.
InvalidKeyException — если переданный ключ нельзя использовать для распечатывания объекта (например, у него неверный алгоритм).
NullPointerException — если key имеет значение null.

getObject

public final Object getObject(Cipher c) throws IOException, ClassNotFoundException, IllegalBlockSizeException, BadPaddingException
Получает исходный (инкапсулированный) объект.

Инкапсулированный объект распечатывается (с помощью переданного объекта Cipher при условии, что объект Cipher уже правильно инициализирован) и десериализуется перед возвратом.

Параметры:
c — шифр, используемый для распечатывания объекта
Возвращает:
исходный объект.
Исключения:
NullPointerException — если переданный шифр является null.
IOException — если при десериализации возникает ошибка
ClassNotFoundException — если при десериализации возникает ошибка
IllegalBlockSizeException — если переданный шифр является блочным шифром, заполнение не запрошено, а общая длина входных данных не кратна размеру блока шифра
BadPaddingException — если переданный шифр был инициализирован для расшифрования и указано заполнение, но входные данные не содержат ожидаемых байтов заполнения

getObject

public final Object getObject(Key key, String provider) throws IOException, ClassNotFoundException, NoSuchAlgorithmException, NoSuchProviderException, InvalidKeyException
Получает исходный (инкапсулированный) объект.

Этот метод создает шифр для алгоритма, использованного при запечатывании, используя реализацию этого алгоритма из переданного provider. Объект Cipher инициализируется для расшифрования с использованием переданного key и параметров (если они есть), использовавшихся при запечатывании.

Инкапсулированный объект распечатывается и десериализуется перед возвратом.

Параметры:
key — ключ, используемый для распечатывания объекта.
provider — имя поставщика алгоритма для распечатывания объекта.
Возвращает:
исходный объект.
Исключения:
IllegalArgumentException — если переданный поставщик является null или пуст.
IOException — если при десериализации возникает ошибка.
ClassNotFoundException — если при десериализации возникает ошибка.
NoSuchAlgorithmException — если алгоритм для распечатывания объекта недоступен.
NoSuchProviderException — если переданный поставщик не настроен.
InvalidKeyException — если переданный ключ нельзя использовать для распечатывания объекта (например, у него неверный алгоритм).
NullPointerException — если key имеет значение 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/javax/crypto/SealedObject.html

Spec-Zone.ru

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