Класс 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 |
Криптографические параметры, используемые зашифрованным объектом Cipher, закодированные в формате по умолчанию. |
Краткое описание конструкторов
| Модификатор | Конструктор | Описание |
|---|---|---|
| Создает объект SealedObject из любого объекта Serializable. |
||
protected |
Создает объект SealedObject из переданного объекта SealedObject. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
final String |
getAlgorithm() |
Возвращает алгоритм, который был использован для шифрования этого объекта. |
final Object |
getObject |
Возвращает исходный (инкапсулированный) объект. |
final Object |
getObject |
Возвращает исходный (инкапсулированный) объект. |
final Object |
getObject |
Возвращает исходный (инкапсулированный) объект. |
Подробное описание полей
encodedParams
protected byte[] encodedParams
То есть, Cipher.getParameters().getEncoded().
Подробное описание конструкторов
SealedObject
public SealedObject(Serializable object, Cipher c) throws IOException, IllegalBlockSizeException
SealedObject из любого объекта Serializable. Указанный объект сериализуется, а его сериализованные данные шифруются с помощью объекта Cipher, который должен быть полностью инициализирован.
Любые параметры алгоритма, которые могут быть использованы в операции шифрования, хранятся внутри нового объекта SealedObject.
- Parameters:
-
object- объект, подлежащий шифрованию; может бытьnull. -
c- шифр, используемый для шифрования объекта. - Throws:
-
NullPointerException- если указанный шифрnull. -
IOException- если произошла ошибка во время сериализации -
IllegalBlockSizeException- если указанный шифр является блочным шифром, не был запрошен никакой вид заполнения, а общий размер входных данных (т.е. длина сериализованного содержимого объекта) не является кратным размеру блока шифра
SealedObject
protected SealedObject(SealedObject so)
SealedObject из переданного объекта SealedObject.- Parameters:
-
so- объектSealedObject - Throws:
-
NullPointerException- если заданный объект шифрованияnull.
Подробное описание методов
getAlgorithm
public final String getAlgorithm()
- Returns:
- алгоритм, который использовался для шифрования этого объекта.
getObject
public final Object getObject(Key key) throws IOException, ClassNotFoundException, NoSuchAlgorithmException, InvalidKeyException
Этот метод создаёт шифр для алгоритма, который использовался в операции шифрования. Если пакет стандартного поставщика предоставляет реализацию этого алгоритма, используется объект Cipher содержащий эту реализацию. Если алгоритм недоступен в стандартном пакете, ищутся другие пакеты. Объект Cipher инициализируется для дешифрования, используя заданный key и параметры (если таковые имеются), которые использовались в операции шифрования.
Вложенный объект распаковывается и десериализуется, прежде чем быть возвращённым.
- Parameters:
-
key- ключ, используемый для распаковки объекта. - Returns:
- исходный объект.
- Throws:
-
IOException- если произошла ошибка во время десериализации. -
ClassNotFoundException- если произошла ошибка во время десериализации. -
NoSuchAlgorithmException- если алгоритм для распаковки объекта недоступен. -
InvalidKeyException- если заданный ключ не может быть использован для распаковки объекта (например, он имеет неправильный алгоритм). -
NullPointerException- еслиkeyравно null.
getObject
public final Object getObject(Cipher c) throws IOException, ClassNotFoundException, IllegalBlockSizeException, BadPaddingException
Вложенный объект распаковывается (используя заданный объект Cipher и предполагая, что объект Cipher уже должным образом инициализирован) и десериализуется, прежде чем быть возвращённым.
- Parameters:
-
c- шифр, используемый для распаковки объекта - Returns:
- исходный объект.
- Throws:
-
NullPointerException- если заданный шифрnull. -
IOException- если произошла ошибка во время десериализации -
ClassNotFoundException- если произошла ошибка во время десериализации -
IllegalBlockSizeException- если заданный шифр является блочным шифром, не был запрошен никакой вид заполнения, и общий размер входных данных не является кратным размеру блока шифра -
BadPaddingException- если заданный шифр был инициализирован для дешифрования и задан тип заполнения, но входные данные не содержат ожидаемых байтов заполнения
getObject
public final Object getObject(Key key, String provider) throws IOException, ClassNotFoundException, NoSuchAlgorithmException, NoSuchProviderException, InvalidKeyException
Этот метод создаёт шифр для алгоритма, который использовался в операции шифрования, используя реализацию этого алгоритма из заданного provider. Объект Cipher инициализируется для дешифрования, используя заданный key и параметры (если таковые имеются), которые использовались в операции шифрования.
Вложенный объект распаковывается и десериализуется, прежде чем быть возвращённым.
- Parameters:
-
key- ключ, используемый для распаковки объекта. -
provider- имя поставщика алгоритма для распаковки объекта. - Returns:
- исходный объект.
- Throws:
-
IllegalArgumentException- если заданный поставщикnullили пуст. -
IOException- если произошла ошибка во время десериализации. -
ClassNotFoundException- если произошла ошибка во время десериализации. -
NoSuchAlgorithmException- если алгоритм для распаковки объекта недоступен. -
NoSuchProviderException- если заданный поставщик не настроен. -
InvalidKeyException- если заданный ключ не может быть использован для распаковки объекта (например, он имеет неправильный алгоритм). -
NullPointerException- еслиkeyравно null.
© 1993, 2023, 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/21/docs/api/java.base/javax/crypto/SealedObject.html