Spec-Zone.ru › OpenJDK 24

Класс Cipher

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

Для создания объекта Cipher приложение вызывает метод getInstance шифра и передаёт ему имя запрошенного преобразования. Необязательно, можно указать имя поставщика.

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

Преобразование имеет вид:

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

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

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

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

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

Обратите внимание, что режим GCM имеет требование уникальности для IV, используемых при шифровании с заданным ключом. При повторном использовании IV для шифрования в режиме GCM такие операции подвержены атакам подделки. Поэтому после каждой операции шифрования в режиме GCM вызывающие стороны должны повторно инициализировать объекты Cipher с параметрами 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 имеют аналогичное требование к уникальности инициализационных векторов (IV) при заданном ключе. После каждой операции шифрования или дешифрования вызывающие стороны должны повторно инициализировать свои шифры 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)
Эти преобразования описаны в разделе Шифр спецификации Java Security Standard Algorithm Names. Обратитесь к документации выпуска вашей реализации, чтобы узнать, поддерживаются ли другие преобразования.
С момента:
1.4
Внешние спецификации
  • RFC 5116: Интерфейс и алгоритмы аутентифицированного шифрования
  • RFC 7539: ChaCha20 и Poly1305 для протоколов IETF
См. также:
  • KeyGenerator
  • SecretKey

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

Modifier and Type Field Description
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)
Modifier Конструктор Description
protected
Создает объект Cipher.

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

Modifier and Type Method Description
final byte[] doFinal()
Завершает операцию многочастотного шифрования или дешифрования в зависимости от того, как был инициализирован этот объект Cipher.
final byte[] doFinal(byte[] input)
Шифрует или дешифрует данные в одночастотной операции или завершает многочастотную операцию.
final int doFinal(byte[] output, int outputOffset)
Завершает операцию многочастотного шифрования или дешифрования в зависимости от того, как был инициализирован этот объект Cipher.
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()
Возвращает объект механизма исключения, используемый с этим объектом Cipher.
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)
Возвращает объект {code AlgorithmParameterSpec}, содержащий максимальное значение параметра Cipher в соответствии с файлами политики юрисдикции.
final int getOutputSize(int inputLen)
Возвращает длину в байтах, которую должен иметь буфер вывода, чтобы содержать результат следующей операции update или doFinal, учитывая длину входных данных inputLen (в байтах).
final AlgorithmParameters getParameters()
Возвращает параметры, используемые с этим объектом Cipher.
final Provider getProvider()
Возвращает поставщика этого объекта Cipher.
final void init(int opmode, Certificate certificate)
Инициализирует этот объект Cipher с открытым ключом из указанного сертификата.
final void init(int opmode, Certificate certificate, SecureRandom random)
Инициализирует этот объект Cipher с открытым ключом из указанного сертификата и источником случайных чисел.
final void init(int opmode, Key key)
Инициализирует этот объект Cipher ключом.
final void init(int opmode, Key key, AlgorithmParameters params)
Инициализирует этот объект Cipher ключом и набором параметров алгоритма.
final void init(int opmode, Key key, AlgorithmParameters params, SecureRandom random)
Инициализирует этот объект Cipher ключом, набором параметров алгоритма и источником случайных чисел.
final void init(int opmode, Key key, SecureRandom random)
Инициализирует этот объект Cipher ключом и источником случайных чисел.
final void init(int opmode, Key key, AlgorithmParameterSpec params)
Инициализирует этот объект Cipher ключом и набором параметров алгоритма.
final void init(int opmode, Key key, AlgorithmParameterSpec params, SecureRandom random)
Инициализирует этот объект Cipher ключом, набором параметров алгоритма и источником случайных чисел.
String toString()
Возвращает представление String этого объекта Cipher.
final Key unwrap(byte[] wrappedKey, String wrappedKeyAlgorithm, int wrappedKeyType)
Разбирает предварительно обернутый ключ.
final byte[] update(byte[] input)
Продолжает многочастотную операцию шифрования или дешифрования (в зависимости от того, как был инициализирован этот объект Cipher), обрабатывая другой фрагмент данных.
final byte[] update(byte[] input, int inputOffset, int inputLen)
Продолжает многочастотную операцию шифрования или дешифрования (в зависимости от того, как был инициализирован этот объект Cipher), обрабатывая другой фрагмент данных.
final int update(byte[] input, int inputOffset, int inputLen, byte[] output)
Продолжает многочастотную операцию шифрования или дешифрования (в зависимости от того, как был инициализирован этот объект Cipher), обрабатывая другой фрагмент данных.
final int update(byte[] input, int inputOffset, int inputLen, byte[] output, int outputOffset)
Продолжает многочастотную операцию шифрования или дешифрования (в зависимости от того, как был инициализирован этот объект Cipher), обрабатывая другой фрагмент данных.
final int update(ByteBuffer input, ByteBuffer output)
Продолжает многочастотную операцию шифрования или дешифрования (в зависимости от того, как был инициализирован этот объект Cipher), обрабатывая другой фрагмент данных.
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, encapsulating реализацию CipherSpi от первого поставщика, который поддерживает указанный алгоритм.

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

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

getInstance

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

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

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

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

getInstance

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

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

Примечание API:
Рекомендуется использовать преобразование, которое полностью определяет алгоритм, режим и дополнение. В противном случае поставщик будет использовать значения по умолчанию для режима и дополнения, которые могут не соответствовать требованиям безопасности вашего приложения.
Примечание реализации:
См. раздел Преобразования шифров документа JDK Providers для получения информации о значениях по умолчанию преобразования, используемых поставщиками JDK.
Параметры:
transformation - имя преобразования, например, AES/CBC/PKCS5Padding. См. раздел Шифрование в Спецификации Java Security Standard Algorithm Names Specification для получения информации о стандартных именах преобразований.
provider - поставщик
Возвращает:
объект Cipher, реализующий запрошенное преобразование
Исключения:
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 - если этот объект Cipher находится в неправильном состоянии (например, еще не был инициализирован)

getIV

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

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

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

getParameters

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

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

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

getExemptionMechanism

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

init

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

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

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

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

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

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

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

init

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

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

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

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

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

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

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

init

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

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

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

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

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

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

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

init

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

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

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

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

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

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

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
InvalidParameterException — если opmode не является одним из известных значений

init

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

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

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

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

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

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

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

init

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

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

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

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

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

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

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
InvalidParameterException - если opmode не является одним из распознаваемых значений

init

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

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

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

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

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

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

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

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

init

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

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

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

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

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

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

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

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

update

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

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

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

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

update

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

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

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

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

update

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

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

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

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

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

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

update

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

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

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

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

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

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

update

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

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

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

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

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

doFinal

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

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

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

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

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

doFinal

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

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

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

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

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

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

doFinal

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

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

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

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

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

doFinal

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

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

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

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

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

doFinal

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

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

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

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

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

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

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

doFinal

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

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

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

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

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

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

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

doFinal

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

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

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

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

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

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

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

wrap

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

unwrap

public final Key unwrap(byte[] wrappedKey, String wrappedKeyAlgorithm, int wrappedKeyType) throws InvalidKeyException, NoSuchAlgorithmException
Распаковать предварительно упакованный ключ.
Параметры:
wrappedKey - ключ, подлежащий распаковке
wrappedKeyAlgorithm - алгоритм, связанный с упакованным ключом
wrappedKeyType - тип упакованного ключа. Он должен быть одним из SECRET_KEY, PRIVATE_KEY или PUBLIC_KEY
Возвращает:
распакованный ключ
Исключение:
IllegalStateException - если этот объект Cipher находится в неправильном состоянии (например, не был инициализирован или не находится в состоянии UNWRAP_MODE)
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
Возвращает объект {code AlgorithmParameterSpec}, который содержит максимальное значение параметра Cipher в соответствии с файлом политики юрисдикции. Если установлены файлы политики юрисдикции JCE с неограниченной силой или в файле политики нет максимального ограничения на параметры для указанного преобразования, будет возвращено null.
Параметры:
transformation - преобразование шифра
Возвращает:
объект {code AlgorithmParameterSpec}, содержащий максимальное значение или null
Исключение:
NullPointerException - если transformation является null
NoSuchAlgorithmException - если transformation не является допустимым преобразованием, т. е. в формате «алгоритм» или «алгоритм/режим/заполнение»
С:
1.5

updateAAD

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

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

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

updateAAD

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

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

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

updateAAD

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

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

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

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

toString

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

© 1993, 2025, 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://download.java.net/java/early_access/jdk24/docs/api/java.base/javax/crypto/Cipher.html

Spec-Zone.ru

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