Класс SealedObject
- Все реализуемые интерфейсы:
Serializable
public class SealedObject extends Object implements Serializable
Для любого объекта Serializable можно создать SealedObject, инкапсулирующий исходный объект в сериализованном формате (то есть его «глубокую копию») и запечатывающий (шифрующий) его сериализованное содержимое с помощью криптографического алгоритма, например AES, чтобы защитить его конфиденциальность. Зашифрованное содержимое впоследствии можно расшифровать (с помощью соответствующего алгоритма и правильного ключа расшифрования) и десериализовать, получив исходный объект.
Обратите внимание, что объект Cipher должен быть полностью инициализирован с правильным алгоритмом, ключом, схемой дополнения и т. д. до его применения к SealedObject.
Исходный объект, который был запечатан, можно восстановить двумя способами:
- с помощью метода
getObject, принимающего объектCipher.Для этого метода требуется полностью инициализированный объект
Cipher, инициализированный с использованием того же алгоритма, ключа, схемы дополнения и т. д., которые применялись для запечатывания объекта.Преимущество этого подхода в том, что стороне, распечатывающей запечатанный объект, не нужно знать ключ расшифрования. Например, после того как одна сторона инициализирует объект шифра с необходимым ключом расшифрования, она может передать этот объект шифра другой стороне, которая затем распечатает запечатанный объект.
- с помощью одного из методов
getObject, принимающих объектKey.В этом случае метод
getObjectсоздает объект шифра для соответствующего алгоритма расшифрования и инициализирует его заданным ключом расшифрования и параметрами алгоритма (если они есть), сохраненными в запечатанном объекте.Преимущество этого подхода в том, что стороне, распечатывающей объект, не нужно отслеживать параметры (например, вектор инициализации), использованные для запечатывания объекта.
- С версии:
- 1.4
- См. также:
Краткое описание полей
| Модификатор и тип | Поле | Описание |
|---|---|---|
protected byte[] |
encodedParams |
Криптографические параметры, используемые объектом Cipher для запечатывания, в формате по умолчанию. |
Краткое описание конструкторов
| Модификатор | Конструктор | Описание |
|---|---|---|
| Создает SealedObject из любого объекта Serializable. |
||
protected |
Создает объект SealedObject из переданного SealedObject. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
final String |
getAlgorithm() |
Возвращает алгоритм, использованный для запечатывания этого объекта. |
final Object |
getObject |
Извлекает исходный (инкапсулированный) объект. |
final Object |
getObject |
Извлекает исходный (инкапсулированный) объект. |
final Object |
getObject |
Извлекает исходный (инкапсулированный) объект. |
Методы, объявленные в классе 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 или interrupt. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно вследствие вызова notify или interrupt, либо до истечения заданного промежутка реального времени. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно вследствие вызова 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.
© 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.