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