Класс Cipher
- java.lang.Object
-
- javax.crypto.Cipher
- Прямые известные подклассы:
- NullCipher
public class Cipher extends Object
Этот класс предоставляет функциональность криптографического шифра для шифрования и дешифрования. Он является основой фреймворка Java Cryptographic Extension (JCE).
Для создания объекта Cipher приложение вызывает метод getInstance шифра и передает ему имя требуемой трансформации. Дополнительно можно указать имя поставщика.
Трансформация — это строка, описывающая операцию (или набор операций), которые должны быть выполнены над заданным входом для получения некоторого результата. Трансформация всегда включает имя криптографического алгоритма (например, AES) и может быть дополнена режимом работы и схемой заполнения.
Трансформация имеет вид:
- "algorithm/mode/padding" или
- "algorithm"
(в последнем случае используются значения по умолчанию для режима и схемы заполнения, определённые поставщиком). Например, следующая строка является допустимой трансформацией:
Cipher c = Cipher.getInstance("AES/CBC/PKCS5Padding"); Используя режимы, такие как CFB и OFB, блочные шифры могут шифровать данные в блоках меньшего размера, чем фактический размер блока шифра. При запросе такого режима можно дополнительно указать количество бит, которые будут обрабатываться за раз, добавив это число к имени режима, как показано в трансформациях "AES/CFB8/NoPadding" и "AES/OFB32/PKCS5Padding". Если такое число не указано, используется значение по умолчанию, определённое поставщиком. Таким образом, блочные шифры могут быть преобразованы в шифры потокового типа, ориентированные на байты, с использованием 8-битного режима, такого как CFB8 или OFB8. Режимы, такие как аутентифицированное шифрование с дополнительными данными (AEAD), обеспечивают гарантии подлинности как для конфиденциальных данных, так и для дополнительных связанных данных (AAD), которые не шифруются. (Дополнительную информацию об AEAD и алгоритмах AEAD, таких как 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);
... Каждая реализация платформы Java обязана поддерживать следующие стандартные Cipher трансформации с размерами ключей в скобках: -
AES/CBC/NoPadding(128) -
AES/CBC/PKCS5Padding(128) -
AES/ECB/NoPadding(128) -
AES/ECB/PKCS5Padding(128) -
DES/CBC/NoPadding(56) -
DES/CBC/PKCS5Padding(56) -
DES/ECB/NoPadding(56) -
DES/ECB/PKCS5Padding(56) -
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
- См. также:
-
KeyGenerator,SecretKey
Поля
| Модификатор и тип | Поле и описание |
|---|---|
static int |
DECRYPT_MODE Константа, используемая для инициализации шифра в режиме дешифрования. |
static int |
ENCRYPT_MODE Константа, используемая для инициализации шифра в режиме шифрования. |
static int |
PRIVATE_KEY Константа, используемая для указания того, что разбираемый ключ является "приватным ключом". |
static int |
PUBLIC_KEY Константа, используемая для указания того, что разбираемый ключ является "публичным ключом". |
static int |
SECRET_KEY Константа, используемая для указания того, что разбираемый ключ является "секретным ключом". |
static int |
UNWRAP_MODE Константа, используемая для инициализации шифра в режиме расшифрования ключа. |
static int |
WRAP_MODE Константа, используемая для инициализации шифра в режиме упаковки ключа. |
Конструкторы
| Модификатор | Конструктор и описание |
|---|---|
protected |
Cipher(CipherSpi cipherSpi,
Provider provider,
String transformation) Создаёт объект Cipher. |
Методы
| Модификатор и тип | Метод и описание |
|---|---|
byte[] |
doFinal() Завершает многоэтапную операцию шифрования или дешифрования, в зависимости от того, как был инициализирован этот шифр. |
byte[] |
doFinal(byte[] input) Шифрует или дешифрует данные в одноэтапной операции или завершает многоэтапную операцию. |
int |
doFinal(byte[] output,
int outputOffset) Завершает многоэтапную операцию шифрования или дешифрования, в зависимости от того, как был инициализирован этот шифр. |
byte[] |
doFinal(byte[] input,
int inputOffset,
int inputLen) Шифрует или дешифрует данные в одноэтапной операции или завершает многоэтапную операцию. |
int |
doFinal(byte[] input,
int inputOffset,
int inputLen,
byte[] output) Шифрует или дешифрует данные в одноэтапной операции или завершает многоэтапную операцию. |
int |
doFinal(byte[] input,
int inputOffset,
int inputLen,
byte[] output,
int outputOffset) Шифрует или дешифрует данные в одноэтапной операции или завершает многоэтапную операцию. |
int |
doFinal(ByteBuffer input,
ByteBuffer output) Шифрует или дешифрует данные в одноэтапной операции или завершает многоэтапную операцию. |
String |
getAlgorithm() Возвращает имя алгоритма этого объекта |
int |
getBlockSize() Возвращает размер блока (в байтах). |
ExemptionMechanism |
getExemptionMechanism() Возвращает объект механизма исключения, используемый с этим шифром. |
static Cipher |
getInstance(String transformation) Возвращает объект |
static Cipher |
getInstance(String transformation,
Provider provider) Возвращает объект |
static Cipher |
getInstance(String transformation,
String provider) Возвращает объект |
byte[] |
getIV() Возвращает вектор инициализации (IV) в новом буфере. |
static int |
getMaxAllowedKeyLength(String transformation) Возвращает максимальную длину ключа для указанного преобразования в соответствии с установленными политиками юрисдикции JCE. |
static AlgorithmParameterSpec |
getMaxAllowedParameterSpec(String transformation) Возвращает объект AlgorithmParameterSpec, содержащий максимальное значение параметра шифра в соответствии с файлом политики юрисдикции. |
int |
getOutputSize(int inputLen) Возвращает длину в байтах, необходимую для буфера вывода, чтобы содержать результат следующей операции |
AlgorithmParameters |
getParameters() Возвращает параметры, используемые с этим шифром. |
Provider |
getProvider() Возвращает поставщика этого объекта |
void |
init(int opmode,
Certificate certificate) Инициализирует этот шифр с открытым ключом из указанного сертификата. |
void |
init(int opmode,
Certificate certificate,
SecureRandom random) Инициализирует этот шифр с открытым ключом из указанного сертификата и источником случайных данных. |
void |
init(int opmode,
Key key) Инициализирует этот шифр с ключом. |
void |
init(int opmode,
Key key,
AlgorithmParameters params) Инициализирует этот шифр с ключом и набором параметров алгоритма. |
void |
init(int opmode,
Key key,
AlgorithmParameterSpec params) Инициализирует этот шифр с ключом и набором параметров алгоритма. |
void |
init(int opmode,
Key key,
AlgorithmParameterSpec params,
SecureRandom random) Инициализирует этот шифр с ключом, набором параметров алгоритма и источником случайных данных. |
void |
init(int opmode,
Key key,
AlgorithmParameters params,
SecureRandom random) Инициализирует этот шифр с ключом, набором параметров алгоритма и источником случайных данных. |
void |
init(int opmode,
Key key,
SecureRandom random) Инициализирует этот шифр с ключом и источником случайных данных. |
Key |
unwrap(byte[] wrappedKey,
String wrappedKeyAlgorithm,
int wrappedKeyType) Расшифровывает ранее упакованный ключ. |
byte[] |
update(byte[] input) Продолжает многоэтапную операцию шифрования или дешифрования (в зависимости от того, как был инициализирован этот шифр), обрабатывая другой фрагмент данных. |
byte[] |
update(byte[] input,
int inputOffset,
int inputLen) Продолжает многоэтапную операцию шифрования или дешифрования (в зависимости от того, как был инициализирован этот шифр), обрабатывая другой фрагмент данных. |
int |
update(byte[] input,
int inputOffset,
int inputLen,
byte[] output) Продолжает многоэтапную операцию шифрования или дешифрования (в зависимости от того, как был инициализирован этот шифр), обрабатывая другой фрагмент данных. |
int |
update(byte[] input,
int inputOffset,
int inputLen,
byte[] output,
int outputOffset) Продолжает многоэтапную операцию шифрования или дешифрования (в зависимости от того, как был инициализирован этот шифр), обрабатывая другой фрагмент данных. |
int |
update(ByteBuffer input,
ByteBuffer output) Продолжает многоэтапную операцию шифрования или дешифрования (в зависимости от того, как был инициализирован этот шифр), обрабатывая другой фрагмент данных. |
void |
updateAAD(byte[] src) Продолжает многоэтапное обновление дополнительных данных аутентификации (AAD). |
void |
updateAAD(byte[] src,
int offset,
int len) Продолжает многоэтапное обновление дополнительных данных аутентификации (AAD), используя подмножество предоставленного буфера. |
void |
updateAAD(ByteBuffer src) Продолжает многоэтапное обновление дополнительных данных аутентификации (AAD). |
byte[] |
wrap(Key key) Упаковывает ключ. |
Методы, унаследованные от класса java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait Поля
ENCRYPT_MODE
public static final int ENCRYPT_MODE
Константа, используемая для инициализации шифра в режиме шифрования.
- См. также:
- Constant Field Values
DECRYPT_MODE
public static final int DECRYPT_MODE
Константа, используемая для инициализации шифра в режиме дешифрования.
- См. также:
- Constant Field Values
WRAP_MODE
public static final int WRAP_MODE
Константа, используемая для инициализации шифра в режиме упаковки ключей.
- См. также:
- Constant Field Values
UNWRAP_MODE
public static final int UNWRAP_MODE
Константа, используемая для инициализации шифра в режиме распаковки ключей.
- См. также:
- Constant Field Values
PUBLIC_KEY
public static final int PUBLIC_KEY
Константа, используемая для указания того, что распаковываемый ключ является «открытым ключом».
- См. также:
- Constant Field Values
PRIVATE_KEY
public static final int PRIVATE_KEY
Константа, используемая для указания того, что распаковываемый ключ является «закрытым ключом».
- См. также:
- Constant Field Values
SECRET_KEY
public static final int SECRET_KEY
Константа, используемая для указания того, что распаковываемый ключ является «секретным ключом».
- См. также:
- Constant Field Values
Конструкторы
Cipher
protected Cipher(CipherSpi cipherSpi,
Provider provider,
String transformation) Создает объект Cipher.
- Параметры:
-
cipherSpi- делегат -
provider- провайдер -
transformation- преобразование
Методы
getInstance
public static final Cipher getInstance(String transformation)
throws NoSuchAlgorithmException,
NoSuchPaddingException Возвращает объект Cipher, реализующий указанное преобразование.
Этот метод проходит по списку зарегистрированных поставщиков безопасности, начиная с наиболее предпочтительного поставщика. Возвращается новый объект Cipher, инкапсулирующий реализацию CipherSpi из первого поставщика, который поддерживает указанный алгоритм.
Обратите внимание, что список зарегистрированных провайдеров можно получить с помощью метода Security.getProviders().
- Параметры:
-
transformation- имя преобразования, например, AES/CBC/PKCS5Padding. См. раздел Cipher в документации Java Cryptography Architecture Standard Algorithm Name Documentation для получения информации о стандартных именах преобразований. - Возвращает:
- шифр, реализующий требуемое преобразование.
- Исключения:
-
NoSuchAlgorithmException- еслиtransformationявляется null, пустым, имеет неверный формат или если ни один провайдер не поддерживает реализацию CipherSpi для указанного алгоритма. -
NoSuchPaddingException- еслиtransformationсодержит схему заполнения, которая недоступна. - См. также:
Provider
getInstance
public static final Cipher getInstance(String transformation,
String provider)
throws NoSuchAlgorithmException,
NoSuchProviderException,
NoSuchPaddingException Возвращает объект Cipher, реализующий указанное преобразование.
Возвращается новый объект Cipher, инкапсулирующий реализацию CipherSpi из указанного провайдера. Указанный провайдер должен быть зарегистрирован в списке провайдеров безопасности.
Обратите внимание, что список зарегистрированных провайдеров можно получить с помощью метода Security.getProviders().
- Параметры:
-
transformation- имя преобразования, например, AES/CBC/PKCS5Padding. См. раздел Cipher в документации Java Cryptography Architecture Standard Algorithm Name Documentation для получения информации о стандартных именах преобразований. -
provider- имя провайдера. - Возвращает:
- шифр, реализующий требуемое преобразование.
- Исключения:
-
NoSuchAlgorithmException- еслиtransformationявляется null, пустым, имеет неверный формат или если реализация CipherSpi для указанного алгоритма недоступна из указанного провайдера. -
NoSuchProviderException- если указанный провайдер не зарегистрирован в списке провайдеров безопасности. -
NoSuchPaddingException- еслиtransformationсодержит схему заполнения, которая недоступна. -
IllegalArgumentException- еслиproviderявляется null или пустым. - См. также:
Provider
getInstance
public static final Cipher getInstance(String transformation,
Provider provider)
throws NoSuchAlgorithmException,
NoSuchPaddingException Возвращает объект Cipher, реализующий указанное преобразование.
Возвращается новый объект Cipher, инкапсулирующий реализацию CipherSpi из указанного объекта Provider. Обратите внимание, что указанный объект Provider не обязательно должен быть зарегистрирован в списке провайдеров.
- Параметры:
-
transformation- имя преобразования, например, AES/CBC/PKCS5Padding. См. раздел Cipher в документации Java Cryptography Architecture Standard Algorithm Name Documentation для получения информации о стандартных именах преобразований. -
provider- провайдер. - Возвращает:
- шифр, реализующий требуемое преобразование.
- Исключения:
-
NoSuchAlgorithmException- еслиtransformationявляется null, пустым, имеет неверный формат или если реализация CipherSpi для указанного алгоритма недоступна из указанного объекта Provider. -
NoSuchPaddingException- еслиtransformationсодержит схему заполнения, которая недоступна. -
IllegalArgumentException- еслиproviderявляется null. - См. также:
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- если этот шифр находится в неправильном состоянии (например, еще не инициализирован)
getIV
public final byte[] getIV()
Возвращает вектор инициализации (IV) в новом буфере.
Это полезно в случае, если был создан случайный 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- если (@code 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- если (@code 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- если (@code 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 и его инициализации.
- Параметры:
-
opmode- режим работы шифра (это один из следующих:ENCRYPT_MODE,DECRYPT_MODE,WRAP_MODEилиUNWRAP_MODE) -
key- ключ шифрования -
params- параметры алгоритма -
random- источник случайных чисел - Исключения:
-
InvalidKeyException- если предоставленный ключ не подходит для инициализации этого шифра, или его размер превышает максимальную допустимую величину (как определено в файлах политики юрисдикции). -
InvalidAlgorithmParameterException- если предоставленные параметры алгоритма не подходят для этого шифра, или этот шифр требует параметров алгоритма иparamsравно null, или предоставленные параметры алгоритма подразумевают криптографическую силу, превышающую установленные правовые ограничения (как определено в файлах политики юрисдикции). -
UnsupportedOperationException- если (@code 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 и его инициализации.
- Параметры:
-
opmode- режим работы этого шифра (это одно из следующих:ENCRYPT_MODE,DECRYPT_MODE,WRAP_MODEилиUNWRAP_MODE) -
key- ключ шифрования -
params- параметры алгоритма - Исключения:
-
InvalidKeyException- если заданный ключ не подходит для инициализации этого шифра или его размер ключа превышает максимально допустимый размер ключа (как определено в файлах политики юрисдикции). -
InvalidAlgorithmParameterException- если заданные параметры алгоритма не подходят для этого шифра или этому шифру требуются параметры алгоритма, иparamsравно null, или заданные параметры алгоритма подразумевают криптографическую силу, которая превысила бы установленные юридические пределы (как определено в файлах политики юрисдикции). -
UnsupportedOperationException- если (@code 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 и его инициализации.
- Параметры:
-
opmode- режим работы этого шифра (это одно из следующих:ENCRYPT_MODE,DECRYPT_MODE,WRAP_MODEилиUNWRAP_MODE) -
key- ключ шифрования -
params- параметры алгоритма -
random- источник случайности - Исключения:
-
InvalidKeyException- если заданный ключ не подходит для инициализации этого шифра или его размер ключа превышает максимально допустимый размер ключа (как определено в файлах политики юрисдикции). -
InvalidAlgorithmParameterException- если заданные параметры алгоритма не подходят для этого шифра или этому шифру требуются параметры алгоритма, иparamsравно null, или заданные параметры алгоритма подразумевают криптографическую силу, которая превысила бы установленные юридические пределы (как определено в файлах политики юрисдикции). -
UnsupportedOperationException- если (@code opmode} равенWRAP_MODEилиUNWRAP_MODE, но режим не реализован базовымCipherSpi.
init
public final void init(int opmode,
Certificate certificate)
throws InvalidKeyException Инициализирует этот шифр открытым ключом из заданного сертификата.
Шифр инициализируется для одной из следующих четырёх операций: шифрования, дешифрования, обертывания ключа или распаковки ключа, в зависимости от значения opmode.
Если сертификат типа X.509 и имеет поле расширения key usage, помеченное как критическое, и значение поля расширения key usage подразумевает, что открытый ключ в сертификате и соответствующий ему закрытый ключ не должны использоваться для операции, представленной значением opmode, выбрасывается исключение InvalidKeyException.
Если этому шифру требуются какие-либо параметры алгоритма, которые нельзя вывести из открытого ключа в заданном сертификате, реализация базового шифра должна сгенерировать необходимые параметры сама (используя параметры по умолчанию или случайные значения, специфичные для поставщика), если она инициализируется для шифрования или обертывания ключа, и сгенерировать исключение InvalidKeyException, если она инициализируется для дешифрования или распаковки ключа. Сгенерированные параметры можно получить, используя getParameters или getIV (если параметр является IV).
Если этому шифру требуются параметры алгоритма, которые нельзя вывести из входных параметров, и нет разумных значений параметров по умолчанию, специфичных для поставщика, инициализация обязательно завершится ошибкой.
Если этому шифру (включая его базовый механизм обратной связи или схему заполнения) требуются случайные байты (например, для генерации параметров), они будут получены с использованием реализации SecureRandom поставщика с наивысшим приоритетом в качестве источника случайности. (Если ни один из установленных поставщиков не предоставляет реализацию SecureRandom, будет использован системный источник случайности.)
Обратите внимание, что при инициализации объекта Cipher он теряет все ранее полученные состояния. Другими словами, инициализация Cipher эквивалентна созданию нового экземпляра этого Cipher и его инициализации.
- Параметры:
-
opmode- режим работы этого шифра (это одно из следующих:ENCRYPT_MODE,DECRYPT_MODE,WRAP_MODEилиUNWRAP_MODE) -
certificate- сертификат - Исключения:
-
InvalidKeyException- если открытый ключ в заданном сертификате не подходит для инициализации этого шифра, или этому шифру требуются параметры алгоритма, которые нельзя определить из открытого ключа в заданном сертификате, или размер ключа открытого ключа в заданном сертификате превышает максимальный разрешенный размер ключа (как определено в файлах политики юрисдикции). -
UnsupportedOperationException- если (@code opmode} равенWRAP_MODEилиUNWRAP_MODE, но режим не реализован базовымCipherSpi.
init
public final void init(int opmode,
Certificate certificate,
SecureRandom random)
throws InvalidKeyException Инициализирует этот шифр открытым ключом из заданного сертификата и источником случайности.
Шифр инициализируется для одной из следующих четырёх операций: шифрования, дешифрования, обертывания ключа или распаковки ключа, в зависимости от значения opmode.
Если сертификат типа X.509 и имеет поле расширения key usage, помеченное как критическое, и значение поля расширения key usage подразумевает, что открытый ключ в сертификате и соответствующий ему закрытый ключ не должны использоваться для операции, представленной значением opmode, выбрасывается исключение InvalidKeyException.
Если этому шифру требуются какие-либо параметры алгоритма, которые нельзя вывести из открытого ключа в данном certificate, реализация базового шифра должна сгенерировать необходимые параметры сама (используя параметры по умолчанию или случайные значения, специфичные для поставщика), если она инициализируется для шифрования или обертывания ключа, и сгенерировать исключение InvalidKeyException, если она инициализируется для дешифрования или распаковки ключа. Сгенерированные параметры можно получить, используя getParameters или getIV (если параметр является IV).
Если этому шифру требуются параметры алгоритма, которые нельзя вывести из входных параметров, и нет разумных значений параметров по умолчанию, специфичных для поставщика, инициализация обязательно завершится ошибкой.
Если этому шифру (включая его базовый механизм обратной связи или схему заполнения) требуются случайные байты (например, для генерации параметров), они будут получены из random.
Обратите внимание, что при инициализации объекта Cipher он теряет все ранее полученные состояния. Другими словами, инициализация Cipher эквивалентна созданию нового экземпляра этого Cipher и его инициализации.
- Параметры:
-
opmode- режим работы этого шифра (это одно из следующих:ENCRYPT_MODE,DECRYPT_MODE,WRAP_MODEилиUNWRAP_MODE) -
certificate- сертификат -
random- источник случайности - Исключения:
-
InvalidKeyException- если открытый ключ в заданном сертификате не подходит для инициализации этого шифра, или этому шифру требуются параметры алгоритма, которые нельзя определить из открытого ключа в заданном сертификате, или размер ключа открытого ключа в заданном сертификате превышает максимальный разрешенный размер ключа (как определено в файлах политики юрисдикции). -
UnsupportedOperationException- если (@code opmode} равенWRAP_MODEилиUNWRAP_MODE, но режим не реализован базовымCipherSpi.
update
public final byte[] update(byte[] input)
Продолжает многоэтапную операцию шифрования или дешифрования (в зависимости от способа инициализации шифра), обрабатывая ещё один фрагмент данных.
Байты в буфере input обрабатываются, а результат сохраняется в новом буфере.
Если длина input равна нулю, этот метод возвращает null.
- Параметры:
-
input- входной буфер - Возвращает:
- новый буфер с результатом или null, если базовый шифр является блочным шифром, а входные данные слишком короткие для создания нового блока.
- Вызывает исключения:
-
IllegalStateException- если этот шифр находится в неправильном состоянии (например, не был инициализирован)
update
public final byte[] update(byte[] input,
int inputOffset,
int inputLen) Продолжает многоэтапную операцию шифрования или дешифрования (в зависимости от способа инициализации шифра), обрабатывая ещё один фрагмент данных.
Первые inputLen байтов в буфере input, начиная с позиции inputOffset включительно, обрабатываются, а результат сохраняется в новом буфере.
Если inputLen равно нулю, этот метод возвращает null.
- Параметры:
-
input- входной буфер -
inputOffset- смещение в буфереinput, с которого начинается вход -
inputLen- длина входных данных - Возвращает:
- новый буфер с результатом или null, если базовый шифр является блочным шифром, а входные данные слишком короткие для создания нового блока.
- Вызывает исключения:
-
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 могут ссылаться на один и тот же массив байтов, и при копировании результата в буфер вывода не перезаписываются непрочитанные входные данные.
- Параметры:
-
input- входной буфер -
inputOffset- смещение в буфереinput, с которого начинается вход -
inputLen- длина входных данных -
output- буфер для результата - Возвращает:
- количество байтов, сохранённых в
output - Вызывает исключения:
-
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 могут ссылаться на один и тот же массив байтов, и при копировании результата в буфер вывода не перезаписываются непрочитанные входные данные.
- Параметры:
-
input- входной буфер -
inputOffset- смещение в буфереinput, с которого начинается вход -
inputLen- длина входных данных -
output- буфер для результата -
outputOffset- смещение в буфереoutput, куда сохраняется результат - Возвращает:
- количество байтов, сохранённых в
output - Вызывает исключения:
-
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 могут ссылаться на один и тот же блок памяти, и при копировании результата в буфер вывода не перезаписываются непрочитанные входные данные.
- Параметры:
-
input- входной ByteBuffer -
output- выходной ByteBuffer - Возвращает:
- количество байтов, сохранённых в
output - Вызывает исключения:
-
IllegalStateException- если этот шифр находится в неправильном состоянии (например, не был инициализирован) -
IllegalArgumentException- если входной и выходной буферы являются одним и тем же объектом -
ReadOnlyBufferException- если буфер вывода является только для чтения -
ShortBufferException- если в буфере вывода недостаточно места - С момента:
- 1.5
doFinal
public final byte[] doFinal()
throws IllegalBlockSizeException,
BadPaddingException Завершает многоэтапную операцию шифрования или дешифрования в зависимости от способа инициализации шифра.
Входные данные, которые могли быть буферизованы во время предыдущей операции update, обрабатываются с применением (если запрошено) заполнения. Если используется режим AEAD, такой как GCM/CCM, тег аутентификации добавляется в случае шифрования или проверяется в случае дешифрования. Результат сохраняется в новом буфере.
После завершения метод сбрасывает объект шифра в состояние, в котором он находился при предыдущей инициализации с помощью вызова init. То есть объект сброшен и готов к шифрованию или дешифрованию (в зависимости от режима операции, указанного в вызове init) дополнительных данных.
Примечание: если возникает какое-либо исключение, возможно, потребуется сбросить объект шифра перед повторным использованием.
- Возвращает:
- новый буфер с результатом
- Вызывает исключения:
-
IllegalStateException- если этот шифр находится в неправильном состоянии (например, не был инициализирован) -
IllegalBlockSizeException- если этот шифр является блочным шифром, заполнение не запрошено (только в режиме шифрования), и общая длина входных данных, обработанных этим шифром, не кратна размеру блока; или если данный алгоритм шифрования не может обработать предоставленные входные данные. -
BadPaddingException- если этот шифр дешифрует, и заполнение запрошено, но дешифрованные данные не ограничены соответствующими байтами заполнения -
AEADBadTagException- если этот шифр дешифрует в режиме 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) дополнительных данных.
Примечание: если возникает какое-либо исключение, возможно, потребуется сбросить объект шифра перед повторным использованием.
- Параметры:
-
output- буфер для результата -
outputOffset- смещение в буфереoutput, куда сохраняется результат - Возвращает:
- количество байтов, сохранённых в
output - Вызывает исключения:
-
IllegalStateException- если этот шифр находится в неправильном состоянии (например, не был инициализирован) -
IllegalBlockSizeException- если этот шифр является блочным шифром, заполнение не запрошено (только в режиме шифрования), и общая длина входных данных, обработанных этим шифром, не кратна размеру блока; или если данный алгоритм шифрования не может обработать предоставленные входные данные. -
ShortBufferException- если заданный буфер вывода слишком мал для хранения результата -
BadPaddingException- если этот шифр дешифрует, и заполнение запрошено, но дешифрованные данные не ограничены соответствующими байтами заполнения -
AEADBadTagException- если этот шифр дешифрует в режиме AEAD (например, GCM/CCM), и полученный тег аутентификации не соответствует вычисленному значению
doFinal
public final byte[] doFinal(byte[] input)
throws IllegalBlockSizeException,
BadPaddingException Шифрует или дешифрует данные в одношаговой операции или завершает многошаговую операцию. Данные шифруются или дешифруются в зависимости от того, как был инициализирован данный шифр.
Байты в буфере input, и любые входные байты, которые могли быть буферизованы во время предыдущей операции update, обрабатываются с применением заполнения (если запрошено). Если используется режим AEAD, такой как GCM/CCM, тег аутентификации добавляется при шифровании или проверяется при дешифровании. Результат хранится в новом буфере.
По завершении метод сбрасывает объект шифра в состояние, в котором он находился при предыдущей инициализации через вызов init. То есть, объект сбрасывается и готов к шифрованию или дешифрованию (в зависимости от режима операции, указанного в вызове init) дополнительных данных.
Примечание: если возникает исключение, возможно, потребуется сбросить объект шифра перед повторным использованием.
- Параметры:
-
input- буфер ввода - Возвращаемое значение:
- новый буфер с результатом
- Исключения:
-
IllegalStateException- если шифр находится в неправильном состоянии (например, не был инициализирован) -
IllegalBlockSizeException- если этот шифр является блочным шифром, заполнение не было запрошено (только в режиме шифрования), и общая длина входных данных, обработанных этим шифром, не кратна размеру блока; или если алгоритм шифрования не может обработать предоставленные входные данные. -
BadPaddingException- если шифр находится в режиме дешифрования, и (распаковка) заполнение было запрошено, но дешифрованные данные не ограничены соответствующими байтами заполнения -
AEADBadTagException- если шифр дешифрует в режиме 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) дополнительных данных.
Примечание: если возникает исключение, возможно, потребуется сбросить объект шифра перед повторным использованием.
- Параметры:
-
input- буфер ввода -
inputOffset- смещение в буфереinput, где начинается ввод -
inputLen- длина входных данных - Возвращаемое значение:
- новый буфер с результатом
- Исключения:
-
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 могут ссылаться на один и тот же массив байтов и при копировании результата в буфер вывода не будут перезаписаны необработанные входные данные.
- Параметры:
-
input- буфер ввода -
inputOffset- смещение в буфереinput, где начинается ввод -
inputLen- длина входных данных -
output- буфер для результата - Возвращаемое значение:
- количество байтов, сохранённых в
output - Исключения:
-
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 могут ссылаться на один и тот же массив байтов и при копировании результата в буфер вывода не будут перезаписаны необработанные входные данные.
- Параметры:
-
input- буфер ввода -
inputOffset- смещение в буфереinput, где начинается ввод -
inputLen- длина входных данных -
output- буфер для результата -
outputOffset- смещение в буфереoutput, где записывается результат - Возвращаемое значение:
- количество байтов, сохранённых в
output - Исключения:
-
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 могут ссылаться на один и тот же массив байтов, и при копировании результата в буфер вывода не перезаписываются необработанные входные данные.
- Параметры:
-
input- входной ByteBuffer -
output- выходной ByteBuffer - Возвращает:
- количество байтов, сохранённых в
output - Выбрасывает:
-
IllegalStateException- если этот шифр находится в неправильном состоянии (например, не был инициализирован) -
IllegalArgumentException- если входной и выходной буферы — один и тот же объект -
ReadOnlyBufferException- если буфер вывода является только для чтения -
IllegalBlockSizeException- если этот шифр — блочный шифр, запрос на выполнение падинга не был сделан (только в режиме шифрования), и общий размер входных данных, обработанных этим шифром, не кратен размеру блока; или если этот алгоритм шифрования не может обработать предоставленные входные данные. -
ShortBufferException- если в буфере вывода недостаточно места -
BadPaddingException- если этот шифр находится в режиме дешифрования, и (распаковка) запрос на выполнение падинга был сделан, но дешифрованные данные не ограничены соответствующими байтами падинга -
AEADBadTagException- если этот шифр дешифрует в режиме AEAD (таком как GCM/CCM), и полученный тег аутентификации не соответствует вычисленному значению - С:
- 1.5
wrap
public final byte[] wrap(Key key)
throws IllegalBlockSizeException,
InvalidKeyException Завернуть ключ.
- Параметры:
-
key- ключ для завертывания. - Возвращает:
- завернутый ключ.
- Выбрасывает:
-
IllegalStateException- если этот шифр находится в неправильном состоянии (например, не был инициализирован). -
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- если этот шифр находится в неправильном состоянии (например, не был инициализирован). -
NoSuchAlgorithmException- если ни один из установленных поставщиков не может создать ключи типаwrappedKeyTypeдляwrappedKeyAlgorithm. -
InvalidKeyException- еслиwrappedKeyне представляет собой завернутый ключ типаwrappedKeyTypeдляwrappedKeyAlgorithm. -
UnsupportedOperationException- если соответствующий метод вCipherSpiне поддерживается.
getMaxAllowedKeyLength
public static final int getMaxAllowedKeyLength(String transformation)
throws NoSuchAlgorithmException Возвращает максимальную длину ключа для указанного преобразования в соответствии с установленными политиками юрисдикции JCE. Если установлены файлы политик JCE с неограниченной силой, будет возвращено Integer.MAX_VALUE. Дополнительную информацию о значениях по умолчанию для размеров ключей в файлах политик юрисдикции JCE см. в Приложении E в Руководстве по архитектуре криптографии Java.
- Параметры:
-
transformation- преобразование шифра. - Возвращает:
- максимальная длина ключа в битах или Integer.MAX_VALUE.
- Выбрасывает:
-
NullPointerException- еслиtransformationравно null. -
NoSuchAlgorithmException- еслиtransformationне является допустимым преобразованием, т. е. имеет вид "алгоритм" или "алгоритм/режим/падирование". - С:
- 1.5
getMaxAllowedParameterSpec
public static final AlgorithmParameterSpec getMaxAllowedParameterSpec(String transformation)
throws NoSuchAlgorithmException Возвращает объект AlgorithmParameterSpec, содержащий максимальное значение параметра шифра в соответствии с файлом политики юрисдикции. Если установлены файлы политик JCE с неограниченной силой или в файле политики нет максимального ограничения на параметры для указанного преобразования, будет возвращено null.
- Параметры:
-
transformation- преобразование шифра. - Возвращает:
- объект AlgorithmParameterSpec, содержащий максимальное значение или null.
- Выбрасывает:
-
NullPointerException- еслиtransformationравно null. -
NoSuchAlgorithmException- еслиtransformationне является допустимым преобразованием, т. е. имеет вид "алгоритм" или "алгоритм/режим/падирование". - С:
- 1.5
updateAAD
public final void updateAAD(byte[] src)
Продолжение многоэтапного обновления дополнительных данных аутентификации (AAD).
Вызовы этого метода предоставляют 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) с использованием подмножества предоставленного буфера.
Вызовы этого метода предоставляют 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).
Вызовы этого метода предоставляют 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
© 1993, 2020, 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.