Spec-Zone.ru › OpenJDK 25

Класс 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), которые не шифруются. (Дополнительные сведения об алгоритмах AEAD и AAD, таких как GCM/CCM, см. в RFC 5116 .) При вычислении тега аутентификации могут использоваться как конфиденциальные данные, так и 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 также требуется, чтобы одно и то же значение nonce не повторялось с одним и тем же ключом. После каждой операции шифрования или расшифрования вызывающим сторонам следует повторно инициализировать шифры ChaCha20 или ChaCha20-Poly1305 параметрами с другим значением nonce. Дополнительные сведения об алгоритмах ChaCha20 и ChaCha20-Poly1305 см. в RFC 7539.

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

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

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

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

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

ENCRYPT_MODE

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

DECRYPT_MODE

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

WRAP_MODE

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

UNWRAP_MODE

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

PUBLIC_KEY

public static final int PUBLIC_KEY
Константа, указывающая, что распаковываемый ключ является «открытым ключом».
См. также:
  • Значения констант полей

PRIVATE_KEY

public static final int PRIVATE_KEY
Константа, указывающая, что распаковываемый ключ является «закрытым ключом».
См. также:
  • Значения констант полей

SECRET_KEY

public static final int SECRET_KEY
Константа, указывающая, что распаковываемый ключ является «секретным ключом».
См. также:
  • Значения констант полей

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

Cipher

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

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

getInstance

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

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

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

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

getInstance

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

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

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

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

getInstance

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

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

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

По завершении этот метод сбрасывает объект 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 не поддерживается

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
Возвращает объект {code AlgorithmParameterSpec}, содержащий максимальное значение параметра Cipher согласно файлу политики юрисдикции. Если установлены файлы политики юрисдикции JCE с неограниченной криптографической стойкостью или в файле политики не установлен максимальный предел параметров для указанного преобразования, возвращается null.
Параметры:
transformation — преобразование шифра
Возвращает:
объект {code 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, 2025, 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.
https://docs.oracle.com/en/java/javase/25/docs/api/java.base/javax/crypto/Cipher.html

Spec-Zone.ru

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