Spec-Zone.ru › OpenJDK 27

Класс Cipher

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

Чтобы создать объект Cipher, приложение вызывает метод 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 см. в RFC 5116 .) При вычислении тега аутентификации могут использоваться как конфиденциальные данные, так и данные AAD (аналогично Mac). Этот тег добавляется к шифротексту при шифровании и проверяется при расшифровании.

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

После завершения операции методом doFinal объект Cipher попытается сбросить состояние до состояния, соответствующего последнему вызову init, что позволит выполнять дополнительные операции. Успешный сброс зависит от режима (ENCRYPT_MODE или DECRYPT_MODE) и алгоритма. Алгоритмы AEAD могут не выполнять сброс, чтобы предотвратить атаки подделки, обусловленные требованиями уникальности ключа и вектора инициализации (IV).

При вызове методов update или doFinal будет выброшено исключение IllegalStateException, если сброс не произошёл. Вызов init повторно инициализирует объект Cipher с новыми параметрами.

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

  • AES/CBC/NoPadding (128)
  • AES/CBC/PKCS5Padding (128)
  • AES/ECB/NoPadding (128)
  • AES/ECB/PKCS5Padding (128)
  • AES/GCM/NoPadding (128, 256)
  • ChaCha20-Poly1305
  • PBEWithHmacSHA256AndAES_128
  • PBEWithHmacSHA256AndAES_256
  • RSA/ECB/OAEPWithSHA-1AndMGF1Padding (1024, 2048)
  • RSA/ECB/OAEPWithSHA-256AndMGF1Padding (1024, 2048)
Эти преобразования описаны в разделе «Шифры» спецификации стандартных имён алгоритмов безопасности Java. Чтобы узнать, поддерживаются ли какие-либо другие преобразования, обратитесь к документации по выпуску вашей реализации.
Начиная с версии:
1.4
Внешние спецификации
  • RFC 5116: интерфейс и алгоритмы аутентифицированного шифрования
  • Стандартные имена алгоритмов безопасности Java
См. также:
  • 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()
Завершает многоэтапную операцию шифрования или расшифрования в зависимости от того, как был инициализирован этот объект 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)
Возвращает объект 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)
Сворачивает ключ.

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

clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Модификатор и тип Метод Описание
protected Object clone()
Создаёт и возвращает копию этого объекта.
boolean equals(Object obj)
Указывает, равен ли этот объект какому-либо другому.
protected void finalize()
Устарело, будет удалено: этот элемент API может быть удалён в будущей версии.
Финализация устарела и будет удалена в одном из будущих выпусков.
final Class<?> getClass()
Возвращает класс времени выполнения этого Object.
int hashCode()
Возвращает хеш-код этого объекта.
final void notify()
Пробуждает один поток, ожидающий на мониторе этого объекта.
final void notifyAll()
Пробуждает все потоки, ожидающие на мониторе этого объекта.
final void wait()
Заставляет текущий поток ожидать до пробуждения, обычно вследствие уведомления или прерывания.
final void wait(long timeoutMillis)
Заставляет текущий поток ожидать до пробуждения, обычно вследствие уведомления или прерывания, либо до истечения заданного промежутка реального времени.
final void wait(long timeoutMillis, int nanos)
Заставляет текущий поток ожидать до пробуждения, обычно вследствие уведомления или прерывания, либо до истечения заданного промежутка реального времени.

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

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 дополнительно использует следующие свойства безопасности:
  • свойство jdk.security.provider.preferred Security для определения предпочтительного порядка поставщиков для указанного алгоритма. Он может отличаться от порядка поставщиков, возвращаемых методом Security.getProviders(). См. также раздел «Преобразования Cipher» документа Поставщики JDK, где приведены сведения о значениях преобразования по умолчанию, используемых поставщиками JDK.
  • свойство jdk.crypto.disabledAlgorithms Security для определения, разрешён ли указанный алгоритм. Если задано значение jdk.crypto.disabledAlgorithms, оно имеет приоритет над значением свойства безопасности.
Параметры:
transformation — имя преобразования, например AES/CBC/PKCS5Padding. Сведения о стандартных именах преобразований см. в разделе Cipher спецификации стандартных имён алгоритмов безопасности Java.
Возвращает:
объект Cipher, реализующий запрошенное преобразование
Выбрасывает:
NoSuchAlgorithmException — если transformation имеет значение null, пуст или имеет недопустимый формат; либо если реализация CipherSpi не найдена или найдена, но не поддерживает режим
NoSuchPaddingException — если реализация CipherSpi найдена, но не поддерживает схему дополнения
Внешние спецификации
  • Стандартные имена алгоритмов безопасности Java
См. также:
  • Provider

getInstance

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

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

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

Примечание к API:
Рекомендуется использовать преобразование, в котором полностью указаны алгоритм, режим и схема дополнения. В противном случае поставщик будет использовать значения режима и схемы дополнения по умолчанию, которые могут не соответствовать требованиям безопасности вашего приложения.
Примечание по реализации:
Сведения о значениях преобразования по умолчанию, используемых поставщиками JDK, см. в разделе «Преобразования Cipher» документа Поставщики JDK. Эталонная реализация JDK дополнительно использует свойство jdk.crypto.disabledAlgorithms Security для определения, разрешён ли указанный алгоритм. Если задано значение jdk.crypto.disabledAlgorithms, оно имеет приоритет над значением свойства безопасности.
Параметры:
transformation — имя преобразования, например AES/CBC/PKCS5Padding. Сведения о стандартных именах преобразований см. в разделе Cipher спецификации стандартных имён алгоритмов безопасности Java.
provider — имя поставщика
Возвращает:
объект Cipher, реализующий запрошенное преобразование
Выбрасывает:
IllegalArgumentException — если provider имеет значение null или пуст
NoSuchAlgorithmException — если transformation имеет значение null, пуст или имеет недопустимый формат; либо если реализация CipherSpi указанного provider не найдена или найдена, но не поддерживает режим
NoSuchPaddingException — если реализация CipherSpi указанного provider найдена, но не поддерживает схему дополнения
NoSuchProviderException — если указанный provider не зарегистрирован в списке поставщиков безопасности
Внешние спецификации
  • Стандартные имена алгоритмов безопасности Java
См. также:
  • Provider

getInstance

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

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

Примечание к API:
Рекомендуется использовать преобразование, в котором полностью указаны алгоритм, режим и схема дополнения. В противном случае поставщик будет использовать значения режима и схемы дополнения по умолчанию, которые могут не соответствовать требованиям безопасности вашего приложения.
Примечание по реализации:
Сведения о значениях преобразования по умолчанию, используемых поставщиками JDK, см. в разделе «Преобразования Cipher» документа Поставщики JDK. Эталонная реализация JDK дополнительно использует свойство jdk.crypto.disabledAlgorithms Security для определения, разрешён ли указанный алгоритм. Если задано значение jdk.crypto.disabledAlgorithms, оно имеет приоритет над значением свойства безопасности.
Параметры:
transformation — имя преобразования, например AES/CBC/PKCS5Padding. Сведения о стандартных именах преобразований см. в разделе Cipher спецификации стандартных имён алгоритмов безопасности Java.
provider — поставщик
Возвращает:
объект Cipher, реализующий запрошенное преобразование
Выбрасывает:
IllegalArgumentException — если provider имеет значение null
NoSuchAlgorithmException — если transformation имеет значение null, пуст или имеет недопустимый формат; либо если реализация CipherSpi указанного provider не найдена или найдена, но не поддерживает режим
NoSuchPaddingException — если реализация CipherSpi указанного provider найдена, но не поддерживает схему дополнения
Внешние спецификации
  • Стандартные имена алгоритмов безопасности Java
См. также:
  • 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
Инициализирует этот объект Cipher с помощью ключа и источника случайных данных.

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

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

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

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

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

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

init

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

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

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

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

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

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

Параметры:
opmode — режим операции этого объекта Cipher (одно из следующих значений: ENCRYPT_MODE, DECRYPT_MODE, WRAP_MODE или UNWRAP_MODE)
key — ключ шифрования
params — параметры алгоритма
Выбрасывает:
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
Инициализирует этот объект Cipher с помощью ключа, набора параметров алгоритма и источника случайных данных.

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

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

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

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

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

Параметры:
opmode — режим операции этого объекта Cipher (одно из следующих значений: ENCRYPT_MODE, DECRYPT_MODE, WRAP_MODE или UNWRAP_MODE)
key — ключ шифрования
params — параметры алгоритма
random — источник случайных данных
Выбрасывает:
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
Инициализирует этот объект Cipher с ключом и набором параметров алгоритма.

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

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

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

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

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

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

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

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

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

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

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

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

init

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

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

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

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

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

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

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

Параметры:
opmode — режим работы этого объекта Cipher (одно из следующих значений: ENCRYPT_MODE, DECRYPT_MODE, WRAP_MODE или UNWRAP_MODE)
certificate — сертификат
Исключения:
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 и его инициализации.

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

update

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

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

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

Параметры:
input — входной буфер
Возвращает:
новый буфер с результатом или null, если этот шифр является блочным и входных данных недостаточно для формирования нового блока
Исключения:
IllegalStateException — если этот объект Cipher находится в недопустимом состоянии (например, не был инициализирован или не находится в режиме ENCRYPT_MODE или DECRYPT_MODE)

update

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

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

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

Параметры:
input — входной буфер
inputOffset — смещение в input, с которого начинаются входные данные
inputLen — длина входных данных
Возвращает:
новый буфер с результатом или null, если этот шифр является блочным и входных данных недостаточно для формирования нового блока.
Исключения:
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 могут ссылаться на один и тот же массив байтов, и при копировании результата в выходной буфер необработанные входные данные не перезаписываются.

Параметры:
input — входной буфер
inputOffset — смещение в input, с которого начинаются входные данные
inputLen — длина входных данных
output — буфер для результата
Возвращает:
количество байтов, сохранённых в output
Исключения:
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 могут ссылаться на один и тот же массив байтов, и при копировании результата в выходной буфер необработанные входные данные не перезаписываются.

Параметры:
input — входной буфер
inputOffset — смещение в input, с которого начинаются входные данные
inputLen — длина входных данных
output — буфер для результата
outputOffset — смещение в output, по которому сохраняется результат
Возвращает:
количество байтов, сохранённых в output
Исключения:
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 могут ссылаться на один и тот же участок памяти, и при копировании результата в выходной буфер необработанные входные данные не перезаписываются.

Параметры:
input — входной ByteBuffer
output — выходной ByteByffer
Возвращает:
количество байтов, сохранённых в output
Исключения:
IllegalStateException — если этот объект Cipher находится в недопустимом состоянии (например, не был инициализирован или не находится в режиме ENCRYPT_MODE или DECRYPT_MODE)
IllegalArgumentException — если входной и выходной буферы являются одним и тем же объектом
ReadOnlyBufferException — если выходной буфер доступен только для чтения
ShortBufferException — если в выходном буфере недостаточно места
Начиная с версии:
1.5

doFinal

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

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

Возвращает:
новый буфер с результатом
Исключения:
IllegalStateException — если этот объект Cipher находится в неверном режиме или не может быть сброшен.
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, при шифровании добавляется тег аутентификации, а при расшифровании он проверяется. Результат сохраняется в новом буфере.

Параметры:
input — входной буфер
Возвращает:
новый буфер с результатом
Исключения:
IllegalStateException — если этот объект Cipher находится в неверном режиме или не может быть сброшен.
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, при шифровании добавляется тег аутентификации, а при расшифровании он проверяется. Результат сохраняется в новом буфере.

Параметры:
input — входной буфер
inputOffset — смещение в input, с которого начинаются входные данные
inputLen — длина входных данных
Возвращает:
новый буфер с результатом
Исключения:
IllegalStateException — если этот объект Cipher находится в неверном режиме или не может быть сброшен.
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, чтобы определить необходимый размер буфера вывода.

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

Параметры:
input — входной буфер
inputOffset — смещение в input, с которого начинаются входные данные
inputLen — длина входных данных
output — буфер для результата
Возвращает:
количество байтов, сохранённых в output
Выбрасывает:
IllegalStateException — если объект Cipher находится в неправильном режиме или не может быть сброшен.
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, чтобы определить необходимый размер буфера вывода.

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

Параметры:
input — входной буфер
inputOffset — смещение в input, с которого начинаются входные данные
inputLen — длина входных данных
output — буфер для результата
outputOffset — смещение в output, по которому сохраняется результат
Возвращает:
количество байтов, сохранённых в output
Выбрасывает:
IllegalStateException — если объект Cipher находится в неправильном режиме или не может быть сброшен.
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, чтобы определить необходимый размер буфера вывода.

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

Параметры:
input — входной ByteBuffer
output — выходной ByteBuffer
Возвращает:
количество байтов, сохранённых в output
Выбрасывает:
IllegalStateException — если объект Cipher находится в неправильном режиме или не может быть сброшен.
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 не поддерживается

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 не является допустимым преобразованием, то есть не имеет вид «algorithm» или «algorithm/mode/padding»
Начиная с:
1.5

getMaxAllowedParameterSpec

public static final AlgorithmParameterSpec getMaxAllowedParameterSpec(String transformation) throws NoSuchAlgorithmException
Возвращает объект AlgorithmParameterSpec, содержащий максимальное значение параметра Cipher согласно файлу политики юрисдикции. Если установлены файлы политики юрисдикции JCE с неограниченной криптографической стойкостью или в файле политики не установлено максимальное ограничение параметров для указанного преобразования, будет возвращено null.
Параметры:
transformation — преобразование шифра
Возвращает:
объект AlgorithmParameterSpec, содержащий максимальное значение, или null
Выбрасывает:
NullPointerException — если transformation имеет значение null
NoSuchAlgorithmException — если transformation не является допустимым преобразованием, то есть не имеет вид «algorithm» или «algorithm/mode/padding»
Начиная с:
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()
Возвращает строковое представление String этого объекта Cipher.
Переопределяет:
toString в классе Object
Примечание по реализации:
Эта реализация возвращает объект String, содержащий преобразование, режим и поставщика этого объекта Cipher. Точный формат String не определён и может измениться.
Возвращает:
строку, описывающую этот объект Cipher

Сообщить об ошибке или предложить улучшение
Дополнительные справочные материалы по API и документацию для разработчиков см. в документации Java SE, содержащей более подробные описания для разработчиков, концептуальные обзоры, определения терминов, обходные решения и примеры работающего кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её аффилированных лиц в США и других странах.
Авторское право © 1993, 2026, Oracle и/или её аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 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.

Spec-Zone.ru

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