Класс Cipher
- Прямые известные подклассы:
NullCipher
public class Cipher extends Object
Для создания объекта Cipher приложение вызывает метод getInstance шифра и передаёт ему имя запрошенного преобразования. Необязательно, можно указать имя поставщика.
Преобразование — это строка, описывающая операцию (или набор операций), выполняемую над заданным входом для получения некоторого выхода. Преобразование всегда включает имя криптографического алгоритма (например, AES) и может быть дополнено режимом работы и схемой заполнения.
Преобразование имеет вид:
- "алгоритм/режим/заполнение" или
- "алгоритм"
(в последнем случае используются значения по умолчанию, специфичные для поставщика, для режима работы и схемы заполнения). Например, следующее является допустимым преобразованием:
Cipher c = Cipher.getInstance("AES/CBC/PKCS5Padding");
Использование режимов, таких как CFB и OFB, позволяет блочным шифрам шифровать данные в блоках меньшего размера, чем фактический размер блока шифра. При запросе такого режима можно необязательно указать количество битов, обрабатываемых за один раз, добавив это число к имени режима, как показано в преобразованиях "AES/CFB8/NoPadding" и "AES/OFB32/PKCS5Padding". Если такое число не указано, используется значение по умолчанию, специфичное для поставщика. (См. документацию поставщиков JDK для значений по умолчанию поставщиков JDK.) Таким образом, блочные шифры могут быть преобразованы в байтовые потоковые шифры, используя режим на 8 бит, такой как CFB8 или OFB8. Режимы, такие как аутентифицированное шифрование с дополнительными данными (AEAD), обеспечивают гарантии аутентичности как для конфиденциальных данных, так и для дополнительных данных (AAD), которые не шифруются. (См. RFC 5116 для получения дополнительной информации об алгоритмах AEAD и AAD, таких как GCM/CCM). Как конфиденциальные, так и AAD-данные могут использоваться при вычислении аутентификационного тега (аналогичного тегу Mac). Этот тег добавляется к шифртексту во время шифрования и проверяется при дешифровании.
Режимы AEAD, такие как GCM/CCM, выполняют все вычисления аутентичности AAD перед началом вычислений аутентичности шифртекста. Чтобы избежать необходимости внутренних буферизации шифртекста, все данные AAD должны быть предоставлены реализациям GCM/CCM (через методы updateAAD) до обработки шифртекста (через методы update и doFinal).
Обратите внимание, что режим GCM имеет требование уникальности для IV, используемых при шифровании с заданным ключом. При повторном использовании IV для шифрования в режиме GCM такие операции подвержены атакам подделки. Поэтому после каждой операции шифрования в режиме GCM вызывающие стороны должны повторно инициализировать объекты Cipher с параметрами GCM, имеющими другое значение IV.
GCMParameterSpec s = ...;
cipher.init(..., s);
// If the GCM parameters were generated by the provider, it can
// be retrieved by:
// cipher.getParameters().getParameterSpec(GCMParameterSpec.class);
cipher.updateAAD(...); // AAD
cipher.update(...); // Multi-part update
cipher.doFinal(...); // conclusion of operation
// Use a different IV value for every encryption
byte[] newIv = ...;
s = new GCMParameterSpec(s.getTLen(), newIv);
cipher.init(..., s);
...
Алгоритмы ChaCha20 и ChaCha20-Poly1305 имеют аналогичное требование к уникальности инициализационных векторов (IV) при заданном ключе. После каждой операции шифрования или дешифрования вызывающие стороны должны повторно инициализировать свои шифры ChaCha20 или ChaCha20-Poly1305 с параметрами, которые определяют другое значение инициализационного вектора (nonce). Дополнительную информацию об алгоритмах ChaCha20 и ChaCha20-Poly1305 см. в RFC 7539. Каждая реализация Java платформы обязана поддерживать следующие стандартные Cipher преобразования объектов с размерами ключей в скобках:
-
AES/CBC/NoPadding(128) -
AES/CBC/PKCS5Padding(128) -
AES/ECB/NoPadding(128) -
AES/ECB/PKCS5Padding(128) -
AES/GCM/NoPadding(128) -
DESede/CBC/NoPadding(168) -
DESede/CBC/PKCS5Padding(168) -
DESede/ECB/NoPadding(168) -
DESede/ECB/PKCS5Padding(168) -
RSA/ECB/PKCS1Padding(1024, 2048) -
RSA/ECB/OAEPWithSHA-1AndMGF1Padding(1024, 2048) -
RSA/ECB/OAEPWithSHA-256AndMGF1Padding(1024, 2048)
- С момента:
- 1.4
- Внешние спецификации
- См. также:
Краткое описание полей
| Modifier and Type | Field | Description |
|---|---|---|
static final int |
DECRYPT_MODE |
Константа, используемая для инициализации шифра в режиме дешифрования. |
static final int |
ENCRYPT_MODE |
Константа, используемая для инициализации шифра в режиме шифрования. |
static final int |
PRIVATE_KEY |
Константа, используемая для указания того, что разворачиваемый ключ является «приватным ключом». |
static final int |
PUBLIC_KEY |
Константа, используемая для указания того, что разворачиваемый ключ является «публичным ключом». |
static final int |
SECRET_KEY |
Константа, используемая для указания того, что разворачиваемый ключ является «секретным ключом». |
static final int |
UNWRAP_MODE |
Константа, используемая для инициализации шифра в режиме разворачивания ключа. |
static final int |
WRAP_MODE |
Константа, используемая для инициализации шифра в режиме обертывания ключа. |
Краткое описание конструкторов
| Modifier | Конструктор | Description |
|---|---|---|
protected |
Создает объект Cipher. |
Краткое описание методов
| Modifier and Type | Method | Description |
|---|---|---|
final byte[] |
doFinal() |
Завершает операцию многочастотного шифрования или дешифрования в зависимости от того, как был инициализирован этот объект Cipher. |
final byte[] |
doFinal |
Шифрует или дешифрует данные в одночастотной операции или завершает многочастотную операцию. |
final int |
doFinal |
Завершает операцию многочастотного шифрования или дешифрования в зависимости от того, как был инициализирован этот объект Cipher. |
final byte[] |
doFinal |
Шифрует или дешифрует данные в одночастотной операции или завершает многочастотную операцию. |
final int |
doFinal |
Шифрует или дешифрует данные в одночастотной операции или завершает многочастотную операцию. |
final int |
doFinal |
Шифрует или дешифрует данные в одночастотной операции или завершает многочастотную операцию. |
final int |
doFinal |
Шифрует или дешифрует данные в одночастотной операции или завершает многочастотную операцию. |
final String |
getAlgorithm() |
Возвращает имя алгоритма этого объекта Cipher. |
final int |
getBlockSize() |
Возвращает размер блока (в байтах). |
final ExemptionMechanism |
getExemptionMechanism() |
Возвращает объект механизма исключения, используемый с этим объектом Cipher. |
static final Cipher |
getInstance |
Возвращает объект Cipher, реализующий указанную трансформацию. |
static final Cipher |
getInstance |
Возвращает объект Cipher, реализующий указанную трансформацию. |
static final Cipher |
getInstance |
Возвращает объект Cipher, реализующий указанную трансформацию. |
final byte[] |
getIV() |
Возвращает вектор инициализации (IV) в новом буфере. |
static final int |
getMaxAllowedKeyLength |
Возвращает максимальную длину ключа для указанной трансформации в соответствии с установленными политиками юрисдикции JCE. |
static final AlgorithmParameterSpec |
getMaxAllowedParameterSpec |
Возвращает объект {code AlgorithmParameterSpec}, содержащий максимальное значение параметра Cipher в соответствии с файлами политики юрисдикции. |
final int |
getOutputSize |
Возвращает длину в байтах, которую должен иметь буфер вывода, чтобы содержать результат следующей операции update или doFinal, учитывая длину входных данных inputLen (в байтах). |
final AlgorithmParameters |
getParameters() |
Возвращает параметры, используемые с этим объектом Cipher. |
final Provider |
getProvider() |
Возвращает поставщика этого объекта Cipher. |
final void |
init |
Инициализирует этот объект Cipher с открытым ключом из указанного сертификата. |
final void |
init |
Инициализирует этот объект Cipher с открытым ключом из указанного сертификата и источником случайных чисел. |
final void |
init |
Инициализирует этот объект Cipher ключом. |
final void |
init |
Инициализирует этот объект Cipher ключом и набором параметров алгоритма. |
final void |
init |
Инициализирует этот объект Cipher ключом, набором параметров алгоритма и источником случайных чисел. |
final void |
init |
Инициализирует этот объект Cipher ключом и источником случайных чисел. |
final void |
init |
Инициализирует этот объект Cipher ключом и набором параметров алгоритма. |
final void |
init |
Инициализирует этот объект Cipher ключом, набором параметров алгоритма и источником случайных чисел. |
String |
toString() |
Возвращает представление String этого объекта Cipher. |
final Key |
unwrap |
Разбирает предварительно обернутый ключ. |
final byte[] |
update |
Продолжает многочастотную операцию шифрования или дешифрования (в зависимости от того, как был инициализирован этот объект Cipher), обрабатывая другой фрагмент данных. |
final byte[] |
update |
Продолжает многочастотную операцию шифрования или дешифрования (в зависимости от того, как был инициализирован этот объект Cipher), обрабатывая другой фрагмент данных. |
final int |
update |
Продолжает многочастотную операцию шифрования или дешифрования (в зависимости от того, как был инициализирован этот объект Cipher), обрабатывая другой фрагмент данных. |
final int |
update |
Продолжает многочастотную операцию шифрования или дешифрования (в зависимости от того, как был инициализирован этот объект Cipher), обрабатывая другой фрагмент данных. |
final int |
update |
Продолжает многочастотную операцию шифрования или дешифрования (в зависимости от того, как был инициализирован этот объект Cipher), обрабатывая другой фрагмент данных. |
final void |
updateAAD |
Продолжает многочастовое обновление дополнительных данных аутентификации (AAD). |
final void |
updateAAD |
Продолжает многочастовое обновление дополнительных данных аутентификации (AAD), используя подмножество предоставленного буфера. |
final void |
updateAAD |
Продолжает многочастовое обновление дополнительных данных аутентификации (AAD). |
final byte[] |
wrap |
Обернуть ключ. |
Подробное описание полей
ENCRYPT_MODE
public static final int ENCRYPT_MODE
- См. также:
DECRYPT_MODE
public static final int DECRYPT_MODE
- См. также:
WRAP_MODE
public static final int WRAP_MODE
- См. также:
UNWRAP_MODE
public static final int UNWRAP_MODE
- См. также:
PUBLIC_KEY
public static final int PUBLIC_KEY
- См. также:
PRIVATE_KEY
public static final int PRIVATE_KEY
- См. также:
SECRET_KEY
public static final int SECRET_KEY
- См. также:
Подробное описание конструкторов
Cipher
protected Cipher(CipherSpi cipherSpi, Provider provider, String transformation)
Cipher.- Параметры:
-
cipherSpi- делегат -
provider- провайдер -
transformation- преобразование - Исключения:
-
NullPointerException- еслиproviderявляетсяnull -
IllegalArgumentException- если предоставленные аргументы считаются недопустимыми для построения объектаCipher
Подробное описание методов
getInstance
public static final Cipher getInstance(String transformation) throws NoSuchAlgorithmException, NoSuchPaddingException
Cipher, реализующий указанное преобразование. Этот метод проходит по списку зарегистрированных поставщиков безопасности, начиная с наиболее предпочтительного. Возвращается новый объект Cipher, encapsulating реализацию CipherSpi от первого поставщика, который поддерживает указанный алгоритм.
Обратите внимание, что список зарегистрированных поставщиков можно получить с помощью метода Security.getProviders().
- Примечание API:
- Рекомендуется использовать преобразование, которое полностью определяет алгоритм, режим и заполнение. Если этого не сделать, поставщик воспользуется значениями по умолчанию для режима и заполнения, которые могут не соответствовать требованиям безопасности вашего приложения.
- Примечания реализации:
- Реализация JDK Reference Implementation дополнительно использует свойство
jdk.security.provider.preferredSecurityдля определения предпочтительного порядка поставщиков для указанного алгоритма. Это может отличаться от порядка поставщиков, возвращаемого методомSecurity.getProviders(). См. также раздел "Преобразования шифрования" документа JDK Providers для получения информации о значениях по умолчанию преобразований, используемых поставщиками JDK. - Параметры:
-
transformation- имя преобразования, например, AES/CBC/PKCS5Padding. См. раздел "Шифр" в Спецификации имен стандартных алгоритмов Java Security для получения информации о стандартных именах преобразований. - Возвращает:
- объект
Cipher, реализующий запрошенное преобразование - Исключения:
-
NoSuchAlgorithmException- еслиtransformationявляетсяnull, пустым, в недопустимом формате или если ни один поставщик не поддерживает реализациюCipherSpiдля указанного алгоритма -
NoSuchPaddingException- еслиtransformationсодержит схему заполнения, которая недоступна - См. также:
getInstance
public static final Cipher getInstance(String transformation, String provider) throws NoSuchAlgorithmException, NoSuchProviderException, NoSuchPaddingException
Cipher, реализующий указанное преобразование. Возвращается новый объект Cipher, encapsulating реализацию CipherSpi от указанного поставщика. Указанный поставщик должен быть зарегистрирован в списке поставщиков безопасности.
Обратите внимание, что список зарегистрированных поставщиков можно получить с помощью метода Security.getProviders().
- Примечание API:
- Рекомендуется использовать преобразование, которое полностью определяет алгоритм, режим и заполнение. Если этого не сделать, поставщик воспользуется значениями по умолчанию для режима и заполнения, которые могут не соответствовать требованиям безопасности вашего приложения.
- Примечания реализации:
- См. раздел "Преобразования шифрования" документа JDK Providers для получения информации о значениях по умолчанию преобразований, используемых поставщиками JDK.
- Параметры:
-
transformation- имя преобразования, например, AES/CBC/PKCS5Padding. См. раздел "Шифр" в Спецификации имен стандартных алгоритмов Java Security для получения информации о стандартных именах преобразований. -
provider- имя поставщика - Возвращает:
- объект
Cipher, реализующий запрошенное преобразование - Исключения:
-
IllegalArgumentException- еслиproviderявляетсяnullили пустым -
NoSuchAlgorithmException- еслиtransformationявляетсяnull, пустым, в недопустимом формате или если реализацияCipherSpiдля указанного алгоритма недоступна от указанного поставщика -
NoSuchPaddingException- еслиtransformationсодержит схему заполнения, которая недоступна -
NoSuchProviderException- если указанный поставщик не зарегистрирован в списке поставщиков безопасности - См. также:
getInstance
public static final Cipher getInstance(String transformation, Provider provider) throws NoSuchAlgorithmException, NoSuchPaddingException
Cipher, реализующий указанное преобразование. Возвращается новый объект Cipher, инкапсулирующий реализацию CipherSpi из указанного объекта provider. Обратите внимание, что указанный объект provider не обязательно должен быть зарегистрирован в списке поставщиков.
- Примечание API:
- Рекомендуется использовать преобразование, которое полностью определяет алгоритм, режим и дополнение. В противном случае поставщик будет использовать значения по умолчанию для режима и дополнения, которые могут не соответствовать требованиям безопасности вашего приложения.
- Примечание реализации:
- См. раздел Преобразования шифров документа JDK Providers для получения информации о значениях по умолчанию преобразования, используемых поставщиками JDK.
- Параметры:
-
transformation- имя преобразования, например, AES/CBC/PKCS5Padding. См. раздел Шифрование в Спецификации Java Security Standard Algorithm Names Specification для получения информации о стандартных именах преобразований. -
provider- поставщик - Возвращает:
- объект
Cipher, реализующий запрошенное преобразование - Исключения:
-
IllegalArgumentException- еслиproviderявляетсяnull -
NoSuchAlgorithmException- еслиtransformationявляетсяnull, пустым, в недопустимом формате, или если реализацияCipherSpiдля указанного алгоритма недоступна из указанного объектаprovider -
NoSuchPaddingException- еслиtransformationсодержит схему дополнения, которая недоступна - См. также:
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 выводится из введенного пользователем пароля.
- Возвращает:
- вектор инициализации в новом буфере или
null, если этот шифр не использует IV или если IV еще не был установлен.
getParameters
public final AlgorithmParameters getParameters()
Cipher. Возвращаемые параметры могут быть теми же, что использовались для инициализации этого шифра, или могут содержать дополнительные значения параметров по умолчанию или случайные значения, используемые реализацией базового шифра. Если необходимые параметры не были предоставлены и могут быть сгенерированы шифром, возвращаются сгенерированные параметры. В противном случае, возвращается null.
- Возвращает:
- параметры, используемые с этим шифром, или
null
getExemptionMechanism
public final ExemptionMechanism getExemptionMechanism()
Cipher.- Возвращает:
- объект механизма освобождения, используемый с этим объектом
Cipher, илиnull, если этот объектCipherне использует никакого механизма освобождения.
init
public final void init(int opmode, Key key) throws InvalidKeyException
Cipher с ключом. Объект Cipher инициализируется для одной из четырех операций: шифрования, дешифрования, упаковки ключа или распаковки ключа, в зависимости от значения opmode.
Если этот шифр требует каких-либо параметров алгоритма, которые нельзя получить из заданного key, базовая реализация шифра должна сгенерировать необходимые параметры сама (используя параметры по умолчанию или случайные значения, специфичные для поставщика) при инициализации для шифрования или упаковки ключа и выбросить исключение InvalidKeyException, если она инициализируется для дешифрования или распаковки ключа. Сгенерированные параметры можно получить, используя getParameters или getIV (если параметр является IV).
Если этот шифр требует параметров алгоритма, которые нельзя получить из входных параметров, и нет разумных значений по умолчанию, специфичных для поставщика, инициализация обязательно завершится ошибкой.
Если этот шифр (включая его схему обратной связи или дополнения) требует случайных байтов (например, для генерации параметров), он получит их с помощью реализации SecureRandom поставщика с наивысшим приоритетом, установленного в качестве источника случайности. (Если ни один из установленных поставщиков не предоставляет реализацию SecureRandom, будет использоваться системный источник случайности.)
Обратите внимание, что когда объект Cipher инициализирован, он теряет все ранее полученное состояние. Другими словами, инициализация объекта Cipher эквивалентна созданию нового экземпляра этого объекта Cipher и его инициализации.
- Параметры:
-
opmode- режим работы этого объектаCipher(это один из следующих:ENCRYPT_MODE,DECRYPT_MODE,WRAP_MODEилиUNWRAP_MODE) -
key- ключ - Исключения:
-
InvalidKeyException- если заданный ключ не подходит для инициализации этого шифра, или требует параметров алгоритма, которые нельзя определить по заданному ключу, или если у заданного ключа размер ключа превышает максимальный разрешенный размер (определенный из файлов политики юрисдикции) -
UnsupportedOperationException- еслиopmodeявляетсяWRAP_MODEилиUNWRAP_MODE, но режим не реализован базовымCipherSpi -
InvalidParameterException- еслиopmodeне является одним из распознанных значений
init
public final void init(int opmode, Key key, SecureRandom random) throws InvalidKeyException
Объект шифра инициализируется для одной из четырёх операций: шифрования, дешифрования, обертывания ключа или распаковки ключа, в зависимости от значения opmode.
Если для данного шифра требуются какие-либо параметры алгоритма, которые нельзя вывести из заданного key, то реализация базового шифра предполагается генерировать необходимые параметры сама (используя параметры по умолчанию или случайные значения, специфичные для провайдера), если инициализация происходит для шифрования или обертывания ключа, и генерировать исключение InvalidKeyException, если инициализация происходит для дешифрования или распаковки ключа. Сгенерированные параметры можно получить с помощью getParameters или getIV (если параметр является IV).
Если для данного шифра требуются параметры алгоритма, которые нельзя вывести из входных параметров, и нет разумных параметров по умолчанию, специфичных для провайдера, инициализация обязательно завершится неудачей.
Если для данного шифра (включая его схему обратной связи или заполнения) требуются какие-либо случайные байты (например, для генерации параметров), они будут получены из random.
Обратите внимание, что при инициализации объекта шифра, он теряет все ранее полученное состояние. Другими словами, инициализация объекта шифра эквивалентна созданию нового экземпляра этого объекта шифра и его инициализации.
- Parameters:
-
opmode— режим работы этого объекта шифра (это одно из следующих:ENCRYPT_MODE,DECRYPT_MODE,WRAP_MODEилиUNWRAP_MODE) -
key— ключ шифрования -
random— источник случайности - Throws:
-
InvalidKeyException— если заданный ключ не подходит для инициализации этого шифра или требует параметры алгоритма, которые нельзя определить из заданного ключа, или если заданный ключ имеет размер ключа, превышающий максимальный разрешённый размер ключа (определённый из конфигурационных файлов политики юрисдикции) -
UnsupportedOperationException— еслиopmode— этоWRAP_MODEилиUNWRAP_MODE, но режим не реализован базовымCipherSpi -
InvalidParameterException— еслиopmodeне является одним из известных значений
init
public final void init(int opmode, Key key, AlgorithmParameterSpec params) throws InvalidKeyException, InvalidAlgorithmParameterException
Объект шифра инициализируется для одной из четырёх операций: шифрования, дешифрования, обертывания ключа или распаковки ключа, в зависимости от значения opmode.
Если для данного шифра требуются какие-либо параметры алгоритма и params — это null, то реализация базового шифра предполагается генерировать необходимые параметры сама (используя параметры по умолчанию или случайные значения, специфичные для провайдера), если инициализация происходит для шифрования или обертывания ключа, и генерировать исключение InvalidAlgorithmParameterException, если инициализация происходит для дешифрования или распаковки ключа. Сгенерированные параметры можно получить с помощью getParameters или getIV (если параметр является IV).
Если для данного шифра требуются параметры алгоритма, которые нельзя вывести из входных параметров, и нет разумных параметров по умолчанию, специфичных для провайдера, инициализация обязательно завершится неудачей.
Если для данного шифра (включая его схему обратной связи или заполнения) требуются какие-либо случайные байты (например, для генерации параметров), они будут получены с помощью реализации SecureRandom провайдера с наивысшим приоритетом, установленного в системе, как источник случайности. (Если ни один из установленных провайдеров не предоставляет реализацию SecureRandom, будет использован системный источник случайности.)
Обратите внимание, что при инициализации объекта шифра, он теряет все ранее полученное состояние. Другими словами, инициализация объекта шифра эквивалентна созданию нового экземпляра этого объекта шифра и его инициализации.
- Parameters:
-
opmode— режим работы этого объекта шифра (это одно из следующих:ENCRYPT_MODE,DECRYPT_MODE,WRAP_MODEилиUNWRAP_MODE) -
key— ключ шифрования -
params— параметры алгоритма - Throws:
-
InvalidKeyException— если заданный ключ не подходит для инициализации этого шифра или его размер ключа превышает максимальный разрешённый размер ключа (определённый из конфигурационных файлов политики юрисдикции) -
InvalidAlgorithmParameterException— если заданные параметры алгоритма не подходят для данного шифра, или этот шифр требует параметры алгоритма, аparams— этоnull, или заданные параметры алгоритма подразумевают криптографическую силу, которая превышает законные пределы (определённые из конфигурационных файлов политики юрисдикции) -
UnsupportedOperationException— еслиopmode— этоWRAP_MODEилиUNWRAP_MODE, но режим не реализован базовымCipherSpi -
InvalidParameterException— еслиopmodeне является одним из известных значений
init
public final void init(int opmode, Key key, AlgorithmParameterSpec params, SecureRandom random) throws InvalidKeyException, InvalidAlgorithmParameterException
Объект шифра инициализируется для одной из четырёх операций: шифрования, дешифрования, обертывания ключа или распаковки ключа, в зависимости от значения opmode.
Если для данного шифра требуются какие-либо параметры алгоритма и params — это null, то реализация базового шифра предполагается генерировать необходимые параметры сама (используя параметры по умолчанию или случайные значения, специфичные для провайдера), если инициализация происходит для шифрования или обертывания ключа, и генерировать исключение InvalidAlgorithmParameterException, если инициализация происходит для дешифрования или распаковки ключа. Сгенерированные параметры можно получить с помощью getParameters или getIV (если параметр является IV).
Если для данного шифра требуются параметры алгоритма, которые нельзя вывести из входных параметров, и нет разумных параметров по умолчанию, специфичных для провайдера, инициализация обязательно завершится неудачей.
Если для данного шифра (включая его схему обратной связи или заполнения) требуются какие-либо случайные байты (например, для генерации параметров), они будут получены из random.
Обратите внимание, что при инициализации объекта шифра, он теряет все ранее полученное состояние. Другими словами, инициализация объекта шифра эквивалентна созданию нового экземпляра этого объекта шифра и его инициализации.
- Parameters:
-
opmode— режим работы этого объекта шифра (это одно из следующих:ENCRYPT_MODE,DECRYPT_MODE,WRAP_MODEилиUNWRAP_MODE) -
key— ключ шифрования -
params— параметры алгоритма -
random— источник случайности - Throws:
-
InvalidKeyException— если заданный ключ не подходит для инициализации этого шифра или его размер ключа превышает максимальный разрешённый размер ключа (определённый из конфигурационных файлов политики юрисдикции) -
InvalidAlgorithmParameterException— если заданные параметры алгоритма не подходят для данного шифра, или этот шифр требует параметры алгоритма, аparams— этоnull, или заданные параметры алгоритма подразумевают криптографическую силу, которая превышает законные пределы (определённые из конфигурационных файлов политики юрисдикции) -
UnsupportedOperationException— еслиopmode— этоWRAP_MODEилиUNWRAP_MODE, но режим не реализован базовымCipherSpi -
InvalidParameterException— еслиopmodeне является одним из известных значений
init
public final void init(int opmode, Key key, AlgorithmParameters params) throws InvalidKeyException, InvalidAlgorithmParameterException
Объект шифра инициализируется для одной из следующих четырёх операций: шифрования, дешифрования, обертывания ключа или распаковки ключа, в зависимости от значения opmode.
Если этому шифру требуются какие-либо параметры алгоритма, и params является null, реализация базового шифра должна сгенерировать необходимые параметры самостоятельно (используя параметры по умолчанию или случайные значения, специфичные для поставщика), если она инициализируется для шифрования или обертывания ключа, и выбросить исключение InvalidAlgorithmParameterException, если она инициализируется для дешифрования или распаковки ключа. Сгенерированные параметры можно получить с помощью getParameters или getIV (если параметр является IV).
Если этому шифру необходимы параметры алгоритма, которые нельзя вывести из входных параметров, и нет разумных значений по умолчанию, специфичных для поставщика, инициализация обязательно завершится неудачей.
Если этому шифру (включая его схему обратной связи или заполнения) требуются какие-либо случайные байты (например, для генерации параметров), они будут получены с помощью реализации SecureRandom поставщика с наивысшим приоритетом в качестве источника случайности. (Если ни один из установленных поставщиков не предоставляет реализацию SecureRandom, будет использован системный источник случайности.)
Обратите внимание, что при инициализации объекта шифра он теряет все ранее полученное состояние. Другими словами, инициализация объекта шифра эквивалентна созданию нового экземпляра этого объекта шифра и его инициализации.
- Parameters:
-
opmode- режим работы этого объекта шифра (это одно из следующих значений:ENCRYPT_MODE,DECRYPT_MODE,WRAP_MODEилиUNWRAP_MODE) -
key- ключ шифрования -
params- параметры алгоритма - Throws:
-
InvalidKeyException- если заданный ключ не подходит для инициализации этого шифра, или его размер ключа превышает максимально допустимый размер ключа (определяется на основе файлов политики юрисдикции). -
InvalidAlgorithmParameterException- если заданные параметры алгоритма не подходят для этого шифра, или этому шифру требуются параметры алгоритма, иparamsявляетсяnull, или заданные параметры алгоритма подразумевают криптографическую силу, которая превышает правовые ограничения (определяется на основе файлов политики юрисдикции). -
UnsupportedOperationException- еслиopmodeявляетсяWRAP_MODEилиUNWRAP_MODE, но режим не реализован базовымCipherSpi -
InvalidParameterException- еслиopmodeне является одним из распознаваемых значений
init
public final void init(int opmode, Key key, AlgorithmParameters params, SecureRandom random) throws InvalidKeyException, InvalidAlgorithmParameterException
Объект шифра инициализируется для одной из следующих четырёх операций: шифрования, дешифрования, обертывания ключа или распаковки ключа, в зависимости от значения opmode.
Если этому шифру требуются какие-либо параметры алгоритма, и params является null, реализация базового шифра должна сгенерировать необходимые параметры самостоятельно (используя параметры по умолчанию или случайные значения, специфичные для поставщика), если она инициализируется для шифрования или обертывания ключа, и выбросить исключение InvalidAlgorithmParameterException, если она инициализируется для дешифрования или распаковки ключа. Сгенерированные параметры можно получить с помощью getParameters или getIV (если параметр является IV).
Если этому шифру необходимы параметры алгоритма, которые нельзя вывести из входных параметров, и нет разумных значений по умолчанию, специфичных для поставщика, инициализация обязательно завершится неудачей.
Если этому шифру (включая его схему обратной связи или заполнения) требуются какие-либо случайные байты (например, для генерации параметров), они будут получены из random.
Обратите внимание, что при инициализации объекта шифра он теряет все ранее полученное состояние. Другими словами, инициализация объекта шифра эквивалентна созданию нового экземпляра этого объекта шифра и его инициализации.
- Parameters:
-
opmode- режим работы этого объекта шифра (это одно из следующих значений:ENCRYPT_MODE,DECRYPT_MODE,WRAP_MODEилиUNWRAP_MODE) -
key- ключ шифрования -
params- параметры алгоритма -
random- источник случайности - Throws:
-
InvalidKeyException- если заданный ключ не подходит для инициализации этого шифра, или его размер ключа превышает максимально допустимый размер ключа (определяется на основе файлов политики юрисдикции) -
InvalidAlgorithmParameterException- если заданные параметры алгоритма не подходят для этого шифра, или этому шифру требуются параметры алгоритма, иparamsявляетсяnull, или заданные параметры алгоритма подразумевают криптографическую силу, которая превышает правовые ограничения (определяется на основе файлов политики юрисдикции) -
UnsupportedOperationException- еслиopmodeявляетсяWRAP_MODEилиUNWRAP_MODE, но режим не реализован базовымCipherSpi -
InvalidParameterException- еслиopmodeне является одним из распознаваемых значений
init
public final void init(int opmode, Certificate certificate) throws InvalidKeyException
Объект шифра инициализируется для одной из следующих четырёх операций: шифрования, дешифрования, обертывания ключа или распаковки ключа, в зависимости от значения opmode.
Если сертификат типа X.509 и имеет поле расширения key usage, помеченное как критическое, и значение поля расширения key usage подразумевает, что открытый ключ в сертификате и соответствующий закрытый ключ не должны использоваться для операции, представленной значением opmode, выбрасывается исключение InvalidKeyException.
Если этому шифру требуются какие-либо параметры алгоритма, которые нельзя вывести из открытого ключа в заданном сертификате, реализация базового шифра должна сгенерировать необходимые параметры самостоятельно (используя параметры по умолчанию или случайные значения, специфичные для поставщика), если она инициализируется для шифрования или обертывания ключа, и выбросить исключение InvalidKeyException, если она инициализируется для дешифрования или распаковки ключа. Сгенерированные параметры можно получить с помощью getParameters или getIV (если параметр является IV).
Если этому шифру необходимы параметры алгоритма, которые нельзя вывести из входных параметров, и нет разумных значений по умолчанию, специфичных для поставщика, инициализация обязательно завершится неудачей.
Если этому шифру (включая его схему обратной связи или заполнения) требуются какие-либо случайные байты (например, для генерации параметров), они будут получены с помощью реализации SecureRandom поставщика с наивысшим приоритетом в качестве источника случайности. (Если ни один из установленных поставщиков не предоставляет реализацию SecureRandom, будет использован системный источник случайности.)
Обратите внимание, что при инициализации объекта шифра он теряет все ранее полученное состояние. Другими словами, инициализация объекта шифра эквивалентна созданию нового экземпляра этого объекта шифра и его инициализации.
- Parameters:
-
opmode- режим работы этого объекта шифра (это одно из следующих значений:ENCRYPT_MODE,DECRYPT_MODE,WRAP_MODEилиUNWRAP_MODE) -
certificate- сертификат - Throws:
-
InvalidKeyException- если открытый ключ в заданном сертификате не подходит для инициализации этого шифра, или этому шифру требуются параметры алгоритма, которые нельзя определить из открытого ключа в заданном сертификате, или размер ключа открытого ключа в заданном сертификате превышает максимально допустимый размер ключа (определяется политиками юрисдикции). -
UnsupportedOperationException- еслиopmodeявляетсяWRAP_MODEилиUNWRAP_MODE, но режим не реализован базовымCipherSpi -
InvalidParameterException- еслиopmodeне является одним из распознаваемых значений
init
public final void init(int opmode, Certificate certificate, SecureRandom random) throws InvalidKeyException
Cipher с открытым ключом из данного сертификата и источником случайности. Объект Cipher инициализируется для одной из следующих четырёх операций: шифрования, дешифрования, обертывания ключа или распаковки ключа, в зависимости от значения opmode.
Если сертификат типа X.509 и имеет поле расширения key usage, помеченное как критическое, и значение поля расширения key usage подразумевает, что открытый ключ в сертификате и соответствующий ему закрытый ключ не должны использоваться для операции, представленной значением opmode, будет брошено исключение InvalidKeyException.
Если для этого шифра требуются какие-либо параметры алгоритма, которые нельзя вывести из открытого ключа в данном certificate, то реализация основного шифра должна сгенерировать требуемые параметры сама (используя параметры по умолчанию или случайные значения, специфичные для провайдера), если она инициализируется для шифрования или обертывания ключа, и бросить исключение InvalidKeyException, если она инициализируется для дешифрования или распаковки ключа. Сгенерированные параметры можно получить с помощью getParameters или getIV (если параметром является IV).
Если для этого шифра требуются параметры алгоритма, которые нельзя вывести из входных параметров, и нет разумных значений по умолчанию, специфичных для провайдера, инициализация обязательно завершится неудачно.
Если для этого шифра (включая схему обратной связи или заполнения) требуются случайные байты (например, для генерации параметров), они будут получены из random.
Обратите внимание, что при инициализации объекта Cipher он теряет все ранее полученное состояние. Другими словами, инициализация объекта Cipher эквивалентна созданию нового экземпляра этого объекта Cipher и его инициализации.
- Parameters:
-
opmode- режим работы этого объектаCipher(он может быть одним из следующих:ENCRYPT_MODE,DECRYPT_MODE,WRAP_MODEилиUNWRAP_MODE) -
certificate- сертификат -
random- источник случайности - Throws:
-
InvalidKeyException- если открытый ключ в данном сертификате не подходит для инициализации данного шифра, или этот шифр требует параметров алгоритма, которые нельзя определить из открытого ключа в данном сертификате, или размер ключа открытого ключа в данном сертификате превышает максимальный разрешённый размер ключа (как определяется в конфигурационных файлах политики юрисдикции) -
UnsupportedOperationException- еслиopmodeравенWRAP_MODEилиUNWRAP_MODE, но режим не реализован базовымCipherSpi -
InvalidParameterException- еслиopmodeне является одним из распознанных значений
update
public final byte[] update(byte[] input)
Cipher), обрабатывая ещё один фрагмент данных. Байты в буфере input обрабатываются, и результат сохраняется в новом буфере.
Если длина input равна нулю, этот метод возвращает null.
- Parameters:
-
input- буфер входных данных - Returns:
- новый буфер с результатом или
null, если этот шифр является блочным шифром, и входные данные слишком коротки для создания нового блока - Throws:
-
IllegalStateException- если объектCipherнаходится в неправильном состоянии (например, не был инициализирован или не находится в состоянииENCRYPT_MODEилиDECRYPT_MODE)
update
public final byte[] update(byte[] input, int inputOffset, int inputLen)
Cipher), обрабатывая ещё один фрагмент данных. Первые inputLen байтов в буфере input, начиная с inputOffset включительно, обрабатываются, и результат сохраняется в новом буфере.
Если inputLen равно нулю, этот метод возвращает null.
- Parameters:
-
input- буфер входных данных -
inputOffset- смещение вinput, где начинаются входные данные -
inputLen- длина входных данных - Returns:
- новый буфер с результатом или
null, если этот шифр является блочным шифром, и входные данные слишком коротки для создания нового блока. - Throws:
-
IllegalStateException- если объектCipherнаходится в неправильном состоянии (например, не был инициализирован или не находится в состоянииENCRYPT_MODEилиDECRYPT_MODE)
update
public final int update(byte[] input, int inputOffset, int inputLen, byte[] output) throws ShortBufferException
Cipher), обрабатывая ещё один фрагмент данных. Первые inputLen байтов в буфере input, начиная с inputOffset включительно, обрабатываются, и результат сохраняется в буфер output.
Если буфер output слишком мал для хранения результата, будет брошено исключение ShortBufferException. В этом случае повторите этот вызов с более крупным буфером вывода. Используйте getOutputSize для определения размера буфера вывода.
Если inputLen равно нулю, этот метод возвращает ноль.
Примечание: этот метод должен быть безопасным для копирования, что означает, что буферы input и output могут ссылаться на один и тот же массив байтов, и при копировании результата в буфер вывода не перезаписываются необработанные входные данные.
- Parameters:
-
input- буфер входных данных -
inputOffset- смещение вinput, где начинаются входные данные -
inputLen- длина входных данных -
output- буфер для результата - Returns:
- количество байтов, сохранённых в
output - Throws:
-
IllegalStateException- если объектCipherнаходится в неправильном состоянии (например, не был инициализирован или не находится в состоянииENCRYPT_MODEилиDECRYPT_MODE) -
ShortBufferException- если предоставленный буфер вывода слишком мал для хранения результата
update
public final int update(byte[] input, int inputOffset, int inputLen, byte[] output, int outputOffset) throws ShortBufferException
Cipher), обрабатывая ещё один фрагмент данных. Первые inputLen байтов в буфере input, начиная с inputOffset включительно, обрабатываются, и результат сохраняется в буфер output, начиная с outputOffset включительно.
Если буфер output слишком мал для хранения результата, будет брошено исключение ShortBufferException. В этом случае повторите этот вызов с более крупным буфером вывода. Используйте getOutputSize для определения размера буфера вывода.
Если inputLen равно нулю, этот метод возвращает ноль.
Примечание: этот метод должен быть безопасным для копирования, что означает, что буферы input и output могут ссылаться на один и тот же массив байтов, и при копировании результата в буфер вывода не перезаписываются необработанные входные данные.
- Parameters:
-
input- буфер входных данных -
inputOffset- смещение вinput, где начинаются входные данные -
inputLen- длина входных данных -
output- буфер для результата -
outputOffset- смещение вoutput, где хранится результат - Returns:
- количество байтов, сохранённых в
output - Throws:
-
IllegalStateException- если объектCipherнаходится в неправильном состоянии (например, не был инициализирован или не находится в состоянииENCRYPT_MODEилиDECRYPT_MODE) -
ShortBufferException- если предоставленный буфер вывода слишком мал для хранения результата
update
public final int update(ByteBuffer input, ByteBuffer output) throws ShortBufferException
Cipher), обрабатывая ещё один фрагмент данных. Все input.remaining() байты, начиная с input.position(), обрабатываются. Результат сохраняется в буфере вывода. По завершении метод вернёт позицию буфера входных данных, равную его пределу; его предел не изменится. Позиция буфера вывода будет продвинута на n, где n — значение, возвращаемое этим методом; предел буфера вывода не изменится.
Если output.remaining() байтов недостаточно для хранения результата, будет брошено исключение ShortBufferException. В этом случае повторите вызов с более крупным буфером вывода. Используйте getOutputSize для определения размера буфера вывода.
Примечание: этот метод должен быть безопасным для копирования, что означает, что буферы input и output могут ссылаться на один и тот же блок памяти, и при копировании результата в буфер вывода не перезаписываются необработанные входные данные.
- Parameters:
-
input- буфер входных данных ByteBuffer -
output- буфер вывода ByteByffer - Returns:
- количество байтов, сохранённых в
output - Throws:
-
IllegalStateException- если объектCipherнаходится в неправильном состоянии (например, не был инициализирован или не находится в состоянииENCRYPT_MODEилиDECRYPT_MODE) -
IllegalArgumentException- если входной и выходной буферы — один и тот же объект -
ReadOnlyBufferException- если буфер вывода является только для чтения -
ShortBufferException- если в буфере вывода недостаточно места - Since:
- 1.5
doFinal
public final byte[] doFinal() throws IllegalBlockSizeException, BadPaddingException
Cipher объект. Данные, которые могли быть буферизованы во время предыдущей операции update, обрабатываются с применением (если запрошено) дополнения. Если используется режим AEAD, такой как GCM/CCM, тег аутентификации добавляется при шифровании или проверяется при дешифровании. Результат сохраняется в новом буфере.
После завершения этот метод сбрасывает этот Cipher объект в состояние, в котором он находился при предыдущей инициализации через вызов init. То есть, объект сбрасывается и готов к шифрованию или дешифрованию (в зависимости от режима операции, указанного в вызове init) дополнительных данных.
Примечание: если возникает какое-либо исключение, этот Cipher объект может потребовать сброса перед повторным использованием.
- Возвращает:
- новый буфер с результатом
- Выбрасывает:
-
IllegalStateException- если этотCipherобъект находится в неправильном состоянии (например, не был инициализирован или не находится в состоянииENCRYPT_MODEилиDECRYPT_MODE) -
IllegalBlockSizeException- если этот шифр является блочным шифром, дополнение не запрошено (только в режиме шифрования), и общая длина входных данных, обработанных этим шифром, не кратна размеру блока; или если этот алгоритм шифрования не может обработать предоставленные входные данные. -
BadPaddingException- если этотCipherобъект работает в режиме дешифрования, и (распаковка) дополнение запрошено, но дешифрованные данные не ограничены соответствующими байтами дополнения -
AEADBadTagException- если этотCipherобъект дешифрует в режиме AEAD (таком как GCM/CCM), и полученный тег аутентификации не совпадает с вычисленным значением
doFinal
public final int doFinal(byte[] output, int outputOffset) throws IllegalBlockSizeException, ShortBufferException, BadPaddingException
Cipher объект. Данные, которые могли быть буферизованы во время предыдущей операции update, обрабатываются с применением (если запрошено) дополнения. Если используется режим AEAD, такой как GCM/CCM, тег аутентификации добавляется при шифровании или проверяется при дешифровании. Результат сохраняется в буфере output, начиная с позиции outputOffset включительно.
Если буфер output слишком мал для хранения результата, выбрасывается исключение ShortBufferException. В этом случае повторите этот вызов с буфером большего размера. Используйте getOutputSize, чтобы определить, какого размера должен быть буфер вывода.
После завершения этот метод сбрасывает этот Cipher объект в состояние, в котором он находился при предыдущей инициализации через вызов init. То есть, объект сбрасывается и готов к шифрованию или дешифрованию (в зависимости от режима операции, указанного в вызове init) дополнительных данных.
Примечание: если возникает какое-либо исключение, этот Cipher объект может потребовать сброса перед повторным использованием.
- Параметры:
-
output- буфер для результата -
outputOffset- смещение вoutput, где хранится результат - Возвращает:
- количество байтов, сохранённых в
output - Выбрасывает:
-
IllegalStateException- если этотCipherобъект находится в неправильном состоянии (например, не был инициализирован или не находится в состоянииENCRYPT_MODEилиDECRYPT_MODE) -
IllegalBlockSizeException- если этот шифр является блочным шифром, дополнение не запрошено (только в режиме шифрования), и общая длина входных данных, обработанных этим шифром, не кратна размеру блока; или если этот алгоритм шифрования не может обработать предоставленные входные данные. -
ShortBufferException- если предоставленный буфер вывода слишком мал для хранения результата -
BadPaddingException- если этотCipherобъект работает в режиме дешифрования, и (распаковка) дополнение запрошено, но дешифрованные данные не ограничены соответствующими байтами дополнения -
AEADBadTagException- если этотCipherобъект дешифрует в режиме AEAD (таком как GCM/CCM), и полученный тег аутентификации не совпадает с вычисленным значением
doFinal
public final byte[] doFinal(byte[] input) throws IllegalBlockSizeException, BadPaddingException
Cipher объект. Байты в буфере input и любые входные байты, которые могли быть буферизованы во время предыдущей операции update, обрабатываются с применением (если запрошено) дополнения. Если используется режим AEAD, такой как GCM/CCM, тег аутентификации добавляется при шифровании или проверяется при дешифровании. Результат сохраняется в новом буфере.
После завершения этот метод сбрасывает этот Cipher объект в состояние, в котором он находился при предыдущей инициализации через вызов init. То есть, объект сбрасывается и готов к шифрованию или дешифрованию (в зависимости от режима операции, указанного в вызове init) дополнительных данных.
Примечание: если возникает какое-либо исключение, этот Cipher объект может потребовать сброса перед повторным использованием.
- Параметры:
-
input- буфер входных данных - Возвращает:
- новый буфер с результатом
- Выбрасывает:
-
IllegalStateException- если этотCipherобъект находится в неправильном состоянии (например, не был инициализирован или не находится в состоянииENCRYPT_MODEилиDECRYPT_MODE) -
IllegalBlockSizeException- если этот шифр является блочным шифром, дополнение не запрошено (только в режиме шифрования), и общая длина входных данных, обработанных этим шифром, не кратна размеру блока; или если этот алгоритм шифрования не может обработать предоставленные входные данные. -
BadPaddingException- если этотCipherобъект работает в режиме дешифрования, и (распаковка) дополнение запрошено, но дешифрованные данные не ограничены соответствующими байтами дополнения -
AEADBadTagException- если этотCipherобъект дешифрует в режиме AEAD (таком как GCM/CCM), и полученный тег аутентификации не совпадает с вычисленным значением
doFinal
public final byte[] doFinal(byte[] input, int inputOffset, int inputLen) throws IllegalBlockSizeException, BadPaddingException
Cipher объект. Первые inputLen байтов в буфере input, начиная со смещения inputOffset включительно, и любые входные байты, которые могли быть буферизованы во время предыдущей операции update, обрабатываются с применением (если запрошено) дополнения. Если используется режим AEAD, такой как GCM/CCM, тег аутентификации добавляется при шифровании или проверяется при дешифровании. Результат сохраняется в новом буфере.
После завершения этот метод сбрасывает этот Cipher объект в состояние, в котором он находился при предыдущей инициализации через вызов init. То есть, объект сбрасывается и готов к шифрованию или дешифрованию (в зависимости от режима операции, указанного в вызове init) дополнительных данных.
Примечание: если возникает какое-либо исключение, этот Cipher объект может потребовать сброса перед повторным использованием.
- Параметры:
-
input- буфер входных данных -
inputOffset- смещение вinput, где начинаются входные данные -
inputLen- длина входных данных - Возвращает:
- новый буфер с результатом
- Выбрасывает:
-
IllegalStateException- если этотCipherобъект находится в неправильном состоянии (например, не был инициализирован или не находится в состоянииENCRYPT_MODEилиDECRYPT_MODE) -
IllegalBlockSizeException- если этот шифр является блочным шифром, дополнение не запрошено (только в режиме шифрования), и общая длина входных данных, обработанных этим шифром, не кратна размеру блока; или если этот алгоритм шифрования не может обработать предоставленные входные данные. -
BadPaddingException- если этотCipherобъект работает в режиме дешифрования, и (распаковка) дополнение запрошено, но дешифрованные данные не ограничены соответствующими байтами дополнения -
AEADBadTagException- если этотCipherобъект дешифрует в режиме AEAD (таком как GCM/CCM), и полученный тег аутентификации не совпадает с вычисленным значением
doFinal
public final int doFinal(byte[] input, int inputOffset, int inputLen, byte[] output) throws ShortBufferException, IllegalBlockSizeException, BadPaddingException
Cipher объект. Первые inputLen байты в буфере input, начиная с inputOffset включительно, и любые входные байты, которые могли быть буферизованы во время предыдущей операции update, обрабатываются с применением заполнения (если запрошено). Если используется режим AEAD, такой как GCM/CCM, тег аутентификации добавляется при шифровании или проверяется при расшифровании. Результат сохраняется в буфере output.
Если буфер output слишком мал для хранения результата, выбрасывается исключение ShortBufferException. В этом случае повторите этот вызов с большим буфером вывода. Используйте getOutputSize, чтобы определить, каким должен быть размер буфера вывода.
После завершения этот метод сбрасывает этот Cipher объект в состояние, в котором он находился при предыдущей инициализации с помощью вызова init. То есть объект сброшен и готов для шифрования или дешифрования (в зависимости от режима операции, указанного в вызове init) дополнительных данных.
Примечание: если возникает какое-либо исключение, этот Cipher объект может потребовать сброса перед повторным использованием.
Примечание: этот метод должен быть безопасным для копирования, что означает, что буферы input и output могут ссылаться на один и тот же массив байтов, и при копировании результата в буфер вывода не перезаписываются непрошедшие обработку входные данные.
- Параметры:
-
input- буфер ввода -
inputOffset- смещение вinput, где начинается ввод -
inputLen- длина ввода -
output- буфер для результата - Возвращает:
- количество байтов, сохранённых в
output - Исключения:
-
IllegalStateException- если этотCipherобъект находится в неправильном состоянии (например, не был инициализирован или не находится в состоянииENCRYPT_MODEилиDECRYPT_MODE) -
IllegalBlockSizeException- если этот шифр является блочным шифром, заполнение не запрошено (только в режиме шифрования), и общая длина входных данных, обработанных этим шифром, не кратна размеру блока; или если этот алгоритм шифрования не может обработать предоставленные входные данные. -
ShortBufferException- если заданный буфер вывода слишком мал для хранения результата -
BadPaddingException- если этотCipherобъект находится в режиме расшифрования, и (распаковка) заполнение запрошено, но расшифрованные данные не ограничены соответствующими байтами заполнения -
AEADBadTagException- если этотCipherобъект расшифровывает в режиме AEAD (например, GCM/CCM), и полученный тег аутентификации не совпадает с вычисленным значением
doFinal
public final int doFinal(byte[] input, int inputOffset, int inputLen, byte[] output, int outputOffset) throws ShortBufferException, IllegalBlockSizeException, BadPaddingException
Cipher объект. Первые inputLen байты в буфере input, начиная с inputOffset включительно, и любые входные байты, которые могли быть буферизованы во время предыдущей операции update, обрабатываются с применением заполнения (если запрошено). Если используется режим AEAD, такой как GCM/CCM, тег аутентификации добавляется при шифровании или проверяется при расшифровании. Результат сохраняется в буфере output, начиная со смещения outputOffset включительно.
Если буфер output слишком мал для хранения результата, выбрасывается исключение ShortBufferException. В этом случае повторите этот вызов с большим буфером вывода. Используйте getOutputSize, чтобы определить, каким должен быть размер буфера вывода.
После завершения этот метод сбрасывает этот Cipher объект в состояние, в котором он находился при предыдущей инициализации с помощью вызова init. То есть объект сброшен и готов для шифрования или дешифрования (в зависимости от режима операции, указанного в вызове init) дополнительных данных.
Примечание: если возникает какое-либо исключение, этот Cipher объект может потребовать сброса перед повторным использованием.
Примечание: этот метод должен быть безопасным для копирования, что означает, что буферы input и output могут ссылаться на один и тот же массив байтов, и при копировании результата в буфер вывода не перезаписываются непрошедшие обработку входные данные.
- Параметры:
-
input- буфер ввода -
inputOffset- смещение вinput, где начинается ввод -
inputLen- длина ввода -
output- буфер для результата -
outputOffset- смещение вoutput, где хранится результат - Возвращает:
- количество байтов, сохранённых в
output - Исключения:
-
IllegalStateException- если этотCipherобъект находится в неправильном состоянии (например, не был инициализирован или не находится в состоянииENCRYPT_MODEилиDECRYPT_MODE) -
IllegalBlockSizeException- если этот шифр является блочным шифром, заполнение не запрошено (только в режиме шифрования), и общая длина входных данных, обработанных этим шифром, не кратна размеру блока; или если этот алгоритм шифрования не может обработать предоставленные входные данные. -
ShortBufferException- если заданный буфер вывода слишком мал для хранения результата -
BadPaddingException- если этотCipherобъект находится в режиме расшифрования, и (распаковка) заполнение запрошено, но расшифрованные данные не ограничены соответствующими байтами заполнения -
AEADBadTagException- если этотCipherобъект расшифровывает в режиме AEAD (например, GCM/CCM), и полученный тег аутентификации не совпадает с вычисленным значением
doFinal
public final int doFinal(ByteBuffer input, ByteBuffer output) throws ShortBufferException, IllegalBlockSizeException, BadPaddingException
Cipher объект. Обрабатываются все input.remaining() байты, начиная с input.position(). Если используется режим AEAD, такой как GCM/CCM, тег аутентификации добавляется при шифровании или проверяется при расшифровании. Результат сохраняется в буфере вывода. По возвращении позиция буфера ввода будет равна его пределу; его предел не изменится. Позиция буфера вывода будет смещена на n, где n - значение, возвращаемое этим методом; предел буфера вывода не изменится.
Если output.remaining() байтов недостаточно для хранения результата, выбрасывается исключение ShortBufferException. В этом случае повторите этот вызов с большим буфером вывода. Используйте getOutputSize, чтобы определить, каким должен быть размер буфера вывода.
После завершения этот метод сбрасывает этот Cipher объект в состояние, в котором он находился при предыдущей инициализации с помощью вызова init. То есть объект сброшен и готов для шифрования или дешифрования (в зависимости от режима операции, указанного в вызове init) дополнительных данных.
Примечание: если возникает какое-либо исключение, этот Cipher объект может потребовать сброса перед повторным использованием.
Примечание: этот метод должен быть безопасным для копирования, что означает, что буферы input и output могут ссылаться на один и тот же массив байтов, и при копировании результата в буфер вывода не перезаписываются непрошедшие обработку входные данные.
- Параметры:
-
input- буфер ввода ByteBuffer -
output- буфер вывода ByteBuffer - Возвращает:
- количество байтов, сохранённых в
output - Исключения:
-
IllegalStateException- если этотCipherобъект находится в неправильном состоянии (например, не был инициализирован или не находится в состоянииENCRYPT_MODEилиDECRYPT_MODE) -
IllegalArgumentException- если входной и выходной буферы - один и тот же объект -
ReadOnlyBufferException- если буфер вывода только для чтения -
IllegalBlockSizeException- если этот шифр является блочным шифром, заполнение не запрошено (только в режиме шифрования), и общая длина входных данных, обработанных этим шифром, не кратна размеру блока; или если этот алгоритм шифрования не может обработать предоставленные входные данные. -
ShortBufferException- если в буфере вывода недостаточно места -
BadPaddingException- если этотCipherобъект находится в режиме расшифрования, и (распаковка) заполнение запрошено, но расшифрованные данные не ограничены соответствующими байтами заполнения -
AEADBadTagException- если этотCipherобъект расшифровывает в режиме AEAD (например, GCM/CCM), и полученный тег аутентификации не совпадает с вычисленным значением - С тех пор как:
- 1.5
wrap
public final byte[] wrap(Key key) throws IllegalBlockSizeException, InvalidKeyException
- Параметры:
-
key- ключ, который нужно заворачивать - Возвращает:
- завернутый ключ
- Исключения:
-
IllegalStateException- если этотCipherобъект находится в неправильном состоянии (например, не был инициализирован или не находится в состоянииWRAP_MODE) -
IllegalBlockSizeException- если этот шифр является блочным шифром, заполнение не запрошено, и длина кодирования ключа, который нужно заворачивать, не кратна размеру блока -
InvalidKeyException- если невозможно или небезопасно заворачивать ключ с помощью этого шифра (например, защищённый аппаратный ключ передаётся программному шифру) -
UnsupportedOperationException- если соответствующий метод вCipherSpiне поддерживается
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
Integer.MAX_VALUE. Дополнительную информацию о значениях ключей по умолчанию и файлах политики юрисдикции JCE см. в разделе Криптографические параметры и ограничения в Документации поставщиков JDK.- Параметры:
-
transformation- преобразование шифра - Возвращает:
- максимальную длину ключа в битах или
Integer.MAX_VALUE - Исключение:
-
NullPointerException- еслиtransformationявляетсяnull -
NoSuchAlgorithmException- еслиtransformationне является допустимым преобразованием, т. е. в формате «алгоритм» или «алгоритм/режим/заполнение» - С:
- 1.5
getMaxAllowedParameterSpec
public static final AlgorithmParameterSpec getMaxAllowedParameterSpec(String transformation) throws NoSuchAlgorithmException
Cipher в соответствии с файлом политики юрисдикции. Если установлены файлы политики юрисдикции JCE с неограниченной силой или в файле политики нет максимального ограничения на параметры для указанного преобразования, будет возвращено null.- Параметры:
-
transformation- преобразование шифра - Возвращает:
- объект {code AlgorithmParameterSpec}, содержащий максимальное значение или
null - Исключение:
-
NullPointerException- еслиtransformationявляетсяnull -
NoSuchAlgorithmException- еслиtransformationне является допустимым преобразованием, т. е. в формате «алгоритм» или «алгоритм/режим/заполнение» - С:
- 1.5
updateAAD
public final void updateAAD(byte[] src)
Вызовы этого метода предоставляют 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 объекту 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 объекту Cipher при работе в режимах, таких как AEAD (GCM/CCM). Если этот объект Cipher работает в режиме GCM или CCM, все данные AAD должны быть предоставлены перед началом операций с зашифрованным текстом (через методы update и doFinal).
Все байты src.remaining(), начиная со смещения src.position(), обрабатываются. По возвращении позиция входного буфера будет равна его пределу; его предел не изменится.
- Параметры:
-
src- буфер, содержащий данные AAD - Исключение:
-
IllegalArgumentException- еслиsrc ByteBufferявляетсяnull -
IllegalStateException- если этот объектCipherнаходится в неправильном состоянии (например, не был инициализирован или не находится в состоянииENCRYPT_MODEилиDECRYPT_MODE), не принимает AAD или если работает в режиме GCM или CCM и один из методовupdateуже был вызван для активной операции шифрования/расшифровки -
UnsupportedOperationException- если соответствующий метод вCipherSpiне был переопределен реализацией - С:
- 1.7
toString
public String toString()
Cipher.
© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://download.java.net/java/early_access/jdk24/docs/api/java.base/javax/crypto/Cipher.html