Spec-Zone.ru › OpenJDK 27

Класс 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
Модификатор и тип Метод Описание
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 или interrupt.
final void wait(long timeoutMillis)
Заставляет текущий поток ожидать пробуждения, обычно вследствие вызова notify или interrupt, либо до истечения заданного промежутка реального времени.
final void wait(long timeoutMillis, int nanos)
Заставляет текущий поток ожидать пробуждения, обычно вследствие вызова notify или interrupt, либо до истечения заданного промежутка реального времени.

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

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, 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