Spec-Zone.ru › OpenJDK 8

Класс 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)
Эти трансформации описаны в разделе Cipher документации по стандартным именам алгоритмов Java Cryptography Architecture. Обратитесь к документации по выпуску вашей реализации, чтобы узнать, какие другие трансформации поддерживаются.
С момента:
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()

Возвращает имя алгоритма этого объекта Cipher.

int getBlockSize()

Возвращает размер блока (в байтах).

ExemptionMechanism getExemptionMechanism()

Возвращает объект механизма исключения, используемый с этим шифром.

static Cipher getInstance(String transformation)

Возвращает объект Cipher, который реализует указанное преобразование.

static Cipher getInstance(String transformation, Provider provider)

Возвращает объект Cipher, который реализует указанное преобразование.

static Cipher getInstance(String transformation, String provider)

Возвращает объект Cipher, который реализует указанное преобразование.

byte[] getIV()

Возвращает вектор инициализации (IV) в новом буфере.

static int getMaxAllowedKeyLength(String transformation)

Возвращает максимальную длину ключа для указанного преобразования в соответствии с установленными политиками юрисдикции JCE.

static AlgorithmParameterSpec getMaxAllowedParameterSpec(String transformation)

Возвращает объект AlgorithmParameterSpec, содержащий максимальное значение параметра шифра в соответствии с файлом политики юрисдикции.

int getOutputSize(int inputLen)

Возвращает длину в байтах, необходимую для буфера вывода, чтобы содержать результат следующей операции update или doFinal, учитывая длину входных данных inputLen (в байтах).

AlgorithmParameters getParameters()

Возвращает параметры, используемые с этим шифром.

Provider getProvider()

Возвращает поставщика этого объекта Cipher.

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.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API