Класс Cipher
- Прямые известные подклассы:
NullCipher
public class Cipher extends Object
Чтобы создать объект Cipher, приложение вызывает метод getInstance шифра и передаёт ему имя требуемого преобразования. При необходимости можно указать имя поставщика.
Преобразование — это строка, описывающая операцию (или набор операций), которую нужно выполнить над заданными входными данными для получения выходных данных. Преобразование всегда включает имя криптографического алгоритма (например, AES) и может дополнительно содержать режим обратной связи и схему дополнения.
Преобразование имеет следующий вид:
- "algorithm/mode/padding" или
- "algorithm"
(во втором случае используются значения режима и схемы дополнения по умолчанию, заданные поставщиком). Например, допустимым преобразованием является следующее:
Cipher c = Cipher.getInstance("AES/CBC/PKCS5Padding");
При использовании таких режимов, как CFB и OFB, блочные шифры могут шифровать данные блоками размером меньше фактического размера блока шифра. При запросе такого режима можно при необходимости указать количество обрабатываемых за раз битов, добавив это число к имени режима, как показано в преобразованиях "AES/CFB8/NoPadding" и "AES/OFB32/PKCS5Padding". Если число не указано, используется значение по умолчанию, заданное поставщиком. (Значения по умолчанию для поставщиков JDK см. в документации по поставщикам JDK.) Таким образом, с помощью 8-битного режима, например CFB8 или OFB8, блочные шифры можно преобразовать в потоковые шифры с побайтовой обработкой. Режимы, такие как аутентифицированное шифрование с ассоциированными данными (AEAD), обеспечивают аутентичность как конфиденциальных данных, так и дополнительных ассоциированных данных (AAD), которые не шифруются. (Дополнительные сведения об алгоритмах AEAD и AAD см. в RFC 5116 .) При вычислении тега аутентификации могут использоваться как конфиденциальные данные, так и данные AAD (аналогично Mac). Этот тег добавляется к шифротексту при шифровании и проверяется при расшифровании.
Режимы AEAD выполняют все вычисления аутентичности AAD до начала вычислений аутентичности шифротекста. Чтобы реализациям не приходилось буферизовать шифротекст внутри себя, все данные AAD должны быть переданы их реализациям (с помощью методов updateAAD) до обработки шифротекста (с помощью методов update и doFinal).
После завершения операции методом doFinal объект Cipher попытается сбросить состояние до состояния, соответствующего последнему вызову init, что позволит выполнять дополнительные операции. Успешный сброс зависит от режима (ENCRYPT_MODE или DECRYPT_MODE) и алгоритма. Алгоритмы AEAD могут не выполнять сброс, чтобы предотвратить атаки подделки, обусловленные требованиями уникальности ключа и вектора инициализации (IV).
При вызове методов update или doFinal будет выброшено исключение IllegalStateException, если сброс не произошёл. Вызов init повторно инициализирует объект Cipher с новыми параметрами.
Каждая реализация платформы Java обязана поддерживать следующие стандартные преобразования объектов Cipher с указанными в скобках размерами ключей:
-
AES/CBC/NoPadding(128) -
AES/CBC/PKCS5Padding(128) -
AES/ECB/NoPadding(128) -
AES/ECB/PKCS5Padding(128) -
AES/GCM/NoPadding(128, 256) ChaCha20-Poly1305PBEWithHmacSHA256AndAES_128PBEWithHmacSHA256AndAES_256-
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() |
Завершает многоэтапную операцию шифрования или расшифрования в зависимости от того, как был инициализирован этот объект 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 |
Возвращает объект 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 |
Сворачивает ключ. |
Методы, объявленные в классе Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait | Модификатор и тип | Метод | Описание |
|---|---|---|
protected Object |
clone() |
Создаёт и возвращает копию этого объекта. |
boolean |
equals |
Указывает, равен ли этот объект какому-либо другому. |
protected void |
finalize() |
Устарело, будет удалено: этот элемент API может быть удалён в будущей версии. Финализация устарела и будет удалена в одном из будущих выпусков. |
final Class |
getClass() |
Возвращает класс времени выполнения этого Object. |
int |
hashCode() |
Возвращает хеш-код этого объекта. |
final void |
notify() |
Пробуждает один поток, ожидающий на мониторе этого объекта. |
final void |
notifyAll() |
Пробуждает все потоки, ожидающие на мониторе этого объекта. |
final void |
wait() |
Заставляет текущий поток ожидать до пробуждения, обычно вследствие уведомления или прерывания. |
final void |
wait |
Заставляет текущий поток ожидать до пробуждения, обычно вследствие уведомления или прерывания, либо до истечения заданного промежутка реального времени. |
final void |
wait |
Заставляет текущий поток ожидать до пробуждения, обычно вследствие уведомления или прерывания, либо до истечения заданного промежутка реального времени. |
Подробное описание полей
ENCRYPT_MODE
public static final int ENCRYPT_MODE
- См. также:
DECRYPT_MODE
public static final int DECRYPT_MODE
- См. также:
WRAP_MODE
public static final int WRAP_MODE
- См. также:
UNWRAP_MODE
public static final int UNWRAP_MODE
- См. также:
PUBLIC_KEY
public static final int PUBLIC_KEY
- См. также:
PRIVATE_KEY
public static final int PRIVATE_KEY
- См. также:
SECRET_KEY
public static final int SECRET_KEY
- См. также:
Подробное описание конструкторов
Cipher
protected Cipher(CipherSpi cipherSpi, Provider provider, String transformation)
Cipher.- Параметры:
-
cipherSpi— делегат -
provider— поставщик -
transformation— преобразование - Выбрасывает:
-
NullPointerException— еслиproviderимеет значениеnull -
IllegalArgumentException— если переданные аргументы признаны недопустимыми для создания объектаCipher
Подробное описание методов
getInstance
public static final Cipher getInstance(String transformation) throws NoSuchAlgorithmException, NoSuchPaddingException
Cipher, реализующий указанное преобразование. Этот метод перебирает список зарегистрированных поставщиков безопасности, начиная с наиболее предпочтительного. Возвращается новый объект Cipher, инкапсулирующий реализацию CipherSpi первого поставщика, поддерживающего указанный алгоритм.
Обратите внимание, что список зарегистрированных поставщиков можно получить с помощью метода Security.getProviders().
- Примечание к API:
- Рекомендуется использовать преобразование, в котором полностью указаны алгоритм, режим и схема дополнения. В противном случае поставщик будет использовать значения режима и схемы дополнения по умолчанию, которые могут не соответствовать требованиям безопасности вашего приложения.
- Примечание по реализации:
- Эталонная реализация JDK дополнительно использует следующие свойства безопасности:
- свойство
jdk.security.provider.preferredSecurityдля определения предпочтительного порядка поставщиков для указанного алгоритма. Он может отличаться от порядка поставщиков, возвращаемых методомSecurity.getProviders(). См. также раздел «Преобразования Cipher» документа Поставщики JDK, где приведены сведения о значениях преобразования по умолчанию, используемых поставщиками JDK. - свойство
jdk.crypto.disabledAlgorithmsSecurityдля определения, разрешён ли указанный алгоритм. Если задано значениеjdk.crypto.disabledAlgorithms, оно имеет приоритет над значением свойства безопасности.
- свойство
- Параметры:
-
transformation— имя преобразования, например AES/CBC/PKCS5Padding. Сведения о стандартных именах преобразований см. в разделе Cipher спецификации стандартных имён алгоритмов безопасности Java. - Возвращает:
- объект
Cipher, реализующий запрошенное преобразование - Выбрасывает:
-
NoSuchAlgorithmException— еслиtransformationимеет значениеnull, пуст или имеет недопустимый формат; либо если реализацияCipherSpiне найдена или найдена, но не поддерживает режим -
NoSuchPaddingException— если реализацияCipherSpiнайдена, но не поддерживает схему дополнения - Внешние спецификации
- См. также:
getInstance
public static final Cipher getInstance(String transformation, String provider) throws NoSuchAlgorithmException, NoSuchProviderException, NoSuchPaddingException
Cipher, реализующий указанное преобразование. Возвращается новый объект Cipher, инкапсулирующий реализацию CipherSpi указанного provider. Указанный provider должен быть зарегистрирован в списке поставщиков безопасности.
Обратите внимание, что список зарегистрированных поставщиков можно получить с помощью метода Security.getProviders().
- Примечание к API:
- Рекомендуется использовать преобразование, в котором полностью указаны алгоритм, режим и схема дополнения. В противном случае поставщик будет использовать значения режима и схемы дополнения по умолчанию, которые могут не соответствовать требованиям безопасности вашего приложения.
- Примечание по реализации:
- Сведения о значениях преобразования по умолчанию, используемых поставщиками JDK, см. в разделе «Преобразования Cipher» документа Поставщики JDK. Эталонная реализация JDK дополнительно использует свойство
jdk.crypto.disabledAlgorithmsSecurityдля определения, разрешён ли указанный алгоритм. Если задано значениеjdk.crypto.disabledAlgorithms, оно имеет приоритет над значением свойства безопасности. - Параметры:
-
transformation— имя преобразования, например AES/CBC/PKCS5Padding. Сведения о стандартных именах преобразований см. в разделе Cipher спецификации стандартных имён алгоритмов безопасности Java. -
provider— имя поставщика - Возвращает:
- объект
Cipher, реализующий запрошенное преобразование - Выбрасывает:
-
IllegalArgumentException— еслиproviderимеет значениеnullили пуст -
NoSuchAlgorithmException— еслиtransformationимеет значениеnull, пуст или имеет недопустимый формат; либо если реализацияCipherSpiуказанногоproviderне найдена или найдена, но не поддерживает режим -
NoSuchPaddingException— если реализацияCipherSpiуказанногоproviderнайдена, но не поддерживает схему дополнения -
NoSuchProviderException— если указанныйproviderне зарегистрирован в списке поставщиков безопасности - Внешние спецификации
- См. также:
getInstance
public static final Cipher getInstance(String transformation, Provider provider) throws NoSuchAlgorithmException, NoSuchPaddingException
Cipher, реализующий указанное преобразование. Возвращается новый объект Cipher, инкапсулирующий реализацию CipherSpi указанного объекта provider. Обратите внимание, что указанный объект provider не обязательно должен быть зарегистрирован в списке поставщиков.
- Примечание к API:
- Рекомендуется использовать преобразование, в котором полностью указаны алгоритм, режим и схема дополнения. В противном случае поставщик будет использовать значения режима и схемы дополнения по умолчанию, которые могут не соответствовать требованиям безопасности вашего приложения.
- Примечание по реализации:
- Сведения о значениях преобразования по умолчанию, используемых поставщиками JDK, см. в разделе «Преобразования Cipher» документа Поставщики JDK. Эталонная реализация JDK дополнительно использует свойство
jdk.crypto.disabledAlgorithmsSecurityдля определения, разрешён ли указанный алгоритм. Если задано значениеjdk.crypto.disabledAlgorithms, оно имеет приоритет над значением свойства безопасности. - Параметры:
-
transformation— имя преобразования, например AES/CBC/PKCS5Padding. Сведения о стандартных именах преобразований см. в разделе Cipher спецификации стандартных имён алгоритмов безопасности Java. -
provider— поставщик - Возвращает:
- объект
Cipher, реализующий запрошенное преобразование - Выбрасывает:
-
IllegalArgumentException— еслиproviderимеет значениеnull -
NoSuchAlgorithmException— еслиtransformationимеет значениеnull, пуст или имеет недопустимый формат; либо если реализацияCipherSpiуказанногоproviderне найдена или найдена, но не поддерживает режим -
NoSuchPaddingException— если реализацияCipherSpiуказанногоproviderнайдена, но не поддерживает схему дополнения - Внешние спецификации
- См. также:
getProvider
public final Provider getProvider()
Cipher.- Возвращает:
- поставщика этого объекта
Cipher
getAlgorithm
public final String getAlgorithm()
Cipher. Это то же имя, которое было указано в одном из вызовов getInstance, создавших этот объект Cipher.
- Возвращает:
- имя алгоритма этого объекта
Cipher
getBlockSize
public final int getBlockSize()
- Возвращает:
- размер блока (в байтах) или 0, если этот шифр не является блочным
getOutputSize
public final int getOutputSize(int inputLen)
update или doFinal с учётом длины входных данных inputLen (в байтах). При вычислении учитываются необработанные (буферизованные) данные предыдущего вызова update, дополнение и тег AEAD.
Фактическая длина выходных данных следующего вызова update или doFinal может быть меньше длины, возвращаемой этим методом.
- Параметры:
-
inputLen— длина входных данных (в байтах) - Возвращает:
- требуемый размер выходного буфера (в байтах)
- Выбрасывает:
-
IllegalStateException— если объектCipherнаходится в неправильном состоянии (например, ещё не инициализирован)
getIV
public final byte[] getIV()
Это полезно, если был создан случайный IV, а также при шифровании или расшифровании с использованием пароля, когда IV выводится из пароля, заданного пользователем.
- Возвращает:
- вектор инициализации в новом буфере или
null, если этот шифр не использует IV либо IV ещё не задан.
getParameters
public final AlgorithmParameters getParameters()
Cipher. Возвращённые параметры могут совпадать с использованными для инициализации шифра или содержать дополнительные значения параметров по умолчанию либо случайные значения, используемые нижележащей реализацией шифра. Если необходимые параметры не были предоставлены и могут быть сгенерированы шифром, возвращаются сгенерированные параметры. В противном случае возвращается null.
- Возвращает:
- параметры, используемые этим шифром, или
null
getExemptionMechanism
public final ExemptionMechanism getExemptionMechanism()
Cipher.- Возвращает:
- объект механизма освобождения от ограничений, используемый этим объектом
Cipher, илиnull, если этот объектCipherне использует механизм освобождения от ограничений.
init
public final void init(int opmode, Key key) throws InvalidKeyException
Cipher с помощью ключа. Объект Cipher инициализируется для одной из следующих четырёх операций: шифрования, расшифрования, обёртывания ключа или распаковывания ключа — в зависимости от значения opmode.
Если для этого шифра требуются параметры алгоритма, которые нельзя получить из заданного key, нижележащая реализация шифра должна самостоятельно сгенерировать необходимые параметры (используя значения по умолчанию, заданные поставщиком, или случайные значения), если шифр инициализируется для шифрования или обёртывания ключа, и вызвать InvalidKeyException, если он инициализируется для расшифрования или распаковывания ключа. Сгенерированные параметры можно получить с помощью getParameters или getIV (если параметр является IV).
Если для этого шифра требуются параметры алгоритма, которые нельзя получить из входных параметров, и нет подходящих значений по умолчанию, заданных поставщиком, инициализация неизбежно завершится ошибкой.
Если этому шифру (включая схему обратной связи или дополнения) требуются случайные байты (например, для генерации параметров), они будут получены из реализации SecureRandom наиболее приоритетного установленного поставщика, выступающей источником случайных данных. (Если ни один из установленных поставщиков не предоставляет реализацию SecureRandom, будет использоваться системный источник случайных данных.)
Обратите внимание, что при инициализации объекта Cipher он теряет всё ранее полученное состояние. Иными словами, инициализация объекта Cipher эквивалентна созданию нового экземпляра этого объекта Cipher и его инициализации.
- Параметры:
-
opmode— режим операции этого объектаCipher(одно из следующих значений:ENCRYPT_MODE,DECRYPT_MODE,WRAP_MODEилиUNWRAP_MODE) -
key— ключ - Выбрасывает:
-
InvalidKeyException— если заданный ключ не подходит для инициализации этого шифра, если необходимые параметры алгоритма нельзя определить по заданному ключу или если размер заданного ключа превышает максимально допустимый (определяемый настроенными файлами политик юрисдикции) -
UnsupportedOperationException— еслиopmodeимеет значениеWRAP_MODEилиUNWRAP_MODE, но нижележащая реализацияCipherSpiне поддерживает этот режим -
InvalidParameterException— еслиopmodeне является одним из распознаваемых значений
init
public final void init(int opmode, Key key, SecureRandom random) throws InvalidKeyException
Cipher с помощью ключа и источника случайных данных. Объект Cipher инициализируется для одной из следующих четырёх операций: шифрования, расшифрования, обёртывания ключа или распаковывания ключа — в зависимости от значения opmode.
Если для этого шифра требуются параметры алгоритма, которые нельзя получить из заданного key, нижележащая реализация шифра должна самостоятельно сгенерировать необходимые параметры (используя значения по умолчанию, заданные поставщиком, или случайные значения), если шифр инициализируется для шифрования или обёртывания ключа, и вызвать InvalidKeyException, если он инициализируется для расшифрования или распаковывания ключа. Сгенерированные параметры можно получить с помощью getParameters или getIV (если параметр является IV).
Если для этого шифра требуются параметры алгоритма, которые нельзя получить из входных параметров, и нет подходящих значений по умолчанию, заданных поставщиком, инициализация неизбежно завершится ошибкой.
Если этому шифру (включая схему обратной связи или дополнения) требуются случайные байты (например, для генерации параметров), они будут получены из random.
Обратите внимание, что при инициализации объекта Cipher он теряет всё ранее полученное состояние. Иными словами, инициализация объекта Cipher эквивалентна созданию нового экземпляра этого объекта Cipher и его инициализации.
- Параметры:
-
opmode— режим операции этого объектаCipher(одно из следующих значений:ENCRYPT_MODE,DECRYPT_MODE,WRAP_MODEилиUNWRAP_MODE) -
key— ключ шифрования -
random— источник случайных данных - Выбрасывает:
-
InvalidKeyException— если заданный ключ не подходит для инициализации этого шифра, если необходимые параметры алгоритма нельзя определить по заданному ключу или если размер заданного ключа превышает максимально допустимый (определяемый настроенными файлами политик юрисдикции) -
UnsupportedOperationException— еслиopmodeимеет значениеWRAP_MODEилиUNWRAP_MODE, но нижележащая реализацияCipherSpiне поддерживает этот режим -
InvalidParameterException— еслиopmodeне является одним из распознаваемых значений
init
public final void init(int opmode, Key key, AlgorithmParameterSpec params) throws InvalidKeyException, InvalidAlgorithmParameterException
Cipher с помощью ключа и набора параметров алгоритма. Объект Cipher инициализируется для одной из следующих четырёх операций: шифрования, расшифрования, обёртывания ключа или распаковывания ключа — в зависимости от значения opmode.
Если для этого шифра требуются параметры алгоритма и params имеет значение null, нижележащая реализация шифра должна самостоятельно сгенерировать необходимые параметры (используя значения по умолчанию, заданные поставщиком, или случайные значения), если шифр инициализируется для шифрования или обёртывания ключа, и вызвать InvalidAlgorithmParameterException, если он инициализируется для расшифрования или распаковывания ключа. Сгенерированные параметры можно получить с помощью getParameters или getIV (если параметр является IV).
Если для этого шифра требуются параметры алгоритма, которые нельзя получить из входных параметров, и нет подходящих значений по умолчанию, заданных поставщиком, инициализация неизбежно завершится ошибкой.
Если этому шифру (включая схему обратной связи или дополнения) требуются случайные байты (например, для генерации параметров), они будут получены из реализации SecureRandom наиболее приоритетного установленного поставщика, выступающей источником случайных данных. (Если ни один из установленных поставщиков не предоставляет реализацию SecureRandom, будет использоваться системный источник случайных данных.)
Обратите внимание, что при инициализации объекта Cipher он теряет всё ранее полученное состояние. Иными словами, инициализация объекта Cipher эквивалентна созданию нового экземпляра этого объекта Cipher и его инициализации.
- Параметры:
-
opmode— режим операции этого объектаCipher(одно из следующих значений:ENCRYPT_MODE,DECRYPT_MODE,WRAP_MODEилиUNWRAP_MODE) -
key— ключ шифрования -
params— параметры алгоритма - Выбрасывает:
-
InvalidKeyException— если заданный ключ не подходит для инициализации этого шифра или его размер превышает максимально допустимый (определяемый настроенными файлами политик юрисдикции) -
InvalidAlgorithmParameterException— если заданные параметры алгоритма не подходят для этого шифра, если для этого шифра требуются параметры алгоритма, аparamsимеет значениеnull, либо если заданные параметры алгоритма подразумевают криптографическую стойкость, превышающую допустимые пределы (определяемые настроенными файлами политик юрисдикции) -
UnsupportedOperationException— еслиopmodeимеет значениеWRAP_MODEилиUNWRAP_MODE, но нижележащая реализацияCipherSpiне поддерживает этот режим -
InvalidParameterException— еслиopmodeне является одним из распознаваемых значений
init
public final void init(int opmode, Key key, AlgorithmParameterSpec params, SecureRandom random) throws InvalidKeyException, InvalidAlgorithmParameterException
Cipher с помощью ключа, набора параметров алгоритма и источника случайных данных. Объект Cipher инициализируется для одной из следующих четырёх операций: шифрования, расшифрования, обёртывания ключа или распаковывания ключа — в зависимости от значения opmode.
Если для этого шифра требуются параметры алгоритма и params имеет значение null, нижележащая реализация шифра должна самостоятельно сгенерировать необходимые параметры (используя значения по умолчанию, заданные поставщиком, или случайные значения), если шифр инициализируется для шифрования или обёртывания ключа, и вызвать InvalidAlgorithmParameterException, если он инициализируется для расшифрования или распаковывания ключа. Сгенерированные параметры можно получить с помощью getParameters или getIV (если параметр является IV).
Если для этого шифра требуются параметры алгоритма, которые нельзя получить из входных параметров, и нет подходящих значений по умолчанию, заданных поставщиком, инициализация неизбежно завершится ошибкой.
Если этому шифру (включая схему обратной связи или дополнения) требуются случайные байты (например, для генерации параметров), они будут получены из random.
Обратите внимание, что при инициализации объекта Cipher он теряет всё ранее полученное состояние. Иными словами, инициализация объекта Cipher эквивалентна созданию нового экземпляра этого объекта Cipher и его инициализации.
- Параметры:
-
opmode— режим операции этого объектаCipher(одно из следующих значений:ENCRYPT_MODE,DECRYPT_MODE,WRAP_MODEилиUNWRAP_MODE) -
key— ключ шифрования -
params— параметры алгоритма -
random— источник случайных данных - Выбрасывает:
-
InvalidKeyException— если заданный ключ не подходит для инициализации этого шифра или его размер превышает максимально допустимый (определяемый настроенными файлами политик юрисдикции) -
InvalidAlgorithmParameterException— если заданные параметры алгоритма не подходят для этого шифра, если для этого шифра требуются параметры алгоритма, аparamsимеет значениеnull, либо если заданные параметры алгоритма подразумевают криптографическую стойкость, превышающую допустимые пределы (определяемые настроенными файлами политик юрисдикции) -
UnsupportedOperationException— еслиopmodeимеет значениеWRAP_MODEилиUNWRAP_MODE, но нижележащая реализацияCipherSpiне поддерживает этот режим -
InvalidParameterException— еслиopmodeне является одним из распознаваемых значений
init
public final void init(int opmode, Key key, AlgorithmParameters params) throws InvalidKeyException, InvalidAlgorithmParameterException
Cipher с ключом и набором параметров алгоритма. Объект Cipher инициализируется для одной из следующих четырёх операций: шифрования, расшифрования, обёртывания ключа или развёртывания ключа — в зависимости от значения opmode.
Если этому шифру требуются параметры алгоритма, а params имеет значение null, предполагается, что базовая реализация шифра сама сгенерирует необходимые параметры (используя значения по умолчанию, специфичные для поставщика, или случайные значения), если она инициализируется для шифрования или обёртывания ключа, и вызовет исключение InvalidAlgorithmParameterException, если она инициализируется для расшифрования или развёртывания ключа. Сгенерированные параметры можно получить с помощью getParameters или getIV (если параметр является вектором инициализации, IV).
Если этому шифру требуются параметры алгоритма, которые нельзя получить из входных параметров, и отсутствуют разумные значения по умолчанию, специфичные для поставщика, инициализация неизбежно завершится ошибкой.
Если этому шифру (включая схему обратной связи или дополнения) требуются случайные байты (например, для генерации параметров), они будут получены с помощью реализации SecureRandom поставщика с наивысшим приоритетом из установленных поставщиков, которая будет использоваться в качестве источника случайных данных. (Если ни один из установленных поставщиков не предоставляет реализацию SecureRandom, будет использоваться системный источник случайных данных.)
Обратите внимание: при инициализации объекта Cipher он теряет всё ранее приобретённое состояние. Иными словами, инициализация объекта Cipher эквивалентна созданию нового экземпляра этого объекта Cipher и его инициализации.
- Параметры:
-
opmode— режим работы этого объектаCipher(одно из следующих значений:ENCRYPT_MODE,DECRYPT_MODE,WRAP_MODEилиUNWRAP_MODE) -
key— ключ шифрования -
params— параметры алгоритма - Исключения:
-
InvalidKeyException— если указанный ключ не подходит для инициализации этого шифра или его размер превышает максимально допустимый размер ключа (согласно настроенным файлам политики юрисдикции). -
InvalidAlgorithmParameterException— если указанные параметры алгоритма не подходят для этого шифра, этому шифру требуются параметры алгоритма, аparamsимеет значениеnull, либо указанные параметры алгоритма подразумевают криптографическую стойкость, превышающую установленные законом ограничения (согласно настроенным файлам политики юрисдикции) -
UnsupportedOperationException— еслиopmodeимеет значениеWRAP_MODEилиUNWRAP_MODE, но базовая реализацияCipherSpiне поддерживает этот режим -
InvalidParameterException— еслиopmodeне является одним из распознаваемых значений
init
public final void init(int opmode, Key key, AlgorithmParameters params, SecureRandom random) throws InvalidKeyException, InvalidAlgorithmParameterException
Cipher с ключом, набором параметров алгоритма и источником случайных данных. Объект Cipher инициализируется для одной из следующих четырёх операций: шифрования, расшифрования, обёртывания ключа или развёртывания ключа — в зависимости от значения opmode.
Если этому шифру требуются параметры алгоритма, а params имеет значение null, предполагается, что базовая реализация шифра сама сгенерирует необходимые параметры (используя значения по умолчанию, специфичные для поставщика, или случайные значения), если она инициализируется для шифрования или обёртывания ключа, и вызовет исключение InvalidAlgorithmParameterException, если она инициализируется для расшифрования или развёртывания ключа. Сгенерированные параметры можно получить с помощью getParameters или getIV (если параметр является вектором инициализации, IV).
Если этому шифру требуются параметры алгоритма, которые нельзя получить из входных параметров, и отсутствуют разумные значения по умолчанию, специфичные для поставщика, инициализация неизбежно завершится ошибкой.
Если этому шифру (включая схему обратной связи или дополнения) требуются случайные байты (например, для генерации параметров), они будут получены из random.
Обратите внимание: при инициализации объекта Cipher он теряет всё ранее приобретённое состояние. Иными словами, инициализация объекта Cipher эквивалентна созданию нового экземпляра этого объекта Cipher и его инициализации.
- Параметры:
-
opmode— режим работы этого объектаCipher(одно из следующих значений:ENCRYPT_MODE,DECRYPT_MODE,WRAP_MODEилиUNWRAP_MODE) -
key— ключ шифрования -
params— параметры алгоритма -
random— источник случайных данных - Исключения:
-
InvalidKeyException— если указанный ключ не подходит для инициализации этого шифра или его размер превышает максимально допустимый размер ключа (согласно настроенным файлам политики юрисдикции) -
InvalidAlgorithmParameterException— если указанные параметры алгоритма не подходят для этого шифра, этому шифру требуются параметры алгоритма, аparamsимеет значениеnull, либо указанные параметры алгоритма подразумевают криптографическую стойкость, превышающую установленные законом ограничения (согласно настроенным файлам политики юрисдикции) -
UnsupportedOperationException— еслиopmodeимеет значениеWRAP_MODEилиUNWRAP_MODE, но базовая реализацияCipherSpiне поддерживает этот режим -
InvalidParameterException— еслиopmodeне является одним из распознаваемых значений
init
public final void init(int opmode, Certificate certificate) throws InvalidKeyException
Cipher открытым ключом из указанного сертификата. Объект Cipher инициализируется для одной из следующих четырёх операций: шифрования, расшифрования, обёртывания ключа или развёртывания ключа — в зависимости от значения opmode.
Если сертификат имеет тип X.509 и его поле расширения key usage помечено как критическое, а значение поля расширения key usage указывает, что открытый ключ сертификата и соответствующий ему закрытый ключ не должны использоваться для операции, заданной значением opmode, будет вызвано исключение InvalidKeyException.
Если этому шифру требуются параметры алгоритма, которые нельзя получить из открытого ключа указанного сертификата, предполагается, что базовая реализация шифра сама сгенерирует необходимые параметры (используя значения по умолчанию, специфичные для поставщика, или случайные значения), если она инициализируется для шифрования или обёртывания ключа, и вызовет исключение InvalidKeyException, если она инициализируется для расшифрования или развёртывания ключа. Сгенерированные параметры можно получить с помощью getParameters или getIV (если параметр является вектором инициализации, IV).
Если этому шифру требуются параметры алгоритма, которые нельзя получить из входных параметров, и отсутствуют разумные значения по умолчанию, специфичные для поставщика, инициализация неизбежно завершится ошибкой.
Если этому шифру (включая схему обратной связи или дополнения) требуются случайные байты (например, для генерации параметров), они будут получены с помощью реализации SecureRandom поставщика с наивысшим приоритетом из установленных поставщиков, которая будет использоваться в качестве источника случайных данных. (Если ни один из установленных поставщиков не предоставляет реализацию SecureRandom, будет использоваться системный источник случайных данных.)
Обратите внимание: при инициализации объекта Cipher он теряет всё ранее приобретённое состояние. Иными словами, инициализация объекта Cipher эквивалентна созданию нового экземпляра этого объекта Cipher и его инициализации.
- Параметры:
-
opmode— режим работы этого объектаCipher(одно из следующих значений:ENCRYPT_MODE,DECRYPT_MODE,WRAP_MODEилиUNWRAP_MODE) -
certificate— сертификат - Исключения:
-
InvalidKeyException— если открытый ключ указанного сертификата не подходит для инициализации этого шифра, этому шифру требуются параметры алгоритма, которые нельзя определить по открытому ключу указанного сертификата, либо размер открытого ключа указанного сертификата превышает максимально допустимый размер ключа (согласно настроенным файлам политики юрисдикции) -
UnsupportedOperationException— еслиopmodeимеет значениеWRAP_MODEилиUNWRAP_MODE, но базовая реализацияCipherSpiне поддерживает этот режим -
InvalidParameterException— еслиopmodeне является одним из распознаваемых значений
init
public final void init(int opmode, Certificate certificate, SecureRandom random) throws InvalidKeyException
Cipher открытым ключом из указанного сертификата и источником случайных данных. Объект Cipher инициализируется для одной из следующих четырёх операций: шифрования, расшифрования, обёртывания ключа или развёртывания ключа — в зависимости от значения opmode.
Если сертификат имеет тип X.509 и его поле расширения key usage помечено как критическое, а значение поля расширения key usage указывает, что открытый ключ сертификата и соответствующий ему закрытый ключ не должны использоваться для операции, заданной значением opmode, будет вызвано исключение InvalidKeyException.
Если этому шифру требуются параметры алгоритма, которые нельзя получить из открытого ключа указанного certificate, предполагается, что базовая реализация шифра сама сгенерирует необходимые параметры (используя значения по умолчанию, специфичные для поставщика, или случайные значения), если она инициализируется для шифрования или обёртывания ключа, и вызовет исключение InvalidKeyException, если она инициализируется для расшифрования или развёртывания ключа. Сгенерированные параметры можно получить с помощью getParameters или getIV (если параметр является вектором инициализации, IV).
Если этому шифру требуются параметры алгоритма, которые нельзя получить из входных параметров, и отсутствуют разумные значения по умолчанию, специфичные для поставщика, инициализация неизбежно завершится ошибкой.
Если этому шифру (включая схему обратной связи или дополнения) требуются случайные байты (например, для генерации параметров), они будут получены из random.
Обратите внимание: при инициализации объекта Cipher он теряет всё ранее приобретённое состояние. Иными словами, инициализация объекта Cipher эквивалентна созданию нового экземпляра этого объекта Cipher и его инициализации.
- Параметры:
-
opmode— режим работы этого объектаCipher(одно из следующих значений:ENCRYPT_MODE,DECRYPT_MODE,WRAP_MODEилиUNWRAP_MODE) -
certificate— сертификат -
random— источник случайных данных - Исключения:
-
InvalidKeyException— если открытый ключ указанного сертификата не подходит для инициализации этого шифра, этому шифру требуются параметры алгоритма, которые нельзя определить по открытому ключу указанного сертификата, либо размер открытого ключа указанного сертификата превышает максимально допустимый размер ключа (согласно настроенным файлам политики юрисдикции) -
UnsupportedOperationException— еслиopmodeимеет значениеWRAP_MODEилиUNWRAP_MODE, но базовая реализацияCipherSpiне поддерживает этот режим -
InvalidParameterException— еслиopmodeне является одним из распознаваемых значений
update
public final byte[] update(byte[] input)
Cipher), обрабатывая следующую часть данных. Байты в буфере input обрабатываются, а результат сохраняется в новом буфере.
Если длина input равна нулю, этот метод возвращает null.
- Параметры:
-
input— входной буфер - Возвращает:
- новый буфер с результатом или
null, если этот шифр является блочным и входных данных недостаточно для формирования нового блока - Исключения:
-
IllegalStateException— если этот объектCipherнаходится в недопустимом состоянии (например, не был инициализирован или не находится в режимеENCRYPT_MODEилиDECRYPT_MODE)
update
public final byte[] update(byte[] input, int inputOffset, int inputLen)
Cipher), обрабатывая следующую часть данных. Обрабатываются первые inputLen байт буфера input, начиная с позиции inputOffset включительно, а результат сохраняется в новом буфере.
Если inputLen равно нулю, этот метод возвращает null.
- Параметры:
-
input— входной буфер -
inputOffset— смещение вinput, с которого начинаются входные данные -
inputLen— длина входных данных - Возвращает:
- новый буфер с результатом или
null, если этот шифр является блочным и входных данных недостаточно для формирования нового блока. - Исключения:
-
IllegalStateException— если этот объектCipherнаходится в недопустимом состоянии (например, не был инициализирован или не находится в режимеENCRYPT_MODEилиDECRYPT_MODE)
update
public final int update(byte[] input, int inputOffset, int inputLen, byte[] output) throws ShortBufferException
Cipher), обрабатывая следующую часть данных. Обрабатываются первые inputLen байт буфера input, начиная с позиции inputOffset включительно, а результат сохраняется в буфере output.
Если буфер output слишком мал для сохранения результата, вызывается исключение ShortBufferException. В этом случае повторите вызов с буфером большего размера. Используйте getOutputSize, чтобы определить необходимый размер выходного буфера.
Если inputLen равно нулю, этот метод возвращает длину, равную нулю.
Примечание: этот метод должен быть безопасен при копировании. Это означает, что буферы input и output могут ссылаться на один и тот же массив байтов, и при копировании результата в выходной буфер необработанные входные данные не перезаписываются.
- Параметры:
-
input— входной буфер -
inputOffset— смещение вinput, с которого начинаются входные данные -
inputLen— длина входных данных -
output— буфер для результата - Возвращает:
- количество байтов, сохранённых в
output - Исключения:
-
IllegalStateException— если этот объектCipherнаходится в недопустимом состоянии (например, не был инициализирован или не находится в режимеENCRYPT_MODEилиDECRYPT_MODE) -
ShortBufferException— если указанный выходной буфер слишком мал для сохранения результата
update
public final int update(byte[] input, int inputOffset, int inputLen, byte[] output, int outputOffset) throws ShortBufferException
Cipher), обрабатывая следующую часть данных. Обрабатываются первые inputLen байт буфера input, начиная с позиции inputOffset включительно, а результат сохраняется в буфере output, начиная с позиции outputOffset включительно.
Если буфер output слишком мал для сохранения результата, вызывается исключение ShortBufferException. В этом случае повторите вызов с буфером большего размера. Используйте getOutputSize, чтобы определить необходимый размер выходного буфера.
Если inputLen равно нулю, этот метод возвращает длину, равную нулю.
Примечание: этот метод должен быть безопасен при копировании. Это означает, что буферы input и output могут ссылаться на один и тот же массив байтов, и при копировании результата в выходной буфер необработанные входные данные не перезаписываются.
- Параметры:
-
input— входной буфер -
inputOffset— смещение вinput, с которого начинаются входные данные -
inputLen— длина входных данных -
output— буфер для результата -
outputOffset— смещение вoutput, по которому сохраняется результат - Возвращает:
- количество байтов, сохранённых в
output - Исключения:
-
IllegalStateException— если этот объектCipherнаходится в недопустимом состоянии (например, не был инициализирован или не находится в режимеENCRYPT_MODEилиDECRYPT_MODE) -
ShortBufferException— если указанный выходной буфер слишком мал для сохранения результата
update
public final int update(ByteBuffer input, ByteBuffer output) throws ShortBufferException
Cipher), обрабатывая следующую часть данных. Обрабатываются все input.remaining() байт, начиная с позиции input.position(). Результат сохраняется в выходном буфере. После возврата позиция входного буфера будет равна его пределу; его предел не изменится. Позиция выходного буфера увеличится на n, где n — значение, возвращаемое этим методом; предел выходного буфера не изменится.
Если output.remaining() байт недостаточно для сохранения результата, вызывается исключение ShortBufferException. В этом случае повторите вызов с буфером большего размера. Используйте getOutputSize, чтобы определить необходимый размер выходного буфера.
Примечание: этот метод должен быть безопасен при копировании. Это означает, что буферы input и output могут ссылаться на один и тот же участок памяти, и при копировании результата в выходной буфер необработанные входные данные не перезаписываются.
- Параметры:
-
input— входной ByteBuffer -
output— выходной ByteByffer - Возвращает:
- количество байтов, сохранённых в
output - Исключения:
-
IllegalStateException— если этот объектCipherнаходится в недопустимом состоянии (например, не был инициализирован или не находится в режимеENCRYPT_MODEилиDECRYPT_MODE) -
IllegalArgumentException— если входной и выходной буферы являются одним и тем же объектом -
ReadOnlyBufferException— если выходной буфер доступен только для чтения -
ShortBufferException— если в выходном буфере недостаточно места - Начиная с версии:
- 1.5
doFinal
public final byte[] doFinal() throws IllegalBlockSizeException, BadPaddingException
Cipher. Обрабатываются входные данные, которые могли быть буферизованы во время предыдущей операции update; при необходимости применяется дополнение. Если используется режим AEAD, например GCM/CCM, при шифровании добавляется тег аутентификации, а при расшифровании он проверяется. Результат сохраняется в новом буфере.
- Возвращает:
- новый буфер с результатом
- Исключения:
-
IllegalStateException— если этот объектCipherнаходится в неверном режиме или не может быть сброшен. -
IllegalBlockSizeException— если этот шифр является блочным, дополнение не запрашивалось (только в режиме шифрования), а общая длина данных, обработанных этим шифром, не кратна размеру блока; либо если этот алгоритм шифрования не может обработать предоставленные входные данные. -
BadPaddingException— если этот объектCipherнаходится в режиме расшифрования и было запрошено (снятие) дополнения, но расшифрованные данные не ограничены соответствующими байтами дополнения -
AEADBadTagException— если этот объектCipherвыполняет расшифрование в режиме AEAD (например, GCM/CCM), а полученный тег аутентификации не совпадает с вычисленным значением
doFinal
public final int doFinal(byte[] output, int outputOffset) throws IllegalBlockSizeException, ShortBufferException, BadPaddingException
Cipher. Обрабатываются входные данные, которые могли быть буферизованы во время предыдущей операции update; при необходимости применяется дополнение. Если используется режим AEAD, например GCM/CCM, при шифровании добавляется тег аутентификации, а при расшифровании он проверяется. Результат сохраняется в буфере output, начиная с позиции outputOffset включительно.
Если буфер output слишком мал для сохранения результата, вызывается исключение ShortBufferException. В этом случае повторите вызов с буфером большего размера. Используйте getOutputSize, чтобы определить необходимый размер выходного буфера.
После завершения этот метод сбрасывает объект Cipher в состояние, в котором он находился при предыдущей инициализации вызовом init. То есть объект сбрасывается и становится готовым к шифрованию или расшифрованию (в зависимости от режима работы, указанного при вызове init) дополнительных данных.
Примечание: если возникает исключение, перед повторным использованием объекта Cipher может потребоваться его сброс.
- Параметры:
-
output— буфер для результата -
outputOffset— смещение вoutput, по которому сохраняется результат - Возвращает:
- количество байтов, сохранённых в
output - Исключения:
-
IllegalStateException— если этот объектCipherнаходится в недопустимом состоянии (например, не был инициализирован или не находится в режимеENCRYPT_MODEилиDECRYPT_MODE) -
IllegalBlockSizeException— если этот шифр является блочным, дополнение не запрашивалось (только в режиме шифрования), а общая длина данных, обработанных этим шифром, не кратна размеру блока; либо если этот алгоритм шифрования не может обработать предоставленные входные данные. -
ShortBufferException— если указанный выходной буфер слишком мал для сохранения результата -
BadPaddingException— если этот объектCipherнаходится в режиме расшифрования и было запрошено (снятие) дополнения, но расшифрованные данные не ограничены соответствующими байтами дополнения -
AEADBadTagException— если этот объектCipherвыполняет расшифрование в режиме AEAD (например, GCM/CCM), а полученный тег аутентификации не совпадает с вычисленным значением
doFinal
public final byte[] doFinal(byte[] input) throws IllegalBlockSizeException, BadPaddingException
Cipher. Обрабатываются байты буфера input и любые входные байты, которые могли быть буферизованы во время предыдущей операции update; при необходимости применяется дополнение. Если используется режим AEAD, например GCM/CCM, при шифровании добавляется тег аутентификации, а при расшифровании он проверяется. Результат сохраняется в новом буфере.
- Параметры:
-
input— входной буфер - Возвращает:
- новый буфер с результатом
- Исключения:
-
IllegalStateException— если этот объектCipherнаходится в неверном режиме или не может быть сброшен. -
IllegalBlockSizeException— если этот шифр является блочным, дополнение не запрашивалось (только в режиме шифрования), а общая длина данных, обработанных этим шифром, не кратна размеру блока; либо если этот алгоритм шифрования не может обработать предоставленные входные данные. -
BadPaddingException— если этот объектCipherнаходится в режиме расшифрования и было запрошено (снятие) дополнения, но расшифрованные данные не ограничены соответствующими байтами дополнения -
AEADBadTagException— если этот объектCipherвыполняет расшифрование в режиме AEAD (например, GCM/CCM), а полученный тег аутентификации не совпадает с вычисленным значением
doFinal
public final byte[] doFinal(byte[] input, int inputOffset, int inputLen) throws IllegalBlockSizeException, BadPaddingException
Cipher. Обрабатываются первые inputLen байт буфера input, начиная с позиции inputOffset включительно, а также любые входные байты, которые могли быть буферизованы во время предыдущей операции update; при необходимости применяется дополнение. Если используется режим AEAD, например GCM/CCM, при шифровании добавляется тег аутентификации, а при расшифровании он проверяется. Результат сохраняется в новом буфере.
- Параметры:
-
input— входной буфер -
inputOffset— смещение вinput, с которого начинаются входные данные -
inputLen— длина входных данных - Возвращает:
- новый буфер с результатом
- Исключения:
-
IllegalStateException— если этот объектCipherнаходится в неверном режиме или не может быть сброшен. -
IllegalBlockSizeException— если этот шифр является блочным, дополнение не запрашивалось (только в режиме шифрования), а общая длина данных, обработанных этим шифром, не кратна размеру блока; либо если этот алгоритм шифрования не может обработать предоставленные входные данные. -
BadPaddingException— если этот объектCipherнаходится в режиме расшифрования и было запрошено (снятие) дополнения, но расшифрованные данные не ограничены соответствующими байтами дополнения -
AEADBadTagException— если этот объектCipherвыполняет расшифрование в режиме AEAD (например, GCM/CCM), а полученный тег аутентификации не совпадает с вычисленным значением
doFinal
public final int doFinal(byte[] input, int inputOffset, int inputLen, byte[] output) throws ShortBufferException, IllegalBlockSizeException, BadPaddingException
Cipher. Обрабатываются первые inputLen байт буфера input, начиная с позиции inputOffset включительно, а также все входные байты, которые могли быть буферизованы во время предыдущей операции update; при этом применяется дополнение, если оно было запрошено. Если используется режим AEAD, например GCM/CCM, тег аутентификации добавляется при шифровании или проверяется при расшифровании. Результат сохраняется в буфере output.
Если буфер output слишком мал для хранения результата, выбрасывается исключение ShortBufferException. В этом случае повторите вызов с буфером вывода большего размера. Используйте getOutputSize, чтобы определить необходимый размер буфера вывода.
Примечание: этот метод должен быть безопасен при копировании, то есть буферы input и output могут ссылаться на один и тот же массив байтов, и при копировании результата в буфер вывода необработанные входные данные не перезаписываются.
- Параметры:
-
input— входной буфер -
inputOffset— смещение вinput, с которого начинаются входные данные -
inputLen— длина входных данных -
output— буфер для результата - Возвращает:
- количество байтов, сохранённых в
output - Выбрасывает:
-
IllegalStateException— если объектCipherнаходится в неправильном режиме или не может быть сброшен. -
IllegalBlockSizeException— если данный шифр является блочным шифром, дополнение не было запрошено (только в режиме шифрования), а общая длина входных данных, обработанных этим шифром, не кратна размеру блока; или если этот алгоритм шифрования не может обработать предоставленные входные данные. -
ShortBufferException— если указанный буфер вывода слишком мал для хранения результата -
BadPaddingException— если объектCipherнаходится в режиме расшифрования и было запрошено дополнение или его удаление, но расшифрованные данные не ограничены соответствующими байтами дополнения -
AEADBadTagException— если объектCipherрасшифровывает данные в режиме AEAD (например, GCM/CCM), а полученный тег аутентификации не совпадает с вычисленным значением
doFinal
public final int doFinal(byte[] input, int inputOffset, int inputLen, byte[] output, int outputOffset) throws ShortBufferException, IllegalBlockSizeException, BadPaddingException
Cipher. Обрабатываются первые inputLen байт буфера input, начиная с позиции inputOffset включительно, а также все входные байты, которые могли быть буферизованы во время предыдущей операции update; при этом применяется дополнение, если оно было запрошено. Если используется режим AEAD, например GCM/CCM, тег аутентификации добавляется при шифровании или проверяется при расшифровании. Результат сохраняется в буфере output, начиная с позиции outputOffset включительно.
Если буфер output слишком мал для хранения результата, выбрасывается исключение ShortBufferException. В этом случае повторите вызов с буфером вывода большего размера. Используйте getOutputSize, чтобы определить необходимый размер буфера вывода.
Примечание: этот метод должен быть безопасен при копировании, то есть буферы input и output могут ссылаться на один и тот же массив байтов, и при копировании результата в буфер вывода необработанные входные данные не перезаписываются.
- Параметры:
-
input— входной буфер -
inputOffset— смещение вinput, с которого начинаются входные данные -
inputLen— длина входных данных -
output— буфер для результата -
outputOffset— смещение вoutput, по которому сохраняется результат - Возвращает:
- количество байтов, сохранённых в
output - Выбрасывает:
-
IllegalStateException— если объектCipherнаходится в неправильном режиме или не может быть сброшен. -
IllegalBlockSizeException— если данный шифр является блочным шифром, дополнение не было запрошено (только в режиме шифрования), а общая длина входных данных, обработанных этим шифром, не кратна размеру блока; или если этот алгоритм шифрования не может обработать предоставленные входные данные. -
ShortBufferException— если указанный буфер вывода слишком мал для хранения результата -
BadPaddingException— если объектCipherнаходится в режиме расшифрования и было запрошено дополнение или его удаление, но расшифрованные данные не ограничены соответствующими байтами дополнения -
AEADBadTagException— если объектCipherрасшифровывает данные в режиме AEAD (например, GCM/CCM), а полученный тег аутентификации не совпадает с вычисленным значением
doFinal
public final int doFinal(ByteBuffer input, ByteBuffer output) throws ShortBufferException, IllegalBlockSizeException, BadPaddingException
Cipher. Обрабатываются все input.remaining() байт, начиная с позиции input.position(). Если используется режим AEAD, например GCM/CCM, тег аутентификации добавляется при шифровании или проверяется при расшифровании. Результат сохраняется в буфере вывода. По завершении позиция входного буфера будет равна его пределу; предел не изменится. Позиция выходного буфера увеличится на n, где n — значение, возвращаемое этим методом; предел выходного буфера не изменится.
Если output.remaining() байт недостаточно для хранения результата, выбрасывается исключение ShortBufferException. В этом случае повторите вызов с буфером вывода большего размера. Используйте getOutputSize, чтобы определить необходимый размер буфера вывода.
Примечание: этот метод должен быть безопасен при копировании, то есть буферы input и output могут ссылаться на один и тот же массив байтов, и при копировании результата в буфер вывода необработанные входные данные не перезаписываются.
- Параметры:
-
input— входной ByteBuffer -
output— выходной ByteBuffer - Возвращает:
- количество байтов, сохранённых в
output - Выбрасывает:
-
IllegalStateException— если объектCipherнаходится в неправильном режиме или не может быть сброшен. -
IllegalArgumentException— если входной и выходной буферы являются одним и тем же объектом -
ReadOnlyBufferException— если выходной буфер доступен только для чтения -
IllegalBlockSizeException— если данный шифр является блочным шифром, дополнение не было запрошено (только в режиме шифрования), а общая длина входных данных, обработанных этим шифром, не кратна размеру блока; или если этот алгоритм шифрования не может обработать предоставленные входные данные. -
ShortBufferException— если в выходном буфере недостаточно места -
BadPaddingException— если объектCipherнаходится в режиме расшифрования и было запрошено дополнение или его удаление, но расшифрованные данные не ограничены соответствующими байтами дополнения -
AEADBadTagException— если объектCipherрасшифровывает данные в режиме AEAD (например, GCM/CCM), а полученный тег аутентификации не совпадает с вычисленным значением - Начиная с:
- 1.5
wrap
public final byte[] wrap(Key key) throws IllegalBlockSizeException, InvalidKeyException
- Параметры:
-
key— ключ для упаковки - Возвращает:
- упакованный ключ
- Выбрасывает:
-
IllegalStateException— если объектCipherнаходится в неправильном состоянии (например, не был инициализирован или не находится вWRAP_MODE) -
IllegalBlockSizeException— если данный шифр является блочным шифром, дополнение не было запрошено, а длина кодирования упаковываемого ключа не кратна размеру блока -
InvalidKeyException— если упаковать ключ с помощью этого шифра невозможно или небезопасно (например, если защищённый аппаратными средствами ключ передаётся шифру, работающему только в программном режиме) -
UnsupportedOperationException— если соответствующий метод вCipherSpiне поддерживается
unwrap
public final Key unwrap(byte[] wrappedKey, String wrappedKeyAlgorithm, int wrappedKeyType) throws InvalidKeyException, NoSuchAlgorithmException
- Параметры:
-
wrappedKey— ключ для распаковки -
wrappedKeyAlgorithm— алгоритм, связанный с упакованным ключом -
wrappedKeyType— тип упакованного ключа. Должен быть одним из следующих:SECRET_KEY,PRIVATE_KEYилиPUBLIC_KEY - Возвращает:
- распакованный ключ
- Выбрасывает:
-
IllegalStateException— если объектCipherнаходится в неправильном состоянии (например, не был инициализирован или не находится вUNWRAP_MODE) -
NoSuchAlgorithmException— если ни один из установленных поставщиков не может создать ключи типаwrappedKeyTypeдляwrappedKeyAlgorithm -
InvalidKeyException— еслиwrappedKeyне представляет собой упакованный ключ типаwrappedKeyTypeдляwrappedKeyAlgorithm -
UnsupportedOperationException— если соответствующий метод вCipherSpiне поддерживается
getMaxAllowedKeyLength
public static final int getMaxAllowedKeyLength(String transformation) throws NoSuchAlgorithmException
Integer.MAX_VALUE. Дополнительные сведения о размерах ключей по умолчанию и файлах политики юрисдикции JCE см. в разделе «Криптографические настройки по умолчанию и ограничения» документации Поставщики JDK.- Параметры:
-
transformation— преобразование шифра - Возвращает:
- максимальная длина ключа в битах или
Integer.MAX_VALUE - Выбрасывает:
-
NullPointerException— еслиtransformationимеет значениеnull -
NoSuchAlgorithmException— еслиtransformationне является допустимым преобразованием, то есть не имеет вид «algorithm» или «algorithm/mode/padding» - Начиная с:
- 1.5
getMaxAllowedParameterSpec
public static final AlgorithmParameterSpec getMaxAllowedParameterSpec(String transformation) throws NoSuchAlgorithmException
AlgorithmParameterSpec, содержащий максимальное значение параметра Cipher согласно файлу политики юрисдикции. Если установлены файлы политики юрисдикции JCE с неограниченной криптографической стойкостью или в файле политики не установлено максимальное ограничение параметров для указанного преобразования, будет возвращено null.- Параметры:
-
transformation— преобразование шифра - Возвращает:
- объект
AlgorithmParameterSpec, содержащий максимальное значение, илиnull - Выбрасывает:
-
NullPointerException— еслиtransformationимеет значениеnull -
NoSuchAlgorithmException— еслиtransformationне является допустимым преобразованием, то есть не имеет вид «algorithm» или «algorithm/mode/padding» - Начиная с:
- 1.5
updateAAD
public final void updateAAD(byte[] src)
Вызовы этого метода передают данные AAD объекту 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()
String этого объекта 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.