Spec-Zone.ru › OpenJDK 8

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

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

С тех пор:
1.4
См. также:
Cipher, Сериализованная форма

Сводка полей

Модификатор и тип Поле и описание
protected byte[] encodedParams

Криптографические параметры, используемые Cipher для запечатывания, закодированные в формате по умолчанию.

Сводка конструкторов

Модификатор Конструктор и описание
protected SealedObject(SealedObject so)

Создаёт объект SealedObject из переданного SealedObject.

SealedObject(Serializable object, Cipher c)

Создаёт SealedObject из любого сериализуемого объекта.

Сводка методов

Модификатор и тип Метод и описание
String getAlgorithm()

Возвращает алгоритм, который использовался для запечатывания этого объекта.

Object getObject(Cipher c)

Возвращает исходный (инкапсулированный) объект.

Object getObject(Key key)

Возвращает исходный (инкапсулированный) объект.

Object getObject(Key key, String provider)

Возвращает исходный (инкапсулированный) объект.

Методы, унаследованные от класса 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 - если переданный запечатанный объект 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.

Spec-Zone.ru

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