Spec-Zone.ru › OpenJDK 21

Класс 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 создает объект шифра для соответствующего алгоритма расшифровки и инициализирует его заданным ключом расшифровки и параметрами алгоритма (если таковые имеются), которые были сохранены в зашифрованном объекте.

    Это преимущество заключается в том, что стороне, расшифровывающей объект, не нужно отслеживать параметры (например, IV), которые были использованы для шифрования объекта.

С тех пор:
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)
Возвращает исходный (инкапсулированный) объект.

Методы, объявленные в классе 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 из любого объекта 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API