Spec-Zone.ru › OpenJDK 21

Класс CipherSpi

java.lang.Object
javax.crypto.CipherSpi
public abstract class CipherSpi extends Object
Этот класс определяет интерфейс поставщика услуг (SPI) для класса Cipher. Все абстрактные методы в этом классе должны быть реализованы каждым поставщиком криптографических услуг, желающим предоставить реализацию определённого алгоритма шифрования.

Для создания экземпляра Cipher, который инкапсулирует экземпляр этого класса CipherSpi, приложение вызывает один из методов-фабрик getInstance класса-движка Cipher и указывает необходимую трансформацию. Приложение также может указать имя поставщика.

Трансформация — это строка, описывающая операцию (или набор операций), которые должны быть выполнены над заданным входом для получения некоторого результата. Трансформация всегда включает имя криптографического алгоритма (например, AES) и может быть дополнена режимом работы и схемой заполнения.

Трансформация имеет вид:

  • "алгоритм/режим/заполнение" или
  • "алгоритм"

(в последнем случае используются значения по умолчанию для режима и схемы заполнения, специфичные для поставщика). Например, следующая строка является допустимой трансформацией:

     Cipher c = Cipher.getInstance("AES/CBC/PKCS5Padding");
 

Поставщик может предоставить отдельный класс для каждой комбинации алгоритм/режим/заполнение или может решить предоставить более общие классы, представляющие под-трансформации, соответствующие алгоритму или алгоритм/режим или алгоритм//заполнение (обратите внимание на двойные слэши), в этом случае запрашиваемый режим и/или схема заполнения устанавливаются автоматически методами getInstance класса Cipher, которые вызывают методы engineSetMode и engineSetPadding подкласса поставщика класса CipherSpi.

Свойство Cipher в главном классе поставщика может иметь один из следующих форматов:

  •      // provider's subclass of "CipherSpi" implements "algName" with
         // pluggable mode and padding
         Cipher.algName
     
  •      // provider's subclass of "CipherSpi" implements "algName" in the
         // specified "mode", with pluggable padding
         Cipher.algName/mode
     
  •      // provider's subclass of "CipherSpi" implements "algName" with the
         // specified "padding", with pluggable mode
         Cipher.algName//padding
     
  •      // provider's subclass of "CipherSpi" implements "algName" with the
         // specified "mode" and "padding"
         Cipher.algName/mode/padding
     

Например, поставщик может предоставить подкласс CipherSpi, реализующий AES/ECB/PKCS5Padding, подкласс, реализующий AES/CBC/PKCS5Padding, подкласс, реализующий AES/CFB/PKCS5Padding и ещё один, реализующий AES/OFB/PKCS5Padding. Этот поставщик будет иметь следующие свойства Cipher в своём главном классе:

  •      Cipher.AES/ECB/PKCS5Padding
     
  •      Cipher.AES/CBC/PKCS5Padding
     
  •      Cipher.AES/CFB/PKCS5Padding
     
  •      Cipher.AES/OFB/PKCS5Padding
     

Другой поставщик может реализовать класс для каждого из указанных режимов (т.е., один класс для ECB, один для CBC, один для CFB и один для OFB), один класс для PKCS5Padding и общий класс AES, который является подклассом CipherSpi. Этот поставщик будет иметь следующие свойства Cipher в своём главном классе:

  •      Cipher.AES
     

Метод-фабрика getInstance класса-движка Cipher следует этим правилам для создания реализации поставщиком класса CipherSpi для трансформации вида "алгоритм":

  1. Проверить, зарегистрировал ли поставщик подкласс CipherSpi для указанного "алгоритма".

    Если ДА, создать этот класс, для которого режим и схема заполнения используют значения по умолчанию (предоставленные поставщиком).

    Если НЕТ, выбросить исключение NoSuchAlgorithmException.

Метод-фабрика getInstance класса-движка Cipher следует этим правилам для создания реализации поставщиком класса CipherSpi для трансформации вида "алгоритм/режим/заполнение":

  1. Проверить, зарегистрировал ли поставщик подкласс CipherSpi для указанной трансформации "алгоритм/режим/заполнение".

    Если ДА, создать его.

    Если НЕТ, перейти к следующему шагу.

  2. Проверить, зарегистрировал ли поставщик подкласс CipherSpi для под-трансформации "алгоритм/режим".

    Если ДА, создать его и вызвать метод engineSetPadding(<i>padding</i>) на новом экземпляре.

    Если НЕТ, перейти к следующему шагу.

  3. Проверить, зарегистрировал ли поставщик подкласс CipherSpi для под-трансформации "алгоритм//заполнение" (обратите внимание на двойные слэши).

    Если ДА, создать его и вызвать метод engineSetMode(<i>mode</i>) на новом экземпляре.

    Если НЕТ, перейти к следующему шагу.

  4. Проверить, зарегистрировал ли поставщик подкласс CipherSpi для под-трансформации "алгоритм".

    Если ДА, создать его и вызвать методы engineSetMode(<i>mode</i>) и engineSetPadding(<i>padding</i>) на новом экземпляре.

    Если НЕТ, выбросить исключение NoSuchAlgorithmException.

С момента:
1.4
См. также:
  • KeyGenerator
  • SecretKey

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

Конструктор Описание
CipherSpi()
Конструктор для вызова подклассами.

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

Модификатор и тип Метод Описание
protected abstract byte[] engineDoFinal(byte[] input, int inputOffset, int inputLen)
Шифрует или дешифрует данные в одноэтапной операции или завершает многоэтапную операцию.
protected abstract int engineDoFinal(byte[] input, int inputOffset, int inputLen, byte[] output, int outputOffset)
Шифрует или дешифрует данные в одноэтапной операции или завершает многоэтапную операцию.
protected int engineDoFinal(ByteBuffer input, ByteBuffer output)
Шифрует или дешифрует данные в одноэтапной операции или завершает многоэтапную операцию.
protected abstract int engineGetBlockSize()
Возвращает размер блока (в байтах).
protected abstract byte[] engineGetIV()
Возвращает вектор инициализации (IV) в новом буфере.
protected int engineGetKeySize(Key key)
Возвращает размер ключа данного объекта ключа в битах.
protected abstract int engineGetOutputSize(int inputLen)
Возвращает длину в байтах, которая требуется буферу вывода для хранения результата следующей операции update или doFinal, учитывая длину входных данных inputLen (в байтах).
protected abstract AlgorithmParameters engineGetParameters()
Возвращает параметры, используемые с этим шифром.
protected abstract void engineInit(int opmode, Key key, AlgorithmParameters params, SecureRandom random)
Инициализирует этот объект CipherSpi ключом, набором параметров алгоритма и источником случайных чисел.
protected abstract void engineInit(int opmode, Key key, SecureRandom random)
Инициализирует этот объект CipherSpi ключом и источником случайных чисел.
protected abstract void engineInit(int opmode, Key key, AlgorithmParameterSpec params, SecureRandom random)
Инициализирует этот объект CipherSpi ключом, набором параметров алгоритма и источником случайных чисел.
protected abstract void engineSetMode(String mode)
Устанавливает режим работы этого шифра.
protected abstract void engineSetPadding(String padding)
Устанавливает механизм заполнения этого шифра.
protected Key engineUnwrap(byte[] wrappedKey, String wrappedKeyAlgorithm, int wrappedKeyType)
Расшифровывает ранее зашифрованный ключ.
protected abstract byte[] engineUpdate(byte[] input, int inputOffset, int inputLen)
Продолжает многоэтапную операцию шифрования или дешифрования (в зависимости от того, как был инициализирован этот объект CipherSpi), обрабатывая ещё один фрагмент данных.
protected abstract int engineUpdate(byte[] input, int inputOffset, int inputLen, byte[] output, int outputOffset)
Продолжает многоэтапную операцию шифрования или дешифрования (в зависимости от того, как был инициализирован этот объект CipherSpi), обрабатывая ещё один фрагмент данных.
protected int engineUpdate(ByteBuffer input, ByteBuffer output)
Продолжает многоэтапную операцию шифрования или дешифрования (в зависимости от того, как был инициализирован этот объект CipherSpi), обрабатывая ещё один фрагмент данных.
protected void engineUpdateAAD(byte[] src, int offset, int len)
Продолжает многочастное обновление дополнительных данных аутентификации (AAD), используя подмножество предоставленного буфера.
protected void engineUpdateAAD(ByteBuffer src)
Продолжает многочастное обновление дополнительных данных аутентификации (AAD).
protected byte[] engineWrap(Key key)
Зашифровывает ключ.

Методы, объявленные в классе java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Подробное описание конструкторов

CipherSpi

public CipherSpi()
Конструктор для вызова подклассами.

Подробное описание методов

engineSetMode

protected abstract void engineSetMode(String mode) throws NoSuchAlgorithmException
Устанавливает режим шифрования.
Параметры:
mode - режим шифрования
Исключения:
NoSuchAlgorithmException - если запрошенный режим шифрования не существует

engineSetPadding

protected abstract void engineSetPadding(String padding) throws NoSuchPaddingException
Устанавливает механизм дополнения.
Параметры:
padding - механизм дополнения
Исключения:
NoSuchPaddingException - если запрошенный механизм дополнения не существует

engineGetBlockSize

protected abstract int engineGetBlockSize()
Возвращает размер блока (в байтах).
Возвращает:
размер блока (в байтах), или 0, если алгоритм не является блочным шифром

engineGetOutputSize

protected abstract int engineGetOutputSize(int inputLen)
Возвращает длину в байтах, необходимую для буфера вывода, чтобы содержать результат следующей операции update или doFinal, учитывая длину входного данных inputLen (в байтах).

Этот вызов учитывает любые необработанные (буферизованные) данные из предыдущего вызова update, дополнение и метки AEAD.

Фактическая длина вывода следующего вызова update или doFinal может быть меньше, чем длина, возвращаемая этим методом.

Параметры:
inputLen - длина входных данных (в байтах)
Возвращает:
необходимый размер буфера вывода (в байтах)

engineGetIV

protected abstract byte[] engineGetIV()
Возвращает вектор инициализации (IV) в новом буфере.

Это полезно в контексте шифрования или дешифрования на основе пароля, где IV выводится из предоставленного пользователем пароля.

Возвращает:
вектор инициализации в новом буфере, или null если алгоритм не использует IV, или если IV еще не установлен

engineGetParameters

protected abstract AlgorithmParameters engineGetParameters()
Возвращает параметры, используемые с этим шифром.

Возвращаемые параметры могут быть теми же, которые использовались для инициализации этого шифра, или могут содержать дополнительные значения параметров по умолчанию или случайные значения, используемые реализацией базового шифра. Если необходимые параметры не были предоставлены и могут быть сгенерированы шифром, возвращаются сгенерированные параметры. В противном случае возвращается null.

Возвращает:
используемые с этим шифром параметры, или null

engineInit

protected abstract void engineInit(int opmode, Key key, SecureRandom random) throws InvalidKeyException
Инициализирует этот объект CipherSpi ключом и источником случайных чисел.

Объект CipherSpi инициализируется для одной из следующих четырех операций: шифрования, дешифрования, обертывания ключа или распаковки ключа, в зависимости от значения opmode.

Если этому шифру требуются какие-либо параметры алгоритма, которые нельзя получить из заданного key, предполагается, что реализация базового шифра сгенерирует необходимые параметры самостоятельно (используя поставщик по умолчанию или случайные значения), если он инициализируется для шифрования или обертывания ключа, и вызовет InvalidKeyException если он инициализируется для дешифрования или распаковки ключа. Сгенерированные параметры можно получить, используя engineGetParameters или engineGetIV (если параметр является IV).

Если этому шифру требуются параметры алгоритма, которые нельзя получить из входных параметров, и нет разумных значений по умолчанию, специфичных для поставщика, инициализация обязательно завершится ошибкой.

Если этому шифру (включая его схему обратной связи или дополнения) требуются любые случайные байты (например, для генерации параметров), он получит их из random.

Обратите внимание, что при инициализации объекта CipherSpi, он теряет все ранее полученные состояния. Другими словами, инициализация объекта CipherSpi эквивалентна созданию нового экземпляра этого объекта CipherSpi и его инициализации.

Параметры:
opmode - режим работы этого объекта CipherSpi (это одна из следующих: ENCRYPT_MODE, DECRYPT_MODE, WRAP_MODE или UNWRAP_MODE)
key - ключ шифрования
random - источник случайных чисел
Исключения:
InvalidKeyException - если заданный ключ не подходит для инициализации этого шифра или требует параметров алгоритма, которые нельзя определить по заданному ключу
UnsupportedOperationException - если opmode равен WRAP_MODE или UNWRAP_MODE не реализован шифром

engineInit

protected abstract void engineInit(int opmode, Key key, AlgorithmParameterSpec params, SecureRandom random) throws InvalidKeyException, InvalidAlgorithmParameterException
Инициализирует этот объект CipherSpi ключом, набором параметров алгоритма и источником случайных чисел.

Объект CipherSpi инициализируется для одной из следующих четырех операций: шифрования, дешифрования, обертывания ключа или распаковки ключа, в зависимости от значения opmode.

Если этому шифру требуются какие-либо параметры алгоритма и params равен null, предполагается, что реализация базового шифра сгенерирует необходимые параметры самостоятельно (используя значения поставщика по умолчанию или случайные значения), если он инициализируется для шифрования или обертывания ключа, и вызовет InvalidAlgorithmParameterException если он инициализируется для дешифрования или распаковки ключа. Сгенерированные параметры можно получить, используя engineGetParameters или engineGetIV (если параметр является IV).

Если этому шифру требуются параметры алгоритма, которые нельзя получить из входных параметров, и нет разумных значений по умолчанию, специфичных для поставщика, инициализация обязательно завершится ошибкой.

Если этому шифру (включая его схему обратной связи или дополнения) требуются любые случайные байты (например, для генерации параметров), он получит их из random.

Обратите внимание, что при инициализации объекта CipherSpi, он теряет все ранее полученные состояния. Другими словами, инициализация объекта CipherSpi эквивалентна созданию нового экземпляра этого объекта CipherSpi и его инициализации.

engineInit

protected abstract void engineInit(int opmode, Key key, AlgorithmParameters params, SecureRandom random) throws InvalidKeyException, InvalidAlgorithmParameterException
Инициализирует этот объект CipherSpi ключом, набором параметров алгоритма и источником случайных чисел.

Объект CipherSpi инициализируется для одной из следующих четырех операций: шифрования, дешифрования, обертывания ключа или распаковки ключа, в зависимости от значения opmode.

Если этому шифру требуются какие-либо параметры алгоритма и params равен null, предполагается, что реализация базового шифра сгенерирует необходимые параметры самостоятельно (используя значения поставщика по умолчанию или случайные значения), если он инициализируется для шифрования или обертывания ключа, и вызовет InvalidAlgorithmParameterException если он инициализируется для дешифрования или распаковки ключа. Сгенерированные параметры можно получить, используя engineGetParameters или engineGetIV (если параметр является IV).

Если этому шифру требуются параметры алгоритма, которые нельзя получить из входных параметров, и нет разумных значений по умолчанию, специфичных для поставщика, инициализация обязательно завершится ошибкой.

Если этому шифру (включая его схему обратной связи или дополнения) требуются любые случайные байты (например, для генерации параметров), он получит их из random.

Обратите внимание, что при инициализации объекта CipherSpi, он теряет все ранее полученные состояния. Другими словами, инициализация объекта CipherSpi эквивалентна созданию нового экземпляра этого объекта CipherSpi и его инициализации.

engineUpdate

protected abstract byte[] engineUpdate(byte[] input, int inputOffset, int inputLen)
Продолжает операцию шифрования или дешифрования в несколько этапов (в зависимости от того, как был инициализирован этот CipherSpi объект), обрабатывая ещё один фрагмент данных.

Обрабатываются первые inputLen байты в буфере input, начиная с позиции inputOffset включительно, а результат записывается в новый буфер.

Параметры:
input - буфер входных данных
inputOffset - смещение в input, где начинается входной фрагмент
inputLen - длина входного фрагмента
Возвращаемое значение:
новый буфер с результатом или null если шифр является блочным и входные данные слишком коротки для создания нового блока

engineUpdate

protected abstract int engineUpdate(byte[] input, int inputOffset, int inputLen, byte[] output, int outputOffset) throws ShortBufferException
Продолжает операцию шифрования или дешифрования в несколько этапов (в зависимости от того, как был инициализирован этот CipherSpi объект), обрабатывая ещё один фрагмент данных.

Обрабатываются первые inputLen байты в буфере input, начиная с позиции inputOffset включительно, а результат записывается в буфер output, начиная с позиции outputOffset включительно.

Если буфер output недостаточно велик для хранения результата, выбрасывается исключение ShortBufferException.

Параметры:
input - буфер входных данных
inputOffset - смещение в input , где начинается входной фрагмент
inputLen - длина входного фрагмента
output - буфер для результата
outputOffset - смещение в output , где результат будет сохранён
Возвращаемое значение:
количество байтов, сохранённых в output
Исключения:
ShortBufferException - если заданный буфер вывода слишком мал для хранения результата

engineUpdate

protected int engineUpdate(ByteBuffer input, ByteBuffer output) throws ShortBufferException
Продолжает операцию шифрования или дешифрования в несколько этапов (в зависимости от того, как был инициализирован этот CipherSpi объект), обрабатывая ещё один фрагмент данных.

Обрабатываются все input.remaining() байты, начиная с позиции input.position(). Результат записывается в буфер вывода. По завершении метода позиция буфера ввода будет равна его пределу; его предел не изменится. Позиция буфера вывода будет увеличена на n, где n — значение, возвращённое этим методом; предел буфера вывода не изменится.

Если в буфере вывода недостаточно места для результата, выбрасывается исключение ShortBufferException.

Подклассы должны рассмотреть возможность переопределения этого метода, если они могут обрабатывать ByteBuffers более эффективно, чем массивы байтов.

Параметры:
input - входной ByteBuffer
output - выходной ByteBuffer
Возвращаемое значение:
количество байтов, сохранённых в output
Исключения:
ShortBufferException - если в буфере вывода недостаточно места
NullPointerException - если какой-либо из параметров является null
С:
1.5

engineDoFinal

protected abstract byte[] engineDoFinal(byte[] input, int inputOffset, int inputLen) throws IllegalBlockSizeException, BadPaddingException
Зашифровывает или расшифровывает данные в одноэтапной операции или завершает многоэтапную операцию. Данные шифруются или расшифровываются в зависимости от того, как был инициализирован этот CipherSpi объект.

Обрабатываются первые inputLen байты в буфере input, начиная с позиции inputOffset включительно, а также любые входные байты, которые могли быть буферизованы во время предыдущей операции update, с применением (если запрошено) заполнения. Если используется режим AEAD (такой как GCM или CCM), тег аутентификации добавляется при шифровании или проверяется при дешифровании. Результат записывается в новый буфер.

По завершении этот метод сбрасывает этот CipherSpi объект в состояние, в котором он находился при предыдущей инициализации с помощью вызова engineInit. То есть, объект сброшен и готов к шифрованию или дешифрованию (в зависимости от режима операции, указанного в вызове engineInit) дополнительных данных.

Примечание: если возникает какое-либо исключение, этот CipherSpi объект может потребовать сброса перед повторным использованием.

Параметры:
input - буфер входных данных
inputOffset - смещение в input , где начинается входной фрагмент
inputLen - длина входного фрагмента
Возвращаемое значение:
новый буфер с результатом
Исключения:
IllegalBlockSizeException - если этот шифр является блочным, не было запрошено заполнение (только в режиме шифрования), а общая длина входных данных, обработанных этим шифром, не кратна размеру блока; или если этот алгоритм шифрования не может обработать предоставленные входные данные
BadPaddingException - если этот CipherSpi объект работает в режиме дешифрования, и (распаковка) было запрошено, но расшифрованные данные не ограничены соответствующими байтами заполнения
AEADBadTagException - если этот CipherSpi объект дешифрует в режиме AEAD (например, GCM или CCM), и полученный тег аутентификации не совпадает с вычисленным значением

engineDoFinal

protected abstract int engineDoFinal(byte[] input, int inputOffset, int inputLen, byte[] output, int outputOffset) throws ShortBufferException, IllegalBlockSizeException, BadPaddingException
Зашифровывает или расшифровывает данные в одноэтапной операции или завершает многоэтапную операцию. Данные шифруются или расшифровываются в зависимости от того, как был инициализирован этот CipherSpi объект.

Обрабатываются первые inputLen байты в буфере input, начиная с позиции inputOffset включительно, а также любые входные байты, которые могли быть буферизованы во время предыдущей операции update, с применением (если запрошено) заполнения. Если используется режим AEAD, например, GCM или CCM, тег аутентификации добавляется при шифровании или проверяется при дешифровании. Результат записывается в буфер output, начиная с позиции outputOffset включительно.

Если буфер output недостаточно велик для хранения результата, выбрасывается исключение ShortBufferException.

По завершении этот метод сбрасывает этот CipherSpi объект в состояние, в котором он находился при предыдущей инициализации с помощью вызова engineInit. То есть, объект сброшен и готов к шифрованию или дешифрованию (в зависимости от режима операции, указанного в вызове engineInit) дополнительных данных.

Примечание: если возникает какое-либо исключение, этот CipherSpi объект может потребовать сброса перед повторным использованием.

Параметры:
input - буфер входных данных
inputOffset - смещение в input , где начинается входной фрагмент
inputLen - длина входного фрагмента
output - буфер для результата
outputOffset - смещение в output , где результат будет сохранён
Возвращаемое значение:
количество байтов, сохранённых в output
Исключения:
IllegalBlockSizeException - если этот шифр является блочным, не было запрошено заполнение (только в режиме шифрования), а общая длина входных данных, обработанных этим шифром, не кратна размеру блока; или если этот алгоритм шифрования не может обработать предоставленные входные данные
ShortBufferException - если заданный буфер вывода слишком мал для хранения результата
BadPaddingException - если этот CipherSpi объект работает в режиме дешифрования, и (распаковка) было запрошено, но расшифрованные данные не ограничены соответствующими байтами заполнения
AEADBadTagException - если этот CipherSpi объект дешифрует в режиме AEAD (например, GCM или CCM), и полученный тег аутентификации не совпадает с вычисленным значением

engineDoFinal

protected int engineDoFinal(ByteBuffer input, ByteBuffer output) throws ShortBufferException, IllegalBlockSizeException, BadPaddingException
Зашифровывает или расшифровывает данные в одноэтапной операции или завершает многоэтапную операцию. Данные шифруются или расшифровываются в зависимости от того, как был инициализирован этот CipherSpi объект.

Обрабатываются все input.remaining() байты, начиная с позиции input.position(). Если используется режим AEAD (например, GCM или CCM), тег аутентификации добавляется при шифровании или проверяется при дешифровании. Результат записывается в буфер вывода. По завершении метода позиция буфера ввода будет равна его пределу; его предел не изменится. Позиция буфера вывода будет увеличена на n, где n — значение, возвращённое этим методом; предел буфера вывода не изменится.

Если в буфере вывода недостаточно места для результата, выбрасывается исключение ShortBufferException.

По завершении этот метод сбрасывает этот CipherSpi объект в состояние, в котором он находился при предыдущей инициализации с помощью вызова engineInit. То есть, объект сброшен и готов к шифрованию или дешифрованию (в зависимости от режима операции, указанного в вызове engineInit) дополнительных данных.

Примечание: если возникает какое-либо исключение, этот CipherSpi объект может потребовать сброса перед повторным использованием.

Подклассы должны рассмотреть возможность переопределения этого метода, если они могут обрабатывать ByteBuffers более эффективно, чем массивы байтов.

Параметры:
input - входной ByteBuffer
output - выходной ByteBuffer
Возвращаемое значение:
количество байтов, сохранённых в output
Исключения:
IllegalBlockSizeException - если этот шифр является блочным, не было запрошено заполнение (только в режиме шифрования), а общая длина входных данных, обработанных этим шифром, не кратна размеру блока; или если этот алгоритм шифрования не может обработать предоставленные входные данные
ShortBufferException - если в буфере вывода недостаточно места
BadPaddingException - если этот CipherSpi объект работает в режиме дешифрования, и (распаковка) было запрошено, но расшифрованные данные не ограничены соответствующими байтами заполнения
AEADBadTagException - если этот CipherSpi объект дешифрует в режиме AEAD (например, GCM или CCM), и полученный тег аутентификации не совпадает с вычисленным значением
NullPointerException - если какой-либо из параметров является null
С:
1.5

engineWrap

protected byte[] engineWrap(Key key) throws IllegalBlockSizeException, InvalidKeyException
Заворачивает ключ.

Этот конкретный метод был добавлен в этот ранее определённый абстрактный класс. (Для обратной совместимости он не может быть абстрактным.) Он может быть переопределён поставщиком для заворачивания ключа. Такое переопределение должно вызывать исключение IllegalBlockSizeException или InvalidKeyException (в указанных обстоятельствах), если данный ключ нельзя закрыть. Если этот метод не переопределён, он всегда вызывает исключение UnsupportedOperationException.

Параметры:
key - ключ, который нужно закрыть
Возвращает:
закрытый ключ
Исключение:
IllegalBlockSizeException - если этот шифр является блочным шифром, нет запрошенного заполнения, а длина кодирования ключа, который нужно закрыть, не кратна размеру блока
InvalidKeyException - если невозможно или небезопасно закрыть ключ с помощью этого шифра (например, защищённый аппаратный ключ передаётся программному шифру)
UnsupportedOperationException - если этот метод не поддерживается

engineUnwrap

protected Key engineUnwrap(byte[] wrappedKey, String wrappedKeyAlgorithm, int wrappedKeyType) throws InvalidKeyException, NoSuchAlgorithmException
Разворачивает ранее закрытый ключ.

Этот конкретный метод был добавлен в этот ранее определённый абстрактный класс. (Для обратной совместимости он не может быть абстрактным.) Он может быть переопределён поставщиком для разворачивания ранее закрытого ключа. Такое переопределение должно вызывать исключение InvalidKeyException если данный закрытый ключ нельзя развернуть. Если этот метод не переопределён, он всегда вызывает исключение UnsupportedOperationException.

Параметры:
wrappedKey - ключ для разворачивания
wrappedKeyAlgorithm - алгоритм, связанный с закрытым ключом
wrappedKeyType - тип закрытого ключа. Это одно из SECRET_KEY, PRIVATE_KEY, или PUBLIC_KEY.
Возвращает:
разворот ключа
Исключение:
NoSuchAlgorithmException - если ни один из установленных поставщиков не может создать ключи типа wrappedKeyType для wrappedKeyAlgorithm
InvalidKeyException - если wrappedKey не представляет собой закрытый ключ типа wrappedKeyType для wrappedKeyAlgorithm
UnsupportedOperationException - если этот метод не поддерживается

engineGetKeySize

protected int engineGetKeySize(Key key) throws InvalidKeyException
Возвращает размер ключа данного объекта ключа в битах.

Этот конкретный метод был добавлен в этот ранее определённый абстрактный класс. Он вызывает исключение UnsupportedOperationException если он не переопределён поставщиком.

Параметры:
key - объект ключа
Возвращает:
размер ключа данного объекта ключа
Исключение:
InvalidKeyException - если key недействителен

engineUpdateAAD

protected void engineUpdateAAD(byte[] src, int offset, int len)
Продолжает многочастотное обновление дополнительных данных аутентификации (AAD), используя подмножество предоставленного буфера.

Вызовы этого метода обеспечивают AAD шифру при работе в режимах, таких как AEAD (GCM или CCM). Если этот шифр работает в режиме GCM или CCM, все AAD должны быть предоставлены перед началом операций над зашифрованным текстом (через методы update и doFinal).

Параметры:
src - буфер, содержащий AAD
offset - смещение в src, где начинается ввод AAD
len - количество байтов AAD
Исключение:
IllegalStateException - если этот объект CipherSpi находится в неправильном состоянии (например, не был инициализирован), не принимает AAD или если работает в режиме GCM или CCM, и один из методов update уже был вызван для активной операции шифрования/расшифровки
UnsupportedOperationException - если этот метод не был переопределён реализацией
С:
1.7

engineUpdateAAD

protected void engineUpdateAAD(ByteBuffer src)
Продолжает многочастотное обновление дополнительных данных аутентификации (AAD).

Вызовы этого метода обеспечивают AAD шифру при работе в режимах, таких как AEAD (GCM или CCM). Если этот шифр работает в режиме GCM или CCM, все AAD должны быть предоставлены перед началом операций над зашифрованным текстом (через методы update и doFinal).

Все src.remaining() байты, начиная со src.position(), обрабатываются. По возвращении позиция входного буфера будет равна его пределу; его предел не изменится.

Параметры:
src - буфер, содержащий AAD
Исключение:
IllegalStateException - если этот объект CipherSpi находится в неправильном состоянии (например, не был инициализирован), не принимает AAD или если работает в режиме GCM или CCM, и один из методов update уже был вызван для активной операции шифрования/расшифровки
UnsupportedOperationException - если этот метод не был переопределён реализацией
С:
1.7

© 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/CipherSpi.html

Spec-Zone.ru

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