Класс SealedObject
- java.lang.Object
-
- javax.crypto.SealedObject
- Все реализуемые интерфейсы:
Serializable
public class SealedObject extends Object implements Serializable
Этот класс позволяет программисту создавать объект и защищать его конфиденциальность с помощью криптографического алгоритма.
Для любого сериализуемого объекта можно создать SealedObject, который инкапсулирует исходный объект в сериализованном формате (т. е. «глубокая копия»), и шифрует (шифрует) его сериализованное содержимое с помощью криптографического алгоритма, такого как AES, чтобы защитить его конфиденциальность. Зашифрованное содержимое позже можно расшифровать (с соответствующим алгоритмом и правильным ключом дешифрования) и десериализовать, получив исходный объект.
Обратите внимание, что объект Cipher должен быть полностью инициализирован с помощью правильного алгоритма, ключа, схемы заполнения и т. д., прежде чем применяться к SealedObject.
Исходный запечатанный объект можно восстановить двумя способами:
- с помощью метода
getObject, который принимает объектCipher.Этот метод требует полностью инициализированного объекта
Cipher, инициализированного с использованием того же алгоритма, ключа, схемы заполнения и т. д., которые использовались для запечатывания объекта.Этот подход имеет преимущество, заключающееся в том, что стороне, которая распечатывает запечатанный объект, не нужно знать ключ дешифрования. Например, после того, как одна сторона инициализировала объект шифра с необходимым ключом дешифрования, она может передать объект шифра другой стороне, которая затем распечатает запечатанный объект.
- с помощью одного из методов
getObject, которые принимают объектKey.В этом подходе метод
getObjectсоздает объект шифра для соответствующего алгоритма дешифрования и инициализирует его заданным ключом дешифрования и параметрами алгоритма (если таковые имеются), которые были сохранены в запечатанном объекте.Этот подход имеет преимущество, заключающееся в том, что стороне, которая распечатывает объект, не нужно отслеживать параметры (например, IV), которые использовались для запечатывания объекта.
- С:
- 1.4
- См. также:
-
Cipher, Сериализованная форма
Поля
| Модификатор и тип | Поле | Описание |
|---|---|---|
protected byte[] |
encodedParams |
Криптографические параметры, используемые шифрованием, закодированные в формате по умолчанию. |
Конструкторы
| Модификатор | Конструктор | Описание |
|---|---|---|
SealedObject(Serializable object,
Cipher c) |
Конструирует SealedObject из любого сериализуемого объекта. |
|
protected |
SealedObject(SealedObject so) |
Конструирует объект SealedObject из переданного объекта SealedObject. |
Методы
| Модификатор и тип | Метод | Описание |
|---|---|---|
String |
getAlgorithm() |
Возвращает алгоритм, который использовался для запечатывания этого объекта. |
Object |
getObject(Key key) |
Возвращает исходный (инкапсулированный) объект. |
Object |
getObject(Key key,
String provider) |
Возвращает исходный (инкапсулированный) объект. |
Object |
getObject(Cipher c) |
Возвращает исходный (инкапсулированный) объект. |
Методы, объявленные в классе java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Поля
encodedParams
protected byte[] encodedParams
Криптографические параметры, используемые шифрованием, закодированные в формате по умолчанию.
То есть, cipher.getParameters().getEncoded()
Конструкторы
SealedObject
public SealedObject(Serializable object,
Cipher c)
throws IOException,
IllegalBlockSizeException
Конструирует SealedObject из любого сериализуемого объекта.
Переданный объект сериализуется, а его сериализованное содержимое шифруется с помощью заданного 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, 2020, 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/11/docs/api/java.base/javax/crypto/SealedObject.html