Класс Cipher
- java.lang.Object
-
- javax.crypto.Cipher
- Прямые известные подклассы:
NullCipher
public class Cipher extends Object
Этот класс предоставляет функциональность криптографического шифра для шифрования и дешифрования. Он является основой фреймворка Java Cryptographic Extension (JCE).
Для создания объекта Cipher приложение вызывает метод Cipher's getInstance и передает ему имя требуемой трансформации. Необязательно, можно указать имя поставщика.
Трансформация — это строка, описывающая операцию (или набор операций), которые необходимо выполнить над заданным входом, чтобы получить некоторый выход. Трансформация всегда включает имя криптографического алгоритма (например, AES) и может быть дополнена режимом работы и схемой заполнения.
Трансформация имеет вид:
- "алгоритм/режим/заполнение" или
- "алгоритм"
(в последнем случае используются значения по умолчанию для режима и схемы заполнения, специфичные для поставщика). Например, следующая строка является допустимой трансформацией:
Cipher c = Cipher.getInstance("AES/CBC/PKCS5Padding"); Используя режимы, такие как CFB и OFB, блочные шифры могут шифровать данные в блоках, меньших размера фактического блока шифра. При запросе такого режима можно необязательно указать количество бит, обрабатываемых за раз, добавив это число к имени режима, как показано в преобразованиях "AES/CFB8/NoPadding" и "AES/OFB32/PKCS5Padding". Если такое число не указано, используется значение по умолчанию, специфичное для поставщика. (См. Документацию поставщиков JDK для значений по умолчанию поставщиков JDK.) Таким образом, блочные шифры могут быть преобразованы в потоковые шифры, ориентированные на байты, используя режим с 8-битными блоками, такой как CFB8 или OFB8. Режимы, такие как аутентифицированное шифрование с дополнительными связанными данными (AEAD), обеспечивают гарантии подлинности как для конфиденциальных данных, так и для дополнительных связанных данных (AAD), которые не зашифрованы. (Дополнительную информацию об алгоритмах AEAD и AAD, таких как GCM/CCM, см. в RFC 5116.) Конфиденциальные и AAD данные могут использоваться при вычислении тега аутентификации (аналогично Mac). Этот тег добавляется к зашифрованному тексту во время шифрования и проверяется при дешифровании.
Режимы AEAD, такие как GCM/CCM, выполняют все вычисления аутентификации AAD перед началом вычислений аутентификации зашифрованного текста. Чтобы избежать необходимости буферизации зашифрованного текста реализациями, все данные AAD должны быть предоставлены реализациям GCM/CCM (через методы updateAAD) до обработки зашифрованного текста (через методы update и doFinal).
Обратите внимание, что режим GCM имеет требование уникальности для IV, используемых в шифровании с заданным ключом. При повторном использовании IV для шифрования GCM такие использования подвержены атакам подделки. Таким образом, после каждой операции шифрования с использованием режима GCM вызывающие стороны должны повторно инициализировать объекты шифра с параметрами GCM, имеющими другое значение IV.
GCMParameterSpec s = ...;
cipher.init(..., s);
// If the GCM parameters were generated by the provider, it can
// be retrieved by:
// cipher.getParameters().getParameterSpec(GCMParameterSpec.class);
cipher.updateAAD(...); // AAD
cipher.update(...); // Multi-part update
cipher.doFinal(...); // conclusion of operation
// Use a different IV value for every encryption
byte[] newIv = ...;
s = new GCMParameterSpec(s.getTLen(), newIv);
cipher.init(..., s);
... Алгоритмы ChaCha20 и ChaCha20-Poly1305 имеют аналогичное требование к уникальности nonce при заданном ключе. После каждой операции шифрования или дешифрования вызывающие стороны должны повторно инициализировать свои шифры ChaCha20 или ChaCha20-Poly1305 с параметрами, указывающими другое значение nonce. Дополнительную информацию об алгоритмах ChaCha20 и ChaCha20-Poly1305 см. в RFC 7539. Каждая реализация Java платформы должна поддерживать следующие стандартные Cipher трансформации с размерами ключей в скобках:
-
AES/CBC/NoPadding(128) -
AES/CBC/PKCS5Padding(128) -
AES/ECB/NoPadding(128) -
AES/ECB/PKCS5Padding(128) -
AES/GCM/NoPadding(128) -
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,
String provider) | Возвращает объект |
static Cipher | getInstance(String transformation,
Provider 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,
AlgorithmParameters params,
SecureRandom random) | Инициализирует этот шифр с ключом, набором параметров алгоритма и источником случайных чисел. |
void | init(int opmode,
Key key,
SecureRandom random) | Инициализирует этот шифр с ключом и источником случайных чисел. |
void | init(int opmode,
Key key,
AlgorithmParameterSpec params) | Инициализирует этот шифр с ключом и набором параметров алгоритма. |
void | init(int opmode,
Key key,
AlgorithmParameterSpec params,
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
Константа, используемая для инициализации шифра в режиме шифрования.
- См. также:
- Значения константных полей
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- преобразование
Методы
getInstance
public static final Cipher getInstance(String transformation)
throws NoSuchAlgorithmException,
NoSuchPaddingException Возвращает объект шифра, реализующий указанное преобразование.
Этот метод проходит по списку зарегистрированных поставщиков безопасности, начиная с наиболее предпочтительного. Возвращается новый объект Cipher, инкапсулирующий реализацию CipherSpi из первого поставщика, поддерживающего указанный алгоритм.
Обратите внимание, что список зарегистрированных поставщиков можно получить через метод получения поставщиков.
- Примечание о реализации:
- Реализация JDK Reference дополнительно использует свойство
jdk.security.provider.preferredSecurityдля определения предпочтительного порядка поставщиков для указанного алгоритма. Это может отличаться от порядка поставщиков, возвращаемых методом получения поставщиков. - Параметры:
-
transformation- имя преобразования, например, AES/CBC/PKCS5Padding. См. раздел Cipher в Спецификации имен стандартных алгоритмов Java Security для получения информации об именах стандартных преобразований. - Возвращает:
- шифр, реализующий запрошенное преобразование
- Исключение:
-
NoSuchAlgorithmException- еслиtransformationявляетсяnull, пустым, в некорректном формате или если ни одинProviderне поддерживает реализациюCipherSpiдля указанного алгоритма -
NoSuchPaddingException- еслиtransformationсодержит схему заполнения, которая недоступна - См. также:
Provider
getInstance
public static final Cipher getInstance(String transformation,
String provider)
throws NoSuchAlgorithmException,
NoSuchProviderException,
NoSuchPaddingException Возвращает объект шифра, реализующий указанное преобразование.
Возвращается новый объект Cipher, инкапсулирующий реализацию CipherSpi от указанного поставщика. Указанный поставщик должен быть зарегистрирован в списке поставщиков безопасности.
Обратите внимание, что список зарегистрированных поставщиков можно получить через метод получения поставщиков.
- Параметры:
-
transformation- имя преобразования, например, AES/CBC/PKCS5Padding. См. раздел Cipher в Спецификации имен стандартных алгоритмов Java Security для получения информации об именах стандартных преобразований. -
provider- имя поставщика. - Возвращает:
- шифр, реализующий запрошенное преобразование
- Исключение:
-
IllegalArgumentException- еслиproviderявляетсяnullили пустым -
NoSuchAlgorithmException- еслиtransformationявляетсяnull, пустым, в некорректном формате, или если реализацияCipherSpiдля указанного алгоритма недоступна от указанного поставщика -
NoSuchPaddingException- еслиtransformationсодержит схему заполнения, которая недоступна -
NoSuchProviderException- если указанный поставщик не зарегистрирован в списке поставщиков безопасности - См. также:
Provider
getInstance
public static final Cipher getInstance(String transformation,
Provider provider)
throws NoSuchAlgorithmException,
NoSuchPaddingException Возвращает объект шифра, реализующий указанное преобразование.
Возвращается новый объект Cipher, инкапсулирующий реализацию CipherSpi из указанного объекта Provider. Обратите внимание, что указанный объект Provider не обязательно должен быть зарегистрирован в списке поставщиков.
- Параметры:
-
transformation- имя преобразования, например, AES/CBC/PKCS5Padding. См. раздел Cipher в Спецификации имен стандартных алгоритмов Java Security для получения информации об именах стандартных преобразований. -
provider- поставщик. - Возвращает:
- шифр, реализующий запрошенное преобразование
- Исключение:
-
IllegalArgumentException- еслиproviderявляетсяnull -
NoSuchAlgorithmException- еслиtransformationявляетсяnull, пустым, в некорректном формате, или если реализацияCipherSpiдля указанного алгоритма недоступна от указанного объектаProvider -
NoSuchPaddingException- еслиtransformationсодержит схему заполнения, которая недоступна - См. также:
Provider
getProvider
public final Provider getProvider()
Возвращает поставщика данного объекта шифра.
- Возвращает:
- поставщик данного объекта шифра
getAlgorithm
public final String getAlgorithm()
Возвращает имя алгоритма данного объекта шифра.
Это то же имя, которое было указано в одном из вызовов getInstance, которые создали этот объект шифра.
- Возвращает:
- имя алгоритма данного объекта шифра.
getBlockSize
public final int getBlockSize()
Возвращает размер блока (в байтах).
- Возвращает:
- размер блока (в байтах) или 0, если основной алгоритм не является блочным шифром
getOutputSize
public final int getOutputSize(int inputLen)
Возвращает длину в байтах, которую должен иметь буфер вывода, чтобы содержать результат следующей операции шифрования или дешифрования, с учётом длины входных данных (в байтах).
Этот вызов учитывает любые необработанные (буферизованные) данные из предыдущего вызова, заполнение и тэги AEAD.
Фактическая длина вывода следующего вызова шифрования или дешифрования может быть меньше, чем длина, возвращаемая этим методом.
- Параметры:
-
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 Инициализирует этот шифр с помощью ключа.
Шифр инициализируется для одной из следующих четырёх операций: шифрования, дешифрования, обертывания ключа или распаковки ключа, в зависимости от значения режима.
Если этот шифр требует каких-либо параметров алгоритма, которые не могут быть получены из данного ключа, основная реализация шифра должна сгенерировать необходимые параметры сама (используя значения по умолчанию или случайные значения, специфичные для поставщика), если она инициализируется для шифрования или обертывания ключа, и вызвать соответствующие методы при инициализации для дешифрования или распаковки ключа. Сгенерированные параметры можно получить, используя getParameters или getIV (если параметром является IV).
Если этот шифр требует параметров алгоритма, которые не могут быть получены из входных параметров, и нет разумных значений по умолчанию, специфичных для поставщика, инициализация обязательно завершится неудачей.
Если этот шифр (включая его схему обратной связи или заполнения) требует случайных байтов (например, для генерации параметров), он получит их, используя реализацию SecureRandom поставщика с наивысшим приоритетом, установленного в системе, как источник случайности. (Если ни один из установленных поставщиков не предоставляет реализацию SecureRandom, будет использован системный источник случайности.)
Обратите внимание, что при инициализации объекта Cipher он теряет все ранее полученные состояния. Другими словами, инициализация Cipher эквивалентна созданию нового экземпляра этого Cipher и его инициализации.
- Параметры:
-
opmode- режим операции этого шифра (это один из следующих:ENCRYPT_MODE,DECRYPT_MODE,WRAP_MODEилиUNWRAP_MODE) -
key- ключ - Исключение:
-
InvalidKeyException- если предоставленный ключ неприемлем для инициализации этого шифра, или требует параметров алгоритма, которые невозможно определить из данного ключа, или если размер ключа превышает максимально разрешенный размер ключа (как определено из файлов политики юрисдикции). -
UnsupportedOperationException- еслиopmodeявляетсяWRAP_MODEилиUNWRAP_MODE, но режим не реализован основнойCipherSpi.
init
public final void init(int opmode,
Key key,
SecureRandom random)
throws InvalidKeyException Инициализирует этот шифр с помощью ключа и источника случайных чисел.
Шифр инициализируется для одной из следующих четырёх операций: шифрование, дешифрование, упаковка ключа или распаковка ключа, в зависимости от значения opmode.
Если этот шифр требует каких-либо параметров алгоритма, которые не могут быть получены из заданного key, базовая реализация шифра должна сама генерировать необходимые параметры (используя значения по умолчанию или случайные значения, специфичные для поставщика), если он инициализируется для шифрования или упаковки ключа, и вызывать InvalidKeyException, если он инициализируется для дешифрования или распаковки ключа. Сгенерированные параметры могут быть получены с помощью getParameters или getIV (если параметр является IV).
Если этот шифр требует параметров алгоритма, которые не могут быть получены из входных параметров, и нет разумных значений по умолчанию, специфичных для поставщика, инициализация обязательно завершится неудачей.
Если этот шифр (включая его базовую схему обратной связи или заполнения) требует каких-либо случайных байтов (например, для генерации параметров), он получит их из random.
Обратите внимание, что при инициализации объекта Cipher он теряет все ранее полученное состояние. Другими словами, инициализация Cipher эквивалентна созданию нового экземпляра этого Cipher и его инициализации.
- Parameters:
-
opmode- режим работы этого шифра (это один из следующих:ENCRYPT_MODE,DECRYPT_MODE,WRAP_MODEилиUNWRAP_MODE) -
key- ключ шифрования -
random- источник случайных чисел - Throws:
-
InvalidKeyException- если заданный ключ не подходит для инициализации этого шифра, или требует параметров алгоритма, которые не могут быть определены из заданного ключа, или если заданный ключ имеет размер ключа, который превышает максимально допустимый размер ключа (как определено из сконфигурированных файлов политики юрисдикции). -
UnsupportedOperationException- еслиopmodeявляетсяWRAP_MODEилиUNWRAP_MODE, но режим не реализован базовымCipherSpi.
init
public final void init(int opmode,
Key key,
AlgorithmParameterSpec params)
throws InvalidKeyException,
InvalidAlgorithmParameterException Инициализирует этот шифр с помощью ключа и набора параметров алгоритма.
Шифр инициализируется для одной из следующих четырёх операций: шифрование, дешифрование, упаковка ключа или распаковка ключа, в зависимости от значения opmode.
Если этот шифр требует каких-либо параметров алгоритма и params является null, базовая реализация шифра должна сама генерировать необходимые параметры (используя значения по умолчанию или случайные значения, специфичные для поставщика), если он инициализируется для шифрования или упаковки ключа, и вызывать InvalidAlgorithmParameterException если он инициализируется для дешифрования или распаковки ключа. Сгенерированные параметры могут быть получены с помощью getParameters или getIV (если параметр является IV).
Если этот шифр требует параметров алгоритма, которые не могут быть получены из входных параметров, и нет разумных значений по умолчанию, специфичных для поставщика, инициализация обязательно завершится неудачей.
Если этот шифр (включая его базовую схему обратной связи или заполнения) требует каких-либо случайных байтов (например, для генерации параметров), он получит их с помощью реализации SecureRandom поставщика с наивысшим приоритетом. (Если ни один из установленных поставщиков не предоставляет реализацию SecureRandom, будет использоваться системный источник случайных чисел).
Обратите внимание, что при инициализации объекта Cipher он теряет всё ранее полученное состояние. Другими словами, инициализация Cipher эквивалентна созданию нового экземпляра этого Cipher и его инициализации.
- Parameters:
-
opmode- режим работы этого шифра (это один из следующих:ENCRYPT_MODE,DECRYPT_MODE,WRAP_MODEилиUNWRAP_MODE) -
key- ключ шифрования -
params- параметры алгоритма - Throws:
-
InvalidKeyException- если заданный ключ не подходит для инициализации этого шифра, или его размер ключа превышает максимально допустимый размер ключа (как определено из сконфигурированных файлов политики юрисдикции). -
InvalidAlgorithmParameterException- если заданные параметры алгоритма не подходят для этого шифра, или этот шифр требует параметров алгоритма, иparamsявляется null, или заданные параметры алгоритма подразумевают криптографическую стойкость, которая превысит юридические ограничения (как определено из сконфигурированных файлов политики юрисдикции). -
UnsupportedOperationException- еслиopmodeявляетсяWRAP_MODEилиUNWRAP_MODE, но режим не реализован базовымCipherSpi.
init
public final void init(int opmode,
Key key,
AlgorithmParameterSpec params,
SecureRandom random)
throws InvalidKeyException,
InvalidAlgorithmParameterException Инициализирует этот шифр с помощью ключа, набора параметров алгоритма и источника случайных чисел.
Шифр инициализируется для одной из следующих четырёх операций: шифрование, дешифрование, упаковка ключа или распаковка ключа, в зависимости от значения opmode.
Если этот шифр требует каких-либо параметров алгоритма и params является null, базовая реализация шифра должна сама генерировать необходимые параметры (используя значения по умолчанию или случайные значения, специфичные для поставщика), если он инициализируется для шифрования или упаковки ключа, и вызывать InvalidAlgorithmParameterException если он инициализируется для дешифрования или распаковки ключа. Сгенерированные параметры могут быть получены с помощью getParameters или getIV (если параметр является IV).
Если этот шифр требует параметров алгоритма, которые не могут быть получены из входных параметров, и нет разумных значений по умолчанию, специфичных для поставщика, инициализация обязательно завершится неудачей.
Если этот шифр (включая его базовую схему обратной связи или заполнения) требует каких-либо случайных байтов (например, для генерации параметров), он получит их из random.
Обратите внимание, что при инициализации объекта Cipher он теряет всё ранее полученное состояние. Другими словами, инициализация Cipher эквивалентна созданию нового экземпляра этого Cipher и его инициализации.
- Parameters:
-
opmode- режим работы этого шифра (это один из следующих:ENCRYPT_MODE,DECRYPT_MODE,WRAP_MODEилиUNWRAP_MODE) -
key- ключ шифрования -
params- параметры алгоритма -
random- источник случайных чисел - Throws:
-
InvalidKeyException- если заданный ключ не подходит для инициализации этого шифра, или его размер ключа превышает максимально допустимый размер ключа (как определено из сконфигурированных файлов политики юрисдикции). -
InvalidAlgorithmParameterException- если заданные параметры алгоритма не подходят для этого шифра, или этот шифр требует параметров алгоритма, иparamsявляется null, или заданные параметры алгоритма подразумевают криптографическую стойкость, которая превысит юридические ограничения (как определено из сконфигурированных файлов политики юрисдикции). -
UnsupportedOperationException- еслиopmodeявляетсяWRAP_MODEилиUNWRAP_MODE, но режим не реализован базовымCipherSpi.
init
public final void init(int opmode,
Key key,
AlgorithmParameters params)
throws InvalidKeyException,
InvalidAlgorithmParameterException Инициализирует этот шифр с помощью ключа и набора параметров алгоритма.
Шифр инициализируется для одной из следующих четырёх операций: шифрование, дешифрование, упаковка ключа или распаковка ключа, в зависимости от значения opmode.
Если этот шифр требует каких-либо параметров алгоритма и params является null, базовая реализация шифра должна сама генерировать необходимые параметры (используя значения по умолчанию или случайные значения, специфичные для поставщика), если он инициализируется для шифрования или упаковки ключа, и вызывать InvalidAlgorithmParameterException если он инициализируется для дешифрования или распаковки ключа. Сгенерированные параметры могут быть получены с помощью getParameters или getIV (если параметр является IV).
Если этот шифр требует параметров алгоритма, которые не могут быть получены из входных параметров, и нет разумных значений по умолчанию, специфичных для поставщика, инициализация обязательно завершится неудачей.
Если этот шифр (включая его базовую схему обратной связи или заполнения) требует каких-либо случайных байтов (например, для генерации параметров), он получит их с помощью реализации SecureRandom поставщика с наивысшим приоритетом. (Если ни один из установленных поставщиков не предоставляет реализацию SecureRandom, будет использоваться системный источник случайных чисел).
Обратите внимание, что при инициализации объекта Cipher он теряет всё ранее полученное состояние. Другими словами, инициализация Cipher эквивалентна созданию нового экземпляра этого Cipher и его инициализации.
- Parameters:
-
opmode- режим работы этого шифра (это один из следующих:ENCRYPT_MODE,DECRYPT_MODE,WRAP_MODEилиUNWRAP_MODE) -
key- ключ шифрования -
params- параметры алгоритма - Throws:
-
InvalidKeyException- если заданный ключ не подходит для инициализации этого шифра, или его размер ключа превышает максимально допустимый размер ключа (как определено из сконфигурированных файлов политики юрисдикции). -
InvalidAlgorithmParameterException- если заданные параметры алгоритма не подходят для этого шифра, или этот шифр требует параметров алгоритма, иparamsявляется null, или заданные параметры алгоритма подразумевают криптографическую стойкость, которая превысит юридические ограничения (как определено из сконфигурированных файлов политики юрисдикции). -
UnsupportedOperationException- еслиopmodeявляетсяWRAP_MODEилиUNWRAP_MODE, но режим не реализован базовымCipherSpi.
init
public final void init(int opmode,
Key key,
AlgorithmParameters params,
SecureRandom random)
throws InvalidKeyException,
InvalidAlgorithmParameterException Инициализирует этот шифр с ключом, набором параметров алгоритма и источником случайности.
Шифр инициализируется для одной из четырёх операций: шифрования, дешифрования, обертывания ключа или распаковки ключа, в зависимости от значения opmode.
Если этому шифру необходимы какие-либо параметры алгоритма и params равно null, реализация подлежащего шифра должна сгенерировать необходимые параметры сама (используя параметры по умолчанию или случайные значения, специфичные для поставщика) в случае инициализации для шифрования или обертывания ключа и выбросить исключение InvalidAlgorithmParameterException, если инициализация происходит для дешифрования или распаковки ключа. Сгенерированные параметры можно получить, используя getParameters или getIV (если параметр является IV).
Если этому шифру необходимы параметры алгоритма, которые нельзя получить из входных параметров, и нет разумных значений по умолчанию, специфичных для поставщика, инициализация обязательно завершится неудачей.
Если этому шифру (включая его схему обратной связи или схему заполнения) необходимы какие-либо случайные байты (например, для генерации параметров), они будут получены из random.
Обратите внимание, что при инициализации объекта Cipher он теряет все ранее полученное состояние. Другими словами, инициализация Cipher эквивалентна созданию нового экземпляра этого Cipher и его инициализации.
- Параметры:
-
opmode- режим работы этого шифра (это одно из следующих:ENCRYPT_MODE,DECRYPT_MODE,WRAP_MODEилиUNWRAP_MODE) -
key- криптографический ключ -
params- параметры алгоритма -
random- источник случайности - Исключения:
-
InvalidKeyException- если заданный ключ не подходит для инициализации этого шифра или его размер ключа превышает максимально допустимый размер ключа (определяется файлами политики юрисдикции). -
InvalidAlgorithmParameterException- если заданные параметры алгоритма не подходят для этого шифра или этому шифру необходимы параметры алгоритма, иparamsравно null, или заданные параметры алгоритма подразумевают криптографическую силу, которая превышает установленные правовые ограничения (определяется файлами политики юрисдикции). -
UnsupportedOperationException- еслиopmodeравноWRAP_MODEилиUNWRAP_MODE, но режим не реализован подлежащимCipherSpi.
init
public final void init(int opmode,
Certificate certificate)
throws InvalidKeyException Инициализирует этот шифр с открытым ключом из заданного сертификата.
Шифр инициализируется для одной из четырёх операций: шифрования, дешифрования, обертывания ключа или распаковки ключа, в зависимости от значения opmode.
Если сертификат типа X.509 и имеет поле расширения key usage, отмеченное как критическое, и значение поля расширения 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- если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- если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, чтобы определить, каким должен быть размер буфера вывода.
Если длина входных данных равна нулю, этот метод возвращает ноль.
Примечание: этот метод должен быть безопасным для копирования, что означает, что буферы 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 см. в разделе «Криптографические значения по умолчанию и ограничения» в документации поставщиков JDK.
- Параметры:
-
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.
https://docs.oracle.com/en/java/javase/11/docs/api/java.base/javax/crypto/Cipher.html