Класс SealedObject
- Все реализованные интерфейсы:
Serializable
public class SealedObject extends Object implements Serializable
Для любого Serializable объекта можно создать SealedObject, который инкапсулирует исходный объект в сериализованном формате (т.е. "глубокая копия") и шифрует его сериализованное содержимое с помощью криптографического алгоритма, такого как AES, для защиты конфиденциальности. Зашифрованное содержимое можно позже расшифровать (с помощью соответствующего алгоритма и правильного ключа дешифрования) и десериализовать, получив исходный объект.
Обратите внимание, что объект Cipher должен быть полностью инициализирован с правильным алгоритмом, ключом, схемой заполнения и т.д., прежде чем он будет применён к SealedObject.
Исходный зашифрованный объект может быть восстановлен двумя способами:
- с помощью метода
getObject, принимающего объектCipher.Этот метод требует полностью инициализированного объекта
Cipher, инициализированного с использованием точно того же алгоритма, ключа, схемы заполнения и т.д., что и для шифрования объекта.Этот подход имеет преимущество, заключающееся в том, что стороне, расшифровывающей зашифрованный объект, не требуется знание ключа дешифрования. Например, после того, как одна сторона инициализировала объект шифра с необходимым ключом дешифрования, она может передать объект шифра другой стороне, которая затем расшифровывает зашифрованный объект.
- с помощью одного из методов
getObject, принимающих объектKey.В этом подходе метод
getObjectсоздаёт объект шифра для соответствующего алгоритма дешифрования и инициализирует его заданным ключом дешифрования и параметрами алгоритма (если таковые имеются), которые были сохранены в зашифрованном объекте.Этот подход имеет преимущество, заключающееся в том, что стороне, расшифровывающей объект, не нужно отслеживать параметры (например, IV), которые были использованы для шифрования объекта.
- С:
- 1.4
- См. также:
Краткое описание полей
| Модификатор и тип | Поле | Описание |
|---|---|---|
protected byte[] |
encodedParams |
Криптографические параметры, используемые объектом шифрования, закодированы в стандартном формате. |
Краткое описание конструкторов
| Модификатор | Конструктор | Описание |
|---|---|---|
| Создаёт SealedObject из любого Serializable объекта. |
||
protected |
Создаёт объект SealedObject из переданного SealedObject. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
final String |
getAlgorithm() |
Возвращает алгоритм, который был использован для шифрования этого объекта. |
final Object |
getObject |
Извлекает исходный (инкапсулированный) объект. |
final Object |
getObject |
Извлекает исходный (инкапсулированный) объект. |
final Object |
getObject |
Извлекает исходный (инкапсулированный) объект. |
Подробное описание полей
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.
© 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://download.java.net/java/early_access/jdk24/docs/api/java.base/javax/crypto/SealedObject.html