Spec-Zone.ru › OpenJDK 17

Класс Cipher

java.lang.Object
javax.crypto.Cipher
Прямые известные подклассы:
NullCipher
public class Cipher extends Object
Этот класс предоставляет функциональность криптографического шифра для шифрования и дешифрования. Он является основой фреймворка Java Cryptographic Extension (JCE).

Для создания объекта Cipher приложение вызывает метод Cipher's getInstance и передает ему имя требуемой трансформации. Дополнительно можно указать имя провайдера.

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

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

  • "algorithm/mode/padding" или
  • "algorithm"

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

     Cipher c = Cipher.getInstance("AES/CBC/PKCS5Padding");
 
Использование режимов, таких как CFB и OFB, блочные шифры могут шифровать данные в блоках, меньших фактического размера блока шифра. При запросе такого режима вы можете дополнительно указать количество бит, которые будут обрабатываться за один раз, добавив это число к имени режима, как показано в трансформациях "AES/CFB8/NoPadding" и "AES/OFB32/PKCS5Padding". Если такое число не указано, используется значение по умолчанию, определенное провайдером. (См. Документацию по провайдерам JDK для значений по умолчанию провайдеров JDK.) Таким образом, блочные шифры могут быть преобразованы в шифры потокового типа, ориентированные на байты, с использованием 8-битного режима, такого как CFB8 или OFB8.

Режимы, такие как аутентифицированное шифрование с ассоциированными данными (AEAD), обеспечивают гарантии подлинности как для конфиденциальных данных, так и для дополнительных ассоциированных данных (AAD), которые не шифруются. (Дополнительную информацию об алгоритмах AEAD и AAD, таких как GCM/CCM, см. в RFC 5116). Как конфиденциальные, так и AAD-данные могут использоваться при вычислении тега аутентификации (аналогично Mac). Этот тег добавляется к шифрованным данным при шифровании и проверяется при дешифровании.

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

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

     GCMParameterSpec s = ...;
     cipher.init(..., s);

     // If the GCM parameters were generated by the provider, it can
     // be retrieved by:
     // cipher.getParameters().getParameterSpec(GCMParameterSpec.class);

     cipher.updateAAD(...);  // AAD
     cipher.update(...);     // Multi-part update
     cipher.doFinal(...);    // conclusion of operation

     // Use a different IV value for every encryption
     byte[] newIv = ...;
     s = new GCMParameterSpec(s.getTLen(), newIv);
     cipher.init(..., s);
     ...

 
Алгоритмы ChaCha20 и ChaCha20-Poly1305 имеют аналогичное требование к уникальным nonce с заданным ключом. После каждой операции шифрования или дешифрования вызывающие стороны должны повторно инициализировать свои шифры ChaCha20 или ChaCha20-Poly1305 с параметрами, указывающими другое значение nonce. Дополнительную информацию об алгоритмах ChaCha20 и ChaCha20-Poly1305 см. в RFC 7539.

Каждая реализация платформы Java обязана поддерживать следующие стандартные Cipher трансформации с размерами ключей в скобках:

  • AES/CBC/NoPadding (128)
  • AES/CBC/PKCS5Padding (128)
  • AES/ECB/NoPadding (128)
  • AES/ECB/PKCS5Padding (128)
  • AES/GCM/NoPadding (128)
  • DESede/CBC/NoPadding (168)
  • DESede/CBC/PKCS5Padding (168)
  • DESede/ECB/NoPadding (168)
  • DESede/ECB/PKCS5Padding (168)
  • RSA/ECB/PKCS1Padding (1024, 2048)
  • RSA/ECB/OAEPWithSHA-1AndMGF1Padding (1024, 2048)
  • RSA/ECB/OAEPWithSHA-256AndMGF1Padding (1024, 2048)
Эти трансформации описаны в разделе "Cipher" спецификации Java Security Standard Algorithm Names Specification, см. ссылку. Обратитесь к документации выпуска вашей реализации, чтобы узнать, какие другие трансформации поддерживаются.
С:
1.4
См. также:
  • KeyGenerator
  • SecretKey

Краткое описание полей

Модификатор и тип Поле Описание
static final int DECRYPT_MODE
Константа, используемая для инициализации шифра в режиме дешифрования.
static final int ENCRYPT_MODE
Константа, используемая для инициализации шифра в режиме шифрования.
static final int PRIVATE_KEY
Константа, используемая для обозначения того, что разворачиваемый ключ — "приватный ключ".
static final int PUBLIC_KEY
Константа, используемая для обозначения того, что разворачиваемый ключ — "публичный ключ".
static final int SECRET_KEY
Константа, используемая для обозначения того, что разворачиваемый ключ — "секретный ключ".
static final int UNWRAP_MODE
Константа, используемая для инициализации шифра в режиме разворачивания ключа.
static final int WRAP_MODE
Константа, используемая для инициализации шифра в режиме упаковки ключа.

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

Cipher(CipherSpi cipherSpi, Provider provider, String transformation)
Модификатор Конструктор Описание
protected
Создаёт объект Cipher.

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

Модификатор и тип Метод Описание
final byte[] doFinal()
Завершает многочастотную операцию шифрования или дешифрования, в зависимости от того, как был инициализирован шифр.
final byte[] doFinal(byte[] input)
Шифрует или дешифрует данные в одночастотной операции или завершает многочастотную операцию.
final int doFinal(byte[] output, int outputOffset)
Завершает многочастотную операцию шифрования или дешифрования, в зависимости от того, как был инициализирован шифр.
final byte[] doFinal(byte[] input, int inputOffset, int inputLen)
Шифрует или дешифрует данные в одночастотной операции или завершает многочастотную операцию.
final int doFinal(byte[] input, int inputOffset, int inputLen, byte[] output)
Шифрует или дешифрует данные в одночастотной операции или завершает многочастотную операцию.
final int doFinal(byte[] input, int inputOffset, int inputLen, byte[] output, int outputOffset)
Шифрует или дешифрует данные в одночастотной операции или завершает многочастотную операцию.
final int doFinal(ByteBuffer input, ByteBuffer output)
Шифрует или дешифрует данные в одночастотной операции или завершает многочастотную операцию.
final String getAlgorithm()
Возвращает имя алгоритма этого объекта Cipher.
final int getBlockSize()
Возвращает размер блока (в байтах).
final ExemptionMechanism getExemptionMechanism()
Возвращает объект механизма исключений, используемый с этим шифром.
static final Cipher getInstance(String transformation)
Возвращает объект Cipher, реализующий указанное преобразование.
static final Cipher getInstance(String transformation, String provider)
Возвращает объект Cipher, реализующий указанное преобразование.
static final Cipher getInstance(String transformation, Provider provider)
Возвращает объект Cipher, реализующий указанное преобразование.
final byte[] getIV()
Возвращает вектор инициализации (IV) в новом буфере.
static final int getMaxAllowedKeyLength(String transformation)
Возвращает максимальную длину ключа для указанного преобразования в соответствии с установленным политикой JCE файла юрисдикции.
static final AlgorithmParameterSpec getMaxAllowedParameterSpec(String transformation)
Возвращает объект AlgorithmParameterSpec, содержащий максимальное значение параметра шифра в соответствии с файлом политики юрисдикции.
final int getOutputSize(int inputLen)
Возвращает длину в байтах, которую должен иметь буфер вывода для хранения результата следующей операции update или doFinal, учитывая длину входных данных inputLen (в байтах).
final AlgorithmParameters getParameters()
Возвращает параметры, используемые с этим шифром.
final Provider getProvider()
Возвращает поставщика этого объекта Cipher.
final void init(int opmode, Certificate certificate)
Инициализирует этот шифр с использованием публичного ключа из заданного сертификата.
final void init(int opmode, Certificate certificate, SecureRandom random)
Инициализирует этот шифр с использованием публичного ключа из заданного сертификата и источника случайных чисел.
final void init(int opmode, Key key)
Инициализирует этот шифр с использованием ключа.
final void init(int opmode, Key key, AlgorithmParameters params)
Инициализирует этот шифр с использованием ключа и набора параметров алгоритма.
final void init(int opmode, Key key, AlgorithmParameters params, SecureRandom random)
Инициализирует этот шифр с использованием ключа, набора параметров алгоритма и источника случайных чисел.
final void init(int opmode, Key key, SecureRandom random)
Инициализирует этот шифр с использованием ключа и источника случайных чисел.
final void init(int opmode, Key key, AlgorithmParameterSpec params)
Инициализирует этот шифр с использованием ключа и набора параметров алгоритма.
final void init(int opmode, Key key, AlgorithmParameterSpec params, SecureRandom random)
Инициализирует этот шифр с использованием ключа, набора параметров алгоритма и источника случайных чисел.
String toString()
Возвращает строковое представление этого Cipher.
final Key unwrap(byte[] wrappedKey, String wrappedKeyAlgorithm, int wrappedKeyType)
Разворачивает ранее упакованный ключ.
final byte[] update(byte[] input)
Продолжает многочастотную операцию шифрования или дешифрования (в зависимости от того, как был инициализирован шифр), обрабатывая другой фрагмент данных.
final byte[] update(byte[] input, int inputOffset, int inputLen)
Продолжает многочастотную операцию шифрования или дешифрования (в зависимости от того, как был инициализирован шифр), обрабатывая другой фрагмент данных.
final int update(byte[] input, int inputOffset, int inputLen, byte[] output)
Продолжает многочастотную операцию шифрования или дешифрования (в зависимости от того, как был инициализирован шифр), обрабатывая другой фрагмент данных.
final int update(byte[] input, int inputOffset, int inputLen, byte[] output, int outputOffset)
Продолжает многочастотную операцию шифрования или дешифрования (в зависимости от того, как был инициализирован шифр), обрабатывая другой фрагмент данных.
final int update(ByteBuffer input, ByteBuffer output)
Продолжает многочастотную операцию шифрования или дешифрования (в зависимости от того, как был инициализирован шифр), обрабатывая другой фрагмент данных.
final void updateAAD(byte[] src)
Продолжает многочастотную операцию обновления дополнительных данных аутентификации (AAD).
final void updateAAD(byte[] src, int offset, int len)
Продолжает многочастотную операцию обновления дополнительных данных аутентификации (AAD), используя подмножество предоставленного буфера.
final void updateAAD(ByteBuffer src)
Продолжает многочастотную операцию обновления дополнительных данных аутентификации (AAD).
final byte[] wrap(Key key)
Упаковывает ключ.

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

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

Подробное описание полей

ENCRYPT_MODE

public static final int ENCRYPT_MODE
Постоянная, используемая для инициализации шифра в режиме шифрования.
См. также:
  • Значения постоянных полей

DECRYPT_MODE

public static final int DECRYPT_MODE
Постоянная, используемая для инициализации шифра в режиме дешифрования.
См. также:
  • Значения постоянных полей

WRAP_MODE

public static final int WRAP_MODE
Постоянная, используемая для инициализации шифра в режиме обёртки ключа.
См. также:
  • Значения постоянных полей

UNWRAP_MODE

public static final int UNWRAP_MODE
Постоянная, используемая для инициализации шифра в режиме распаковки ключа.
См. также:
  • Значения постоянных полей

PUBLIC_KEY

public static final int PUBLIC_KEY
Постоянная, используемая для обозначения ключа, который нужно распаковать, как "открытый ключ".
См. также:
  • Значения постоянных полей

PRIVATE_KEY

public static final int PRIVATE_KEY
Постоянная, используемая для обозначения ключа, который нужно распаковать, как "закрытый ключ".
См. также:
  • Значения постоянных полей

SECRET_KEY

public static final int SECRET_KEY
Постоянная, используемая для обозначения ключа, который нужно распаковать, как "секретный ключ".
См. также:
  • Значения постоянных полей

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

Cipher

protected Cipher(CipherSpi cipherSpi, Provider provider, String transformation)
Создаёт объект Cipher.
Параметры:
cipherSpi - делегат
provider - поставщик
transformation - преобразование
Исключения:
NullPointerException - если provider является null
IllegalArgumentException - если предоставленные аргументы считаются недопустимыми для построения объекта Cipher

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

getInstance

public static final Cipher getInstance(String transformation) throws NoSuchAlgorithmException, NoSuchPaddingException
Возвращает объект Cipher, реализующий указанное преобразование.

Этот метод перебирает список зарегистрированных поставщиков безопасности, начиная с наиболее предпочтительного. Возвращается новый объект Cipher, инкапсулирующий реализацию CipherSpi из первого поставщика, который поддерживает указанный алгоритм.

Обратите внимание, что список зарегистрированных поставщиков можно получить с помощью метода Security.getProviders().

Примечание API:
Рекомендуется использовать преобразование, которое полностью определяет алгоритм, режим и заполнение. Если этого не сделать, поставщик использует значение по умолчанию для режима и заполнения, которое может не соответствовать требованиям безопасности вашего приложения.
Примечание реализации:
Реализация JDK Reference также использует свойство jdk.security.provider.preferred Security для определения предпочтительного порядка поставщиков для указанного алгоритма. Это может отличаться от порядка поставщиков, возвращаемого методом Security.getProviders(). См. также раздел Преобразования шифров документа Поставщики JDK для получения информации о значениях по умолчанию преобразований, используемых поставщиками JDK.
Параметры:
transformation - имя преобразования, например, AES/CBC/PKCS5Padding. См. раздел Шифр в Спецификации имен стандартных алгоритмов безопасности Java для получения информации о стандартных именах преобразований.
Возвращает:
шифр, реализующий затребованное преобразование
Исключения:
NoSuchAlgorithmException - если transformation является null, пустым, в недопустимом формате или если ни один поставщик не поддерживает реализацию CipherSpi для указанного алгоритма
NoSuchPaddingException - если transformation содержит схему заполнения, которая недоступна
См. также:
  • Provider

getInstance

public static final Cipher getInstance(String transformation, String provider) throws NoSuchAlgorithmException, NoSuchProviderException, NoSuchPaddingException
Возвращает объект Cipher, реализующий указанное преобразование.

Возвращается новый объект Cipher, инкапсулирующий реализацию CipherSpi из указанного поставщика. Указанный поставщик должен быть зарегистрирован в списке поставщиков безопасности.

Обратите внимание, что список зарегистрированных поставщиков можно получить с помощью метода Security.getProviders().

Примечание API:
Рекомендуется использовать преобразование, которое полностью определяет алгоритм, режим и заполнение. Если этого не сделать, поставщик использует значение по умолчанию для режима и заполнения, которое может не соответствовать требованиям безопасности вашего приложения.
Примечание реализации:
См. раздел Преобразования шифров документа Поставщики JDK для получения информации о значениях по умолчанию преобразований, используемых поставщиками JDK.
Параметры:
transformation - имя преобразования, например, AES/CBC/PKCS5Padding. См. раздел Шифр в Спецификации имен стандартных алгоритмов безопасности Java для получения информации о стандартных именах преобразований.
provider - имя поставщика.
Возвращает:
шифр, реализующий затребованное преобразование
Исключения:
IllegalArgumentException - если provider является null или пустым
NoSuchAlgorithmException - если transformation является null, пустым, в недопустимом формате или если реализация CipherSpi для указанного алгоритма недоступна от указанного поставщика
NoSuchPaddingException - если transformation содержит схему заполнения, которая недоступна
NoSuchProviderException - если указанный поставщик не зарегистрирован в списке поставщиков безопасности
См. также:
  • Provider

getInstance

public static final Cipher getInstance(String transformation, Provider provider) throws NoSuchAlgorithmException, NoSuchPaddingException
Возвращает объект Cipher, реализующий указанное преобразование.

Возвращается новый объект Cipher, инкапсулирующий реализацию CipherSpi из указанного объекта поставщика. Обратите внимание, что указанный объект поставщика не обязательно должен быть зарегистрирован в списке поставщиков.

Примечание API:
Рекомендуется использовать преобразование, которое полностью определяет алгоритм, режим и заполнение. Если этого не сделать, поставщик использует значение по умолчанию для режима и заполнения, которое может не соответствовать требованиям безопасности вашего приложения.
Примечание реализации:
См. раздел Преобразования шифров документа Поставщики JDK для получения информации о значениях по умолчанию преобразований, используемых поставщиками JDK.
Параметры:
transformation - имя преобразования, например, AES/CBC/PKCS5Padding. См. раздел Шифр в Спецификации имен стандартных алгоритмов безопасности Java для получения информации о стандартных именах преобразований.
provider - поставщик.
Возвращает:
шифр, реализующий затребованное преобразование
Исключения:
IllegalArgumentException - если provider является null
NoSuchAlgorithmException - если transformation является null, пустым, в недопустимом формате или если реализация CipherSpi для указанного алгоритма недоступна от указанного объекта Provider
NoSuchPaddingException - если transformation содержит схему заполнения, которая недоступна
См. также:
  • Provider

getProvider

public final Provider getProvider()
Возвращает поставщика этого объекта Cipher.
Возвращает:
поставщик этого объекта Cipher

getAlgorithm

public final String getAlgorithm()
Возвращает имя алгоритма этого Cipher объекта.

Это то же имя, что было указано в одном из getInstance вызовов, создавших этот Cipher объект.

Возвращает:
имя алгоритма этого Cipher объекта.

getBlockSize

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

getOutputSize

public final int getOutputSize(int inputLen)
Возвращает длину в байтах, которую должен иметь буфер вывода, чтобы содержать результат следующей update или doFinal операции, с учетом длины входных данных inputLen (в байтах).

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

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

Параметры:
inputLen - длина входных данных (в байтах)
Возвращает:
необходимый размер буфера вывода (в байтах)
Исключения:
IllegalStateException - если этот шифр находится в неправильном состоянии (например, ещё не был инициализирован)

getIV

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

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

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

getParameters

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

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

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

getExemptionMechanism

public final ExemptionMechanism getExemptionMechanism()
Возвращает объект механизма освобождения, используемый с этим шифром.
Возвращает:
объект механизма освобождения, используемый с этим шифром, или null, если этот шифр не использует никакого механизма освобождения.

init

public final void init(int opmode, Key key) throws InvalidKeyException
Инициализирует этот шифр с помощью ключа.

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

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

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

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

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

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

init

public final void init(int opmode, Key key, SecureRandom random) throws InvalidKeyException
Инициализирует этот шифр с помощью ключа и источника случайности.

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

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

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

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

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

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

init

public final void init(int opmode, Key key, AlgorithmParameterSpec params) throws InvalidKeyException, InvalidAlgorithmParameterException
Инициализирует этот шифр с помощью ключа и набора параметров алгоритма.

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

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

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

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

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

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

init

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

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

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

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

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

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

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

init

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

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

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

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

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

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

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

init

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

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

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

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

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

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

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

init

public final void init(int opmode, Certificate certificate) throws InvalidKeyException
Инициализирует этот шифр с открытым ключом из заданного сертификата.

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

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

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

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

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

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

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

init

public final void init(int opmode, Certificate certificate, SecureRandom random) throws InvalidKeyException
Инициализирует этот шифр с открытым ключом из заданного сертификата и источником случайности.

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

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

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

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

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

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

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

update

public final byte[] update(byte[] input)
Продолжает многоэтапную операцию шифрования или дешифрования (в зависимости от того, как был инициализирован этот шифр), обрабатывая другой фрагмент данных.

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

Если длина input равна нулю, этот метод возвращает null.

Parameters:
input - входной буфер
Returns:
новый буфер с результатом или null, если базовый шифр является блочным шифром и входные данные слишком короткие, чтобы создать новый блок.
Throws:
IllegalStateException - если этот шифр находится в неправильном состоянии (например, не был инициализирован)

update

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

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

Если inputLen равно нулю, этот метод возвращает null.

Parameters:
input - входной буфер
inputOffset - смещение в input, где начинаются входные данные
inputLen - длина входных данных
Returns:
новый буфер с результатом или null, если базовый шифр является блочным шифром и входные данные слишком короткие, чтобы создать новый блок.
Throws:
IllegalStateException - если этот шифр находится в неправильном состоянии (например, не был инициализирован)

update

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

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

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

Если inputLen равно нулю, этот метод возвращает длину ноль.

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

Parameters:
input - входной буфер
inputOffset - смещение в input, где начинаются входные данные
inputLen - длина входных данных
output - буфер для результата
Returns:
количество байтов, сохранённых в output
Throws:
IllegalStateException - если этот шифр находится в неправильном состоянии (например, не был инициализирован)
ShortBufferException - если заданный выходной буфер слишком мал для хранения результата

update

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

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

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

Если inputLen равно нулю, этот метод возвращает длину нулю.

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

Parameters:
input - буфер ввода
inputOffset - смещение в input, где начинается ввод
inputLen - длина ввода
output - буфер для результата
outputOffset - смещение в output, где хранится результат
Returns:
количество байтов, сохранённых в output
Throws:
IllegalStateException - если этот шифр находится в неправильном состоянии (например, не был инициализирован)
ShortBufferException - если предоставленный буфер вывода слишком мал для хранения результата

update

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

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

Если output.remaining() байтов недостаточно для хранения результата, выбрасывается исключение ShortBufferException. В этом случае повторите этот вызов с буфером большего размера. Используйте getOutputSize, чтобы определить, каким должен быть буфер вывода.

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

Parameters:
input - ByteBuffer ввода
output - ByteBuffer вывода
Returns:
количество байтов, сохранённых в output
Throws:
IllegalStateException - если этот шифр находится в неправильном состоянии (например, не был инициализирован)
IllegalArgumentException - если входной и выходной буферы - один и тот же объект
ReadOnlyBufferException - если буфер вывода только для чтения
ShortBufferException - если в буфере вывода недостаточно места
Since:
1.5

doFinal

public final byte[] doFinal() throws IllegalBlockSizeException, BadPaddingException
Завершает многочастотную операцию шифрования или дешифрования, в зависимости от того, как был инициализирован этот шифр.

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

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

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

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

doFinal

public final int doFinal(byte[] output, int outputOffset) throws IllegalBlockSizeException, ShortBufferException, BadPaddingException
Завершает многочастотную операцию шифрования или дешифрования, в зависимости от того, как был инициализирован этот шифр.

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

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

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

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

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

doFinal

public final byte[] doFinal(byte[] input) throws IllegalBlockSizeException, BadPaddingException
Шифрует или дешифрует данные в одночастотной операции или завершает многочастотную операцию. Данные шифруются или дешифруются в зависимости от того, как был инициализирован этот шифр.

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

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

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

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

doFinal

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

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

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

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

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

doFinal

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

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

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

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

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

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

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

doFinal

public final int doFinal(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. В этом случае повторите этот вызов с более большим буфером вывода. Используйте getOutputSize, чтобы определить, каким должен быть размер буфера вывода.

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

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

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

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

doFinal

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

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

Если output.remaining() байтов недостаточно для хранения результата, выбрасывается исключение ShortBufferException. В этом случае повторите вызов с более большим буфером вывода. Используйте getOutputSize, чтобы определить, каким должен быть размер буфера вывода.

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

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

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

Parameters:
input - входной ByteBuffer
output - выходной ByteBuffer
Returns:
количество байтов, сохранённых в output
Throws:
IllegalStateException - если этот шифр находится в неправильном состоянии (например, не был инициализирован)
IllegalArgumentException - если входной и выходной буферы - один и тот же объект
ReadOnlyBufferException - если буфер вывода только для чтения
IllegalBlockSizeException - если этот шифр является блочным шифром, заполнение не запрошено (только в режиме шифрования), и общая длина входных данных, обработанных этим шифром, не кратна размеру блока; или если этот алгоритм шифрования не может обработать предоставленные входные данные.
ShortBufferException - если в буфере вывода недостаточно места
BadPaddingException - если этот шифр находится в режиме дешифрования и запрошено заполнение, но расшифрованные данные не ограничены соответствующими байтами заполнения
AEADBadTagException - если этот шифр дешифрует в режиме AEAD (например, GCM/CCM), и полученный тег аутентификации не совпадает с вычисленным значением
Since:
1.5

Обернуть

public final byte[] wrap(Key key) throws IllegalBlockSizeException, InvalidKeyException
Обернуть ключ.
Параметры:
key - ключ, который нужно обернуть.
Возвращает:
обернутый ключ.
Исключения:
IllegalStateException - если шифр находится в неправильном состоянии (например, не был инициализирован).
IllegalBlockSizeException - если этот шифр является блочным шифром, запрос на добавление заполнения не был выполнен, и длина кодирования оборачиваемого ключа не кратна размеру блока.
InvalidKeyException - если невозможно или небезопасно обернуть ключ с помощью этого шифра (например, защищённый аппаратный ключ передаётся программному шифру).
UnsupportedOperationException - если соответствующий метод в CipherSpi не поддерживается.

Развернуть

public final Key unwrap(byte[] wrappedKey, String wrappedKeyAlgorithm, int wrappedKeyType) throws InvalidKeyException, NoSuchAlgorithmException
Развернуть предварительно обернутый ключ.
Параметры:
wrappedKey - ключ, который нужно развернуть.
wrappedKeyAlgorithm - алгоритм, связанный с обернутым ключом.
wrappedKeyType - тип обернутого ключа. Он должен быть одним из SECRET_KEY, PRIVATE_KEY, или PUBLIC_KEY.
Возвращает:
развернутый ключ.
Исключения:
IllegalStateException - если шифр находится в неправильном состоянии (например, не был инициализирован).
NoSuchAlgorithmException - если нет установленных поставщиков, которые могут создать ключи типа wrappedKeyType для wrappedKeyAlgorithm.
InvalidKeyException - если wrappedKey не представляет собой обернутый ключ типа wrappedKeyType для wrappedKeyAlgorithm.
UnsupportedOperationException - если соответствующий метод в CipherSpi не поддерживается.

getMaxAllowedKeyLength

public static final int getMaxAllowedKeyLength(String transformation) throws NoSuchAlgorithmException
Возвращает максимальную длину ключа для указанного преобразования в соответствии с установленными политиками юрисдикции JCE. Если установлены политики юрисдикции JCE с неограниченной силой, будет возвращено Integer.MAX_VALUE. Дополнительную информацию о значениях по умолчанию для ключей и файлах политики юрисдикции JCE см. в разделе "Криптографические значения по умолчанию и ограничения" в Документации поставщиков JDK.
Параметры:
transformation - преобразование шифра.
Возвращает:
максимальную длину ключа в битах или Integer.MAX_VALUE.
Исключения:
NullPointerException - если transformation равно null.
NoSuchAlgorithmException - если transformation не является допустимым преобразованием, т. е. имеет вид «алгоритм» или «алгоритм/режим/заполнение».
С момента:
1.5

getMaxAllowedParameterSpec

public static final AlgorithmParameterSpec getMaxAllowedParameterSpec(String transformation) throws NoSuchAlgorithmException
Возвращает объект AlgorithmParameterSpec, содержащий максимальное значение параметра шифра в соответствии с файлом политики юрисдикции. Если установлены файлы политики юрисдикции JCE с неограниченной силой или нет максимального ограничения на параметры для указанного преобразования в файле политики, будет возвращено null.
Параметры:
transformation - преобразование шифра.
Возвращает:
AlgorithmParameterSpec, содержащий максимальное значение, или null.
Исключения:
NullPointerException - если transformation равно null.
NoSuchAlgorithmException - если transformation не является допустимым преобразованием, т. е. имеет вид «алгоритм» или «алгоритм/режим/заполнение».
С момента:
1.5

updateAAD

public final void updateAAD(byte[] src)
Продолжает многокомпонентное обновление дополнительных данных аутентификации (AAD).

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

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

updateAAD

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

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

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

updateAAD

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

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

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

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

toString

public String toString()
Возвращает строковое представление этого шифра.
Переопределяет:
toString в классе Object
Примечание реализации:
Эта реализация возвращает строку, содержащую преобразование, режим и поставщика этого шифра. Точный формат строки не определён и может меняться.
Возвращает:
строку, описывающую этот шифр

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

Spec-Zone.ru

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