Spec-Zone.ru › OpenJDK 17

Класс 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(padding) на новом экземпляре.

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

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

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

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

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

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

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

Since:
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)
Инициализирует этот шифр ключом, набором параметров алгоритма и источником случайных чисел.
protected abstract void engineInit(int opmode, Key key, SecureRandom random)
Инициализирует этот шифр ключом и источником случайных чисел.
protected abstract void engineInit(int opmode, Key key, AlgorithmParameterSpec params, SecureRandom random)
Инициализирует этот шифр ключом, набором параметров алгоритма и источником случайных чисел.
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)
Продолжает многоэтапную операцию шифрования или дешифрования (в зависимости от того, как был инициализирован этот шифр), обрабатывая другую часть данных.
protected abstract int engineUpdate(byte[] input, int inputOffset, int inputLen, byte[] output, int outputOffset)
Продолжает многоэтапную операцию шифрования или дешифрования (в зависимости от того, как был инициализирован этот шифр), обрабатывая другую часть данных.
protected int engineUpdate(ByteBuffer input, ByteBuffer output)
Продолжает многоэтапную операцию шифрования или дешифрования (в зависимости от того, как был инициализирован этот шифр), обрабатывая другую часть данных.
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, если этот шифр не использует параметров.

engineInit

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

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

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

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

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

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

Параметры:
opmode - режим работы этого шифра (это один из следующих: 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
Инициализирует этот шифр ключом, набором параметров алгоритма и источником случайности.

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

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

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

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

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

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

engineInit

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

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

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

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

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

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

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

engineUpdate

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

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

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

engineUpdate

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

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

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

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

engineUpdate

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

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

Если output.remaining() байт недостаточно для хранения результата, выбрасывается исключение 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
Шифрует или дешифрует данные в одноэтапной операции или завершает многоэтапную операцию. Данные шифруются или дешифруются в зависимости от способа инициализации этого шифра.

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

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

Примечание: если будет выброшено исключение, возможно, потребуется сбросить объект шифра перед повторным использованием.

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

engineDoFinal

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

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

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

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

Примечание: если будет выброшено исключение, возможно, потребуется сбросить объект шифра перед повторным использованием.

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

engineDoFinal

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

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

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

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

Примечание: если будет выброшено исключение, возможно, потребуется сбросить объект шифра перед повторным использованием.

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

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

engineWrap

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

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

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

engineUnwrap

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

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

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

engineGetKeySize

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

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

Parameters:
key - объект ключа.
Returns:
размер ключа заданного объекта ключа.
Throws:
InvalidKeyException - если key некорректен.

engineUpdateAAD

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

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

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

engineUpdateAAD

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

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

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

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

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

Spec-Zone.ru

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