Spec-Zone.ru › OpenJDK 17

Класс 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
Криптографические параметры, используемые Cipher для шифрования, закодированные в стандартном формате.

Краткое описание конструкторов

SealedObject(Serializable object, Cipher c)
SealedObject(SealedObject so)
Модификатор Конструктор Описание
Создает SealedObject из любого сериализуемого объекта.
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 для шифрования, закодированные в стандартном формате.

То есть 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 - если переданный объект SealedObject равен 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, 2021, 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/17/docs/api/java.base/javax/crypto/SealedObject.html

Spec-Zone.ru

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