Spec-Zone .ru
спецификации, руководства, описания, API
|
public class Cipher extends Object
Чтобы создать объект Шифра, приложение вызывает Шифр getInstance
метод, и передачи имя требуемого преобразования к этому. Дополнительно, имя провайдера может быть определено.
Преобразование является строкой, которая описывает работу (или набор операций), чтобы быть выполненной на данном вводе, произвести некоторый вывод. Преобразование всегда включает имя криптографического алгоритма (например, DES), и может сопровождаться режимом обратной связи и дополнительной схемой.
Преобразование имеет форму:
(в последнем случае специфичные для провайдера значения по умолчанию для режима и дополнительной схемы используются). Например, следующее является допустимым преобразованием:
Cipher c = Cipher.getInstance("DES/CBC/PKCS5Padding");Используя режимы такой как
CFB
и OFB
, блочные шифры могут зашифровать данные в модулях, меньших чем фактический размер блока шифра. Запрашивая такой режим, можно дополнительно определить число битов, которые будут обработаны за один раз, добавляя это число к имени режима как показано в"DES/CFB8/NoPadding
"и"DES/OFB32/PKCS5Padding
"преобразования. Если никакое такое число не определяется, специфичное для провайдера значение по умолчанию используется. (Например, провайдер SunJCE использует значение по умолчанию 64 битов для DES.) Таким образом блочные шифры могут быть превращены в байтовые поточные шифры при использовании режима на 8 битов, такие как CFB8 или OFB8. Режимы, такие как Аутентифицируемое Шифрование со Связанными Данными (AEAD) обеспечивают обеспечения подлинности и для конфиденциальных данных и для Дополнительных Связанных Данных (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
преобразования с размерами ключа в круглых скобках: 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)
Создает объект Шифра.
|
Модификатор и Тип | Метод и Описание |
---|---|
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)
Шифрует или дешифрует данные в работе единственной части, или заканчивает работу многократной части.
|
Строка |
getAlgorithm()
Возвращает имя алгоритма этого
Cipher объект. |
int |
getBlockSize()
Возвращает размер блока (в байтах).
|
ExemptionMechanism |
getExemptionMechanism()
Возвращает объект механизма освобождения, используемый с этим шифром.
|
static Cipher |
getInstance(String transformation)
Возвраты a
Cipher возразите, что реализует указанное преобразование. |
static Cipher |
getInstance(String transformation, Provider provider)
Возвраты a
Cipher возразите, что реализует указанное преобразование. |
static Cipher |
getInstance(String transformation, String provider)
Возвраты a
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()
Возвращает параметры, используемые с этим шифром.
|
Провайдер |
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)
Инициализирует этот шифр с ключом и источником случайности.
|
Ключ |
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)
Оберните ключ.
|
public static final int ENCRYPT_MODE
public static final int DECRYPT_MODE
public static final int WRAP_MODE
public static final int UNWRAP_MODE
public static final int PUBLIC_KEY
public static final int PRIVATE_KEY
public static final int SECRET_KEY
public static final Cipher getInstance(String transformation) throws NoSuchAlgorithmException, NoSuchPaddingException
Cipher
возразите, что реализует указанное преобразование. Этот метод пересекает список зарегистрированных поставщиков систем обеспечения безопасности, запускающихся с самого привилегированного Провайдера. Возвращается новый объект Шифра инкапсуляция реализации CipherSpi от первого Провайдера, который поддерживает указанный алгоритм.
Отметьте, что список зарегистрированных провайдеров может быть получен через Security.getProviders()
метод.
transformation
- имя преобразования, например, DES/CBC/PKCS5Padding. См. раздел Шифра в Документации Имени Алгоритма Стандарта Архитектуры Криптографии Java для информации о стандартных именах преобразования.NoSuchAlgorithmException
- если transformation
нуль, пустой, в недопустимом формате, или если никакой Провайдер не поддерживает реализацию CipherSpi для указанного алгоритма.NoSuchPaddingException
- если transformation
содержит дополнительную схему, которая не доступна.Provider
public static final Cipher getInstance(String transformation, String provider) throws NoSuchAlgorithmException, NoSuchProviderException, NoSuchPaddingException
Cipher
возразите, что реализует указанное преобразование. Возвращается новый объект Шифра инкапсуляция реализации CipherSpi от указанного провайдера. Указанный провайдер должен быть зарегистрирован в списке поставщика систем обеспечения безопасности.
Отметьте, что список зарегистрированных провайдеров может быть получен через Security.getProviders()
метод.
transformation
- имя преобразования, например, DES/CBC/PKCS5Padding. См. раздел Шифра в Документации Имени Алгоритма Стандарта Архитектуры Криптографии Java для информации о стандартных именах преобразования.provider
- имя провайдера.NoSuchAlgorithmException
- если transformation
нуль, пустой, в недопустимом формате, или если реализация CipherSpi для указанного алгоритма не доступна от указанного провайдера.NoSuchProviderException
- если указанный провайдер не регистрируется в списке поставщика систем обеспечения безопасности.NoSuchPaddingException
- если transformation
содержит дополнительную схему, которая не доступна.IllegalArgumentException
- если provider
нуль или пустой.Provider
public static final Cipher getInstance(String transformation, Provider provider) throws NoSuchAlgorithmException, NoSuchPaddingException
Cipher
возразите, что реализует указанное преобразование. Возвращается новый объект Шифра инкапсуляция реализации CipherSpi от указанного объекта Провайдера. Отметьте, что указанный объект Провайдера не должен быть зарегистрирован в списке провайдера.
transformation
- имя преобразования, например, DES/CBC/PKCS5Padding. См. раздел Шифра в Документации Имени Алгоритма Стандарта Архитектуры Криптографии Java для информации о стандартных именах преобразования.provider
- провайдер.NoSuchAlgorithmException
- если transformation
нуль, пустой, в недопустимом формате, или если реализация CipherSpi для указанного алгоритма не доступна от указанного объекта Провайдера.NoSuchPaddingException
- если transformation
содержит дополнительную схему, которая не доступна.IllegalArgumentException
- если provider
нуль.Provider
public final Provider getProvider()
Cipher
объект.Cipher
объектpublic final String getAlgorithm()
Cipher
объект. Это - то же самое имя, которое было определено в одном из getInstance
вызовы, которые создали это Cipher
объект..
Cipher
объект.public final int getBlockSize()
public final int getOutputSize(int inputLen)
update
или doFinal
работа, учитывая входную длину inputLen
(в байтах). Этот вызов принимает во внимание любые необработанные (буферизованные) данные от предыдущего update
вызовите, дополнение, и тегирование AEAD.
Фактическая выходная длина следующего update
или doFinal
вызов может быть меньшим чем длина, возвращенная этим методом.
inputLen
- входная длина (в байтах)IllegalStateException
- если этот шифр находится в неправильном состоянии (например, еще не был инициализирован),public final byte[] getIV()
Это полезно в случае, где случайный IV создавался, или в контексте основанного на пароле шифрования или дешифрования, где IV получается из предоставленного пользователем пароля.
public final AlgorithmParameters getParameters()
Возвращенные параметры могут быть тем же самым, которые использовались, чтобы инициализировать этот шифр, или могут содержать комбинацию значения по умолчанию и случайных значений параметра, используемых базовой реализацией шифра, если этот шифр требует параметров алгоритма, но не был инициализирован ни с кем.
public final ExemptionMechanism getExemptionMechanism()
public final void init(int opmode, Key key) throws InvalidKeyException
Шифр инициализируется для одной из следующих четырех операций: шифрование, дешифрование, ключевое обертывание или ключевое разворачивание, в зависимости от значения opmode
.
Если этот шифр требует каких-либо параметров алгоритма, которые не могут быть получены из данного key
, базовая реализация шифра, как предполагается, генерирует обязательные параметры самостоятельно (использующий специфичное для провайдера значение по умолчанию или случайные значения), если это инициализируется для шифрования или ключевого обертывания, и повышения InvalidKeyException
если это инициализируется для дешифрования или ключевого разворачивания. Сгенерированные параметры могут быть получены, используя getParameters
или getIV
(если параметр является IV).
Если этот шифр потребует параметров алгоритма, которые не могут быть получены из входных параметров, и нет никаких разумных специфичных для провайдера значений по умолчанию, то инициализация обязательно перестанет работать.
Если этот шифр (включая его базовую обратную связь или дополнительную схему) потребует каких-либо случайных байтов (например, для генерации параметра), то это получит их использующий
реализация самого высокого приоритета установленный провайдер как источник случайности. (Если ни один из установленных провайдеров не предоставит реализацию SecureRandom, то обеспеченный системой источник случайности будет использоваться.) SecureRandom
Отметьте, что, когда объект Шифра инициализируется, он теряет все ранее полученное состояние. Другими словами инициализация Шифра эквивалентна созданию нового экземпляра того Шифра и инициализации этого.
opmode
- режим работы этого шифра (это - одно из следующего: ENCRYPT_MODE
, DECRYPT_MODE
, WRAP_MODE
или UNWRAP_MODE
)key
- ключInvalidKeyException
- если данный ключ является несоответствующим для того, чтобы инициализировать этот шифр, или требует параметров алгоритма, которые не могут быть определены от данного ключа, или если у данного ключа есть размер ключа, который превышает максимальный допустимый размер ключа (как определено от сконфигурированных файлов политики юрисдикции).public final void init(int opmode, Key key, SecureRandom random) throws InvalidKeyException
Шифр инициализируется для одной из следующих четырех операций: шифрование, дешифрование, ключевое обертывание или ключевое разворачивание, в зависимости от значения opmode
.
Если этот шифр требует каких-либо параметров алгоритма, которые не могут быть получены из данного key
, базовая реализация шифра, как предполагается, генерирует обязательные параметры самостоятельно (использующий специфичное для провайдера значение по умолчанию или случайные значения), если это инициализируется для шифрования или ключевого обертывания, и повышения InvalidKeyException
если это инициализируется для дешифрования или ключевого разворачивания. Сгенерированные параметры могут быть получены, используя getParameters
или getIV
(если параметр является IV).
Если этот шифр потребует параметров алгоритма, которые не могут быть получены из входных параметров, и нет никаких разумных специфичных для провайдера значений по умолчанию, то инициализация обязательно перестанет работать.
Если этот шифр (включая его базовую обратную связь или дополнительную схему) потребует каких-либо случайных байтов (например, для генерации параметра), то это получит их от random
.
Отметьте, что, когда объект Шифра инициализируется, он теряет все ранее полученное состояние. Другими словами инициализация Шифра эквивалентна созданию нового экземпляра того Шифра и инициализации этого.
opmode
- режим работы этого шифра (это - одно из следующего: ENCRYPT_MODE
, DECRYPT_MODE
, WRAP_MODE
или UNWRAP_MODE
)key
- ключ шифрованияrandom
- источник случайностиInvalidKeyException
- если данный ключ является несоответствующим для того, чтобы инициализировать этот шифр, или требует параметров алгоритма, которые не могут быть определены от данного ключа, или если у данного ключа есть размер ключа, который превышает максимальный допустимый размер ключа (как определено от сконфигурированных файлов политики юрисдикции).public final void init(int opmode, Key key, AlgorithmParameterSpec params) throws InvalidKeyException, InvalidAlgorithmParameterException
Шифр инициализируется для одной из следующих четырех операций: шифрование, дешифрование, ключевое обертывание или ключевое разворачивание, в зависимости от значения opmode
.
Если этот шифр требует каких-либо параметров алгоритма и params
нуль, базовая реализация шифра, как предполагается, генерирует обязательные параметры самостоятельно (использующий специфичное для провайдера значение по умолчанию или случайные значения), если это инициализируется для шифрования или ключевого обертывания, и повышения InvalidAlgorithmParameterException
если это инициализируется для дешифрования или ключевого разворачивания. Сгенерированные параметры могут быть получены, используя getParameters
или getIV
(если параметр является IV).
Если этот шифр потребует параметров алгоритма, которые не могут быть получены из входных параметров, и нет никаких разумных специфичных для провайдера значений по умолчанию, то инициализация обязательно перестанет работать.
Если этот шифр (включая его базовую обратную связь или дополнительную схему) потребует каких-либо случайных байтов (например, для генерации параметра), то это получит их использующий
реализация самого высокого приоритета установленный провайдер как источник случайности. (Если ни один из установленных провайдеров не предоставит реализацию SecureRandom, то обеспеченный системой источник случайности будет использоваться.) SecureRandom
Отметьте, что, когда объект Шифра инициализируется, он теряет все ранее полученное состояние. Другими словами инициализация Шифра эквивалентна созданию нового экземпляра того Шифра и инициализации этого.
opmode
- режим работы этого шифра (это - одно из следующего: ENCRYPT_MODE
, DECRYPT_MODE
, WRAP_MODE
или UNWRAP_MODE
)key
- ключ шифрованияparams
- параметры алгоритмаInvalidKeyException
- если данный ключ является несоответствующим для того, чтобы инициализировать этот шифр, или его размер ключа превышает максимальный допустимый размер ключа (как определено от сконфигурированных файлов политики юрисдикции).InvalidAlgorithmParameterException
- если данные параметры алгоритма являются несоответствующими для этого шифра, или этот шифр требует параметров алгоритма и params
нуль, или данные параметры алгоритма подразумевают криптографическую силу, которая превысила бы правовые ограничения (как определено от сконфигурированных файлов политики юрисдикции).public final void init(int opmode, Key key, AlgorithmParameterSpec params, SecureRandom random) throws InvalidKeyException, InvalidAlgorithmParameterException
Шифр инициализируется для одной из следующих четырех операций: шифрование, дешифрование, ключевое обертывание или ключевое разворачивание, в зависимости от значения opmode
.
Если этот шифр требует каких-либо параметров алгоритма и params
нуль, базовая реализация шифра, как предполагается, генерирует обязательные параметры самостоятельно (использующий специфичное для провайдера значение по умолчанию или случайные значения), если это инициализируется для шифрования или ключевого обертывания, и повышения InvalidAlgorithmParameterException
если это инициализируется для дешифрования или ключевого разворачивания. Сгенерированные параметры могут быть получены, используя getParameters
или getIV
(если параметр является IV).
Если этот шифр потребует параметров алгоритма, которые не могут быть получены из входных параметров, и нет никаких разумных специфичных для провайдера значений по умолчанию, то инициализация обязательно перестанет работать.
Если этот шифр (включая его базовую обратную связь или дополнительную схему) потребует каких-либо случайных байтов (например, для генерации параметра), то это получит их от random
.
Отметьте, что, когда объект Шифра инициализируется, он теряет все ранее полученное состояние. Другими словами инициализация Шифра эквивалентна созданию нового экземпляра того Шифра и инициализации этого.
opmode
- режим работы этого шифра (это - одно из следующего: ENCRYPT_MODE
, DECRYPT_MODE
, WRAP_MODE
или UNWRAP_MODE
)key
- ключ шифрованияparams
- параметры алгоритмаrandom
- источник случайностиInvalidKeyException
- если данный ключ является несоответствующим для того, чтобы инициализировать этот шифр, или его размер ключа превышает максимальный допустимый размер ключа (как определено от сконфигурированных файлов политики юрисдикции).InvalidAlgorithmParameterException
- если данные параметры алгоритма являются несоответствующими для этого шифра, или этот шифр требует параметров алгоритма и params
нуль, или данные параметры алгоритма подразумевают криптографическую силу, которая превысила бы правовые ограничения (как определено от сконфигурированных файлов политики юрисдикции).public final void init(int opmode, Key key, AlgorithmParameters params) throws InvalidKeyException, InvalidAlgorithmParameterException
Шифр инициализируется для одной из следующих четырех операций: шифрование, дешифрование, ключевое обертывание или ключевое разворачивание, в зависимости от значения opmode
.
Если этот шифр требует каких-либо параметров алгоритма и params
нуль, базовая реализация шифра, как предполагается, генерирует обязательные параметры самостоятельно (использующий специфичное для провайдера значение по умолчанию или случайные значения), если это инициализируется для шифрования или ключевого обертывания, и повышения InvalidAlgorithmParameterException
если это инициализируется для дешифрования или ключевого разворачивания. Сгенерированные параметры могут быть получены, используя getParameters
или getIV
(если параметр является IV).
Если этот шифр потребует параметров алгоритма, которые не могут быть получены из входных параметров, и нет никаких разумных специфичных для провайдера значений по умолчанию, то инициализация обязательно перестанет работать.
Если этот шифр (включая его базовую обратную связь или дополнительную схему) потребует каких-либо случайных байтов (например, для генерации параметра), то это получит их использующий
реализация самого высокого приоритета установленный провайдер как источник случайности. (Если ни один из установленных провайдеров не предоставит реализацию SecureRandom, то обеспеченный системой источник случайности будет использоваться.) SecureRandom
Отметьте, что, когда объект Шифра инициализируется, он теряет все ранее полученное состояние. Другими словами инициализация Шифра эквивалентна созданию нового экземпляра того Шифра и инициализации этого.
opmode
- режим работы этого шифра (это - одно из следующего: ENCRYPT_MODE
, DECRYPT_MODE
, WRAP_MODE
или UNWRAP_MODE
)key
- ключ шифрованияparams
- параметры алгоритмаInvalidKeyException
- если данный ключ является несоответствующим для того, чтобы инициализировать этот шифр, или его размер ключа превышает максимальный допустимый размер ключа (как определено от сконфигурированных файлов политики юрисдикции).InvalidAlgorithmParameterException
- если данные параметры алгоритма являются несоответствующими для этого шифра, или этот шифр требует параметров алгоритма и params
нуль, или данные параметры алгоритма подразумевают криптографическую силу, которая превысила бы правовые ограничения (как определено от сконфигурированных файлов политики юрисдикции).public final void init(int opmode, Key key, AlgorithmParameters params, SecureRandom random) throws InvalidKeyException, InvalidAlgorithmParameterException
Шифр инициализируется для одной из следующих четырех операций: шифрование, дешифрование, ключевое обертывание или ключевое разворачивание, в зависимости от значения opmode
.
Если этот шифр требует каких-либо параметров алгоритма и params
нуль, базовая реализация шифра, как предполагается, генерирует обязательные параметры самостоятельно (использующий специфичное для провайдера значение по умолчанию или случайные значения), если это инициализируется для шифрования или ключевого обертывания, и повышения InvalidAlgorithmParameterException
если это инициализируется для дешифрования или ключевого разворачивания. Сгенерированные параметры могут быть получены, используя getParameters
или getIV
(если параметр является IV).
Если этот шифр потребует параметров алгоритма, которые не могут быть получены из входных параметров, и нет никаких разумных специфичных для провайдера значений по умолчанию, то инициализация обязательно перестанет работать.
Если этот шифр (включая его базовую обратную связь или дополнительную схему) потребует каких-либо случайных байтов (например, для генерации параметра), то это получит их от random
.
Отметьте, что, когда объект Шифра инициализируется, он теряет все ранее полученное состояние. Другими словами инициализация Шифра эквивалентна созданию нового экземпляра того Шифра и инициализации этого.
opmode
- режим работы этого шифра (это - одно из следующего: ENCRYPT_MODE
, DECRYPT_MODE
, WRAP_MODE
или UNWRAP_MODE
)key
- ключ шифрованияparams
- параметры алгоритмаrandom
- источник случайностиInvalidKeyException
- если данный ключ является несоответствующим для того, чтобы инициализировать этот шифр, или его размер ключа превышает максимальный допустимый размер ключа (как определено от сконфигурированных файлов политики юрисдикции).InvalidAlgorithmParameterException
- если данные параметры алгоритма являются несоответствующими для этого шифра, или этот шифр требует параметров алгоритма и params
нуль, или данные параметры алгоритма подразумевают криптографическую силу, которая превысила бы правовые ограничения (как определено от сконфигурированных файлов политики юрисдикции).public final void init(int opmode, Certificate certificate) throws InvalidKeyException
Шифр инициализируется для одной из следующих четырех операций: шифрование, дешифрование, ключевое обертывание или ключевое разворачивание, в зависимости от значения opmode
.
Если сертификат имеет тип X.509 и имеет ключевое поле расширения использования, отмеченное как критическое, и значение ключевого поля расширения использования подразумевает, что открытый ключ в сертификате и его соответствующем закрытом ключе, как предполагается, не используется для работы, представленной значением opmode
, InvalidKeyException
бросается.
Если этот шифр требует каких-либо параметров алгоритма, которые не могут быть получены из открытого ключа в данном сертификате, базовая реализация шифра, как предполагается, генерирует обязательные параметры самостоятельно (использующий специфичное для провайдера значение по умолчанию или случайные значения), если это инициализируется для шифрования или ключевого обертывания, и повышения InvalidKeyException
если это инициализируется для дешифрования или ключевого разворачивания. Сгенерированные параметры могут быть получены, используя getParameters
или getIV
(если параметр является IV).
Если этот шифр потребует параметров алгоритма, которые не могут быть получены из входных параметров, и нет никаких разумных специфичных для провайдера значений по умолчанию, то инициализация обязательно перестанет работать.
Если этот шифр (включая его базовую обратную связь или дополнительную схему) потребует каких-либо случайных байтов (например, для генерации параметра), то это получит их использующий SecureRandom
реализация самого высокого приоритета установленный провайдер как источник случайности. (Если ни один из установленных провайдеров не предоставит реализацию SecureRandom, то обеспеченный системой источник случайности будет использоваться.)
Отметьте, что, когда объект Шифра инициализируется, он теряет все ранее полученное состояние. Другими словами инициализация Шифра эквивалентна созданию нового экземпляра того Шифра и инициализации этого.
opmode
- режим работы этого шифра (это - одно из следующего: ENCRYPT_MODE
, DECRYPT_MODE
, WRAP_MODE
или UNWRAP_MODE
)certificate
- сертификатInvalidKeyException
- если открытый ключ в данном сертификате является несоответствующим для того, чтобы инициализировать этот шифр, или этот шифр требует параметров алгоритма, которые не могут быть определены от открытого ключа в данном сертификате, или у размера ключа открытого ключа в данном сертификате есть размер ключа, который превышает максимальный допустимый размер ключа (как определено сконфигурированными файлами политики юрисдикции).public final void init(int opmode, Certificate certificate, SecureRandom random) throws InvalidKeyException
Шифр инициализируется для одной из следующих четырех операций: шифрование, дешифрование, ключевое обертывание или ключевое разворачивание, в зависимости от значения opmode
.
Если сертификат имеет тип X.509 и имеет ключевое поле расширения использования, отмеченное как критическое, и значение ключевого поля расширения использования подразумевает, что открытый ключ в сертификате и его соответствующем закрытом ключе, как предполагается, не используется для работы, представленной значением opmode
, InvalidKeyException
бросается.
Если этот шифр требует каких-либо параметров алгоритма, которые не могут быть получены из открытого ключа в данном certificate
, базовая реализация шифра, как предполагается, генерирует обязательные параметры самостоятельно (использующий специфичное для провайдера значение по умолчанию или случайные значения), если это инициализируется для шифрования или ключевого обертывания, и повышения InvalidKeyException
если это инициализируется для дешифрования или ключевого разворачивания. Сгенерированные параметры могут быть получены, используя getParameters
или getIV
(если параметр является IV).
Если этот шифр потребует параметров алгоритма, которые не могут быть получены из входных параметров, и нет никаких разумных специфичных для провайдера значений по умолчанию, то инициализация обязательно перестанет работать.
Если этот шифр (включая его базовую обратную связь или дополнительную схему) потребует каких-либо случайных байтов (например, для генерации параметра), то это получит их от random
.
Отметьте, что, когда объект Шифра инициализируется, он теряет все ранее полученное состояние. Другими словами инициализация Шифра эквивалентна созданию нового экземпляра того Шифра и инициализации этого.
opmode
- режим работы этого шифра (это - одно из следующего: ENCRYPT_MODE
, DECRYPT_MODE
, WRAP_MODE
или UNWRAP_MODE
)certificate
- сертификатrandom
- источник случайностиInvalidKeyException
- если открытый ключ в данном сертификате является несоответствующим для того, чтобы инициализировать этот шифр, или этот шифр требует параметров алгоритма, которые не могут быть определены от открытого ключа в данном сертификате, или у размера ключа открытого ключа в данном сертификате есть размер ключа, который превышает максимальный допустимый размер ключа (как определено сконфигурированными файлами политики юрисдикции).public final byte[] update(byte[] input)
Байты в input
буфер обрабатывается, и результат сохранен в новом буфере.
Если input
имеет длину нуля, этот метод возвраты null
.
input
- входной буферIllegalStateException
- если этот шифр находится в неправильном состоянии (например, не был инициализирован),public final byte[] update(byte[] input, int inputOffset, int inputLen)
Первое inputLen
байты в input
буфер, запускающийся в inputOffset
включительно, обрабатываются, и результат сохранен в новом буфере.
Если inputLen
нуль, этот метод возвраты null
.
input
- входной буферinputOffset
- смещение в input
где ввод запускаетсяinputLen
- входная длинаIllegalStateException
- если этот шифр находится в неправильном состоянии (например, не был инициализирован),public final int update(byte[] input, int inputOffset, int inputLen, byte[] output) throws ShortBufferException
Первое inputLen
байты в input
буфер, запускающийся в inputOffset
включительно, обрабатываются, и результат сохранен в output
буфер.
Если output
буфер является слишком маленьким, чтобы содержать результат, a ShortBufferException
бросается. В этом случае повторите этот вызов с большим буфером вывода. Использовать getOutputSize
определить, насколько большой буфер вывода должен быть.
Если inputLen
нуль, этот метод возвращает длину нуля.
Отметьте: этот метод должен быть безопасным от копии, что означает input
и output
буферы могут сослаться на тот же самый байтовый массив, и никакие необработанные входные данные не перезаписываются, когда результат копируется в буфер вывода.
input
- входной буферinputOffset
- смещение в input
где ввод запускаетсяinputLen
- входная длинаoutput
- буфер для результатаoutput
IllegalStateException
- если этот шифр находится в неправильном состоянии (например, не был инициализирован),ShortBufferException
- если данный буфер вывода является слишком небольшим, чтобы содержать результатpublic final int update(byte[] input, int inputOffset, int inputLen, byte[] output, int outputOffset) throws ShortBufferException
Первое inputLen
байты в input
буфер, запускающийся в inputOffset
включительно, обрабатываются, и результат сохранен в output
буфер, запускающийся в outputOffset
включительно.
Если output
буфер является слишком маленьким, чтобы содержать результат, a ShortBufferException
бросается. В этом случае повторите этот вызов с большим буфером вывода. Использовать getOutputSize
определить, насколько большой буфер вывода должен быть.
Если inputLen
нуль, этот метод возвращает длину нуля.
Отметьте: этот метод должен быть безопасным от копии, что означает input
и output
буферы могут сослаться на тот же самый байтовый массив, и никакие необработанные входные данные не перезаписываются, когда результат копируется в буфер вывода.
input
- входной буферinputOffset
- смещение в input
где ввод запускаетсяinputLen
- входная длинаoutput
- буфер для результатаoutputOffset
- смещение в output
где результат сохраненoutput
IllegalStateException
- если этот шифр находится в неправильном состоянии (например, не был инициализирован),ShortBufferException
- если данный буфер вывода является слишком небольшим, чтобы содержать результатpublic final int update(ByteBuffer input, ByteBuffer output) throws ShortBufferException
Все input.remaining()
байты, запускающиеся в input.position()
обрабатываются. Результат сохранен в буфере вывода. По возврату входная буферная позиция будет равна своему пределу; его предел не будет изменяться. Позиция буфера вывода будет совершенствоваться n, где n является значением, возвращенным этим методом; предел буфера вывода не будет изменяться.
Если output.remaining()
байты недостаточны, чтобы содержать результат, a ShortBufferException
бросается. В этом случае повторите этот вызов с большим буфером вывода. Использовать getOutputSize
определить, насколько большой буфер вывода должен быть.
Отметьте: этот метод должен быть безопасным от копии, что означает input
и output
буферы могут сослаться на тот же самый блок памяти, и никакие необработанные входные данные не перезаписываются, когда результат копируется в буфер вывода.
input
- ввод ByteBufferoutput
- вывод ByteByfferoutput
IllegalStateException
- если этот шифр находится в неправильном состоянии (например, не был инициализирован),IllegalArgumentException
- если ввод и вывод является тем же самым объектомReadOnlyBufferException
- если буфер вывода только для чтенияShortBufferException
- если есть недостаточное пространство в буфере выводаpublic final byte[] doFinal() throws IllegalBlockSizeException, BadPaddingException
Входные данные, которые, возможно, были буферизованы во время предыдущего update
работа обрабатывается с дополнением (если требующийся) быть примененным. Если режим AEAD, такой как GCM/CCM используется, тег аутентификации добавляется в случае шифрования, или проверяется в случае дешифрования. Результат сохранен в новом буфере.
После окончания этот метод сбрасывает этот объект шифра к состоянию, в котором это было когда ранее инициализировано через звонок init
. Таким образом, объект сбрасывается и доступен, чтобы зашифровать или дешифровать (в зависимости от режима работы, который был определен в звонке init
) больше данных.
Отметьте: если какое-либо исключение выдается, этот объект шифра, возможно, должен быть сброшен прежде, чем это сможет использоваться снова.
IllegalStateException
- если этот шифр находится в неправильном состоянии (например, не был инициализирован),IllegalBlockSizeException
- если этот шифр является блочным шифром, никакое дополнение не требовали (только в режиме шифрования), и длина общих затрат данных, обработанных этим шифром, не является кратным числом размера блока; или если этот алгоритм шифрования неспособен обработать входные обеспеченные данные.BadPaddingException
- если этот шифр находится в режиме дешифрования, и (un), дополнение требовали, но дешифрованные данные не ограничиваются соответствующими дополнительными байтамиAEADBadTagException
- если этот шифр дешифрует в режиме AEAD (таком как GCM/CCM), и полученный тег аутентификации не соответствует расчетное значениеpublic final int doFinal(byte[] output, int outputOffset) throws IllegalBlockSizeException, ShortBufferException, BadPaddingException
Входные данные, которые, возможно, были буферизованы во время предыдущего update
работа обрабатывается с дополнением (если требующийся) быть примененным. Если режим AEAD, такой как GCM/CCM используется, тег аутентификации добавляется в случае шифрования, или проверяется в случае дешифрования. Результат сохранен в output
буфер, запускающийся в outputOffset
включительно.
Если output
буфер является слишком маленьким, чтобы содержать результат, a ShortBufferException
бросается. В этом случае повторите этот вызов с большим буфером вывода. Использовать getOutputSize
определить, насколько большой буфер вывода должен быть.
После окончания этот метод сбрасывает этот объект шифра к состоянию, в котором это было когда ранее инициализировано через звонок init
. Таким образом, объект сбрасывается и доступен, чтобы зашифровать или дешифровать (в зависимости от режима работы, который был определен в звонке init
) больше данных.
Отметьте: если какое-либо исключение выдается, этот объект шифра, возможно, должен быть сброшен прежде, чем это сможет использоваться снова.
output
- буфер для результатаoutputOffset
- смещение в output
где результат сохраненoutput
IllegalStateException
- если этот шифр находится в неправильном состоянии (например, не был инициализирован),IllegalBlockSizeException
- если этот шифр является блочным шифром, никакое дополнение не требовали (только в режиме шифрования), и длина общих затрат данных, обработанных этим шифром, не является кратным числом размера блока; или если этот алгоритм шифрования неспособен обработать входные обеспеченные данные.ShortBufferException
- если данный буфер вывода является слишком небольшим, чтобы содержать результатBadPaddingException
- если этот шифр находится в режиме дешифрования, и (un), дополнение требовали, но дешифрованные данные не ограничиваются соответствующими дополнительными байтамиAEADBadTagException
- если этот шифр дешифрует в режиме AEAD (таком как GCM/CCM), и полученный тег аутентификации не соответствует расчетное значениеpublic final byte[] doFinal(byte[] input) throws IllegalBlockSizeException, BadPaddingException
Байты в input
буфер, и любые входные байты, которые, возможно, были буферизованы во время предыдущего update
работа, обрабатываются, с дополнением (если требующийся) быть примененным. Если режим AEAD, такой как GCM/CCM используется, тег аутентификации добавляется в случае шифрования, или проверяется в случае дешифрования. Результат сохранен в новом буфере.
После окончания этот метод сбрасывает этот объект шифра к состоянию, в котором это было когда ранее инициализировано через звонок init
. Таким образом, объект сбрасывается и доступен, чтобы зашифровать или дешифровать (в зависимости от режима работы, который был определен в звонке init
) больше данных.
Отметьте: если какое-либо исключение выдается, этот объект шифра, возможно, должен быть сброшен прежде, чем это сможет использоваться снова.
input
- входной буферIllegalStateException
- если этот шифр находится в неправильном состоянии (например, не был инициализирован),IllegalBlockSizeException
- если этот шифр является блочным шифром, никакое дополнение не требовали (только в режиме шифрования), и длина общих затрат данных, обработанных этим шифром, не является кратным числом размера блока; или если этот алгоритм шифрования неспособен обработать входные обеспеченные данные.BadPaddingException
- если этот шифр находится в режиме дешифрования, и (un), дополнение требовали, но дешифрованные данные не ограничиваются соответствующими дополнительными байтамиAEADBadTagException
- если этот шифр дешифрует в режиме AEAD (таком как GCM/CCM), и полученный тег аутентификации не соответствует расчетное значение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
- если этот шифр находится в режиме дешифрования, и (un), дополнение требовали, но дешифрованные данные не ограничиваются соответствующими дополнительными байтамиAEADBadTagException
- если этот шифр дешифрует в режиме AEAD (таком как GCM/CCM), и полученный тег аутентификации не соответствует расчетное значение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
буфер является слишком маленьким, чтобы содержать результат, a ShortBufferException
бросается. В этом случае повторите этот вызов с большим буфером вывода. Использовать getOutputSize
определить, насколько большой буфер вывода должен быть.
После окончания этот метод сбрасывает этот объект шифра к состоянию, в котором это было когда ранее инициализировано через звонок init
. Таким образом, объект сбрасывается и доступен, чтобы зашифровать или дешифровать (в зависимости от режима работы, который был определен в звонке init
) больше данных.
Отметьте: если какое-либо исключение выдается, этот объект шифра, возможно, должен быть сброшен прежде, чем это сможет использоваться снова.
Отметьте: этот метод должен быть безопасным от копии, что означает input
и output
буферы могут сослаться на тот же самый байтовый массив, и никакие необработанные входные данные не перезаписываются, когда результат копируется в буфер вывода.
input
- входной буферinputOffset
- смещение в input
где ввод запускаетсяinputLen
- входная длинаoutput
- буфер для результатаoutput
IllegalStateException
- если этот шифр находится в неправильном состоянии (например, не был инициализирован),IllegalBlockSizeException
- если этот шифр является блочным шифром, никакое дополнение не требовали (только в режиме шифрования), и длина общих затрат данных, обработанных этим шифром, не является кратным числом размера блока; или если этот алгоритм шифрования неспособен обработать входные обеспеченные данные.ShortBufferException
- если данный буфер вывода является слишком небольшим, чтобы содержать результатBadPaddingException
- если этот шифр находится в режиме дешифрования, и (un), дополнение требовали, но дешифрованные данные не ограничиваются соответствующими дополнительными байтамиAEADBadTagException
- если этот шифр дешифрует в режиме AEAD (таком как GCM/CCM), и полученный тег аутентификации не соответствует расчетное значение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
буфер является слишком маленьким, чтобы содержать результат, a ShortBufferException
бросается. В этом случае повторите этот вызов с большим буфером вывода. Использовать getOutputSize
определить, насколько большой буфер вывода должен быть.
После окончания этот метод сбрасывает этот объект шифра к состоянию, в котором это было когда ранее инициализировано через звонок init
. Таким образом, объект сбрасывается и доступен, чтобы зашифровать или дешифровать (в зависимости от режима работы, который был определен в звонке init
) больше данных.
Отметьте: если какое-либо исключение выдается, этот объект шифра, возможно, должен быть сброшен прежде, чем это сможет использоваться снова.
Отметьте: этот метод должен быть безопасным от копии, что означает input
и output
буферы могут сослаться на тот же самый байтовый массив, и никакие необработанные входные данные не перезаписываются, когда результат копируется в буфер вывода.
input
- входной буферinputOffset
- смещение в input
где ввод запускаетсяinputLen
- входная длинаoutput
- буфер для результатаoutputOffset
- смещение в output
где результат сохраненoutput
IllegalStateException
- если этот шифр находится в неправильном состоянии (например, не был инициализирован),IllegalBlockSizeException
- если этот шифр является блочным шифром, никакое дополнение не требовали (только в режиме шифрования), и длина общих затрат данных, обработанных этим шифром, не является кратным числом размера блока; или если этот алгоритм шифрования неспособен обработать входные обеспеченные данные.ShortBufferException
- если данный буфер вывода является слишком небольшим, чтобы содержать результатBadPaddingException
- если этот шифр находится в режиме дешифрования, и (un), дополнение требовали, но дешифрованные данные не ограничиваются соответствующими дополнительными байтамиAEADBadTagException
- если этот шифр дешифрует в режиме AEAD (таком как GCM/CCM), и полученный тег аутентификации не соответствует расчетное значениеpublic final int doFinal(ByteBuffer input, ByteBuffer output) throws ShortBufferException, IllegalBlockSizeException, BadPaddingException
Все input.remaining()
байты, запускающиеся в input.position()
обрабатываются. Если режим AEAD, такой как GCM/CCM используется, тег аутентификации добавляется в случае шифрования, или проверяется в случае дешифрования. Результат сохранен в буфере вывода. По возврату входная буферная позиция будет равна своему пределу; его предел не будет изменяться. Позиция буфера вывода будет совершенствоваться n, где n является значением, возвращенным этим методом; предел буфера вывода не будет изменяться.
Если output.remaining()
байты недостаточны, чтобы содержать результат, a ShortBufferException
бросается. В этом случае повторите этот вызов с большим буфером вывода. Использовать getOutputSize
определить, насколько большой буфер вывода должен быть.
После окончания этот метод сбрасывает этот объект шифра к состоянию, в котором это было когда ранее инициализировано через звонок init
. Таким образом, объект сбрасывается и доступен, чтобы зашифровать или дешифровать (в зависимости от режима работы, который был определен в звонке init
) больше данных.
Отметьте: если какое-либо исключение выдается, этот объект шифра, возможно, должен быть сброшен прежде, чем это сможет использоваться снова.
Отметьте: этот метод должен быть безопасным от копии, что означает input
и output
буферы могут сослаться на тот же самый байтовый массив, и никакие необработанные входные данные не перезаписываются, когда результат копируется в буфер вывода.
input
- ввод ByteBufferoutput
- вывод ByteBufferoutput
IllegalStateException
- если этот шифр находится в неправильном состоянии (например, не был инициализирован),IllegalArgumentException
- если ввод и вывод является тем же самым объектомReadOnlyBufferException
- если буфер вывода только для чтенияIllegalBlockSizeException
- если этот шифр является блочным шифром, никакое дополнение не требовали (только в режиме шифрования), и длина общих затрат данных, обработанных этим шифром, не является кратным числом размера блока; или если этот алгоритм шифрования неспособен обработать входные обеспеченные данные.ShortBufferException
- если есть недостаточное пространство в буфере выводаBadPaddingException
- если этот шифр находится в режиме дешифрования, и (un), дополнение требовали, но дешифрованные данные не ограничиваются соответствующими дополнительными байтамиAEADBadTagException
- если этот шифр дешифрует в режиме AEAD (таком как GCM/CCM), и полученный тег аутентификации не соответствует расчетное значениеpublic final byte[] wrap(Key key) throws IllegalBlockSizeException, InvalidKeyException
key
- ключ, который будет обернут.IllegalStateException
- если этот шифр находится в неправильном состоянии (например, не был инициализирован).IllegalBlockSizeException
- если этот шифр является блочным шифром, никакое дополнение не требовали, и продолжительность кодирования ключа, который будет обернут, не является кратным числом размера блока.InvalidKeyException
- если это невозможно или опасно обернуть ключ с этим шифром (например, аппаратные средства, защищенный ключ передают к шифру только для программного обеспечения).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
.public static final int getMaxAllowedKeyLength(String transformation) throws NoSuchAlgorithmException
transformation
- преобразование шифра.NullPointerException
- если transformation
нуль.NoSuchAlgorithmException
- если transformation
не допустимое преобразование, то есть в форме "алгоритма" или "алгоритма/режима/дополнения".public static final AlgorithmParameterSpec getMaxAllowedParameterSpec(String transformation) throws NoSuchAlgorithmException
transformation
- преобразование шифра.NullPointerException
- если transformation
нуль.NoSuchAlgorithmException
- если transformation
не допустимое преобразование, то есть в форме "алгоритма" или "алгоритма/режима/дополнения".public final void updateAAD(byte[] src)
Звонки в этот метод обеспечивают AAD для шифра, работая в режимах, таких как AEAD (GCM/CCM). Если этот шифр работает или в GCM или в режиме CCM, весь AAD должен быть предоставлен перед начинающимися операциями на шифрованном тексте (через update
и doFinal
методы).
src
- буфер, содержащий Дополнительные Данные АутентификацииIllegalArgumentException
- если src
байтовый массив является нулемIllegalStateException
- если этот шифр находится в неправильном состоянии (например, не был инициализирован), не принимает AAD, или работая или в GCM или в режиме CCM и одном из update
методы уже вызвали для активной работы шифрования/дешифрованияUnsupportedOperationException
- если соответствующий метод в CipherSpi
не был переопределен реализациейpublic final void updateAAD(byte[] src, int offset, int len)
Звонки в этот метод обеспечивают AAD для шифра, работая в режимах, таких как AEAD (GCM/CCM). Если этот шифр работает или в GCM или в режиме CCM, весь AAD должен быть предоставлен перед начинающимися операциями на шифрованном тексте (через update
и doFinal
методы).
src
- буфер, содержащий AADoffset
- смещение в src
где ввод AAD запускаетсяlen
- число байтов AADIllegalArgumentException
- если src
байтовый массив является нулем, или offset
или length
меньше чем 0, или сумма offset
и len
больше чем длина src
байтовый массивIllegalStateException
- если этот шифр находится в неправильном состоянии (например, не был инициализирован), не принимает AAD, или работая или в GCM или в режиме CCM и одном из update
методы уже вызвали для активной работы шифрования/дешифрованияUnsupportedOperationException
- если соответствующий метод в CipherSpi
не был переопределен реализациейpublic final void updateAAD(ByteBuffer src)
Звонки в этот метод обеспечивают AAD для шифра, работая в режимах, таких как AEAD (GCM/CCM). Если этот шифр работает или в GCM или в режиме CCM, весь AAD должен быть предоставлен перед начинающимися операциями на шифрованном тексте (через update
и doFinal
методы).
Все src.remaining()
байты, запускающиеся в src.position()
обрабатываются. По возврату входная буферная позиция будет равна своему пределу; его предел не будет изменяться.
src
- буфер, содержащий AADIllegalArgumentException
- если src ByteBuffer
нульIllegalStateException
- если этот шифр находится в неправильном состоянии (например, не был инициализирован), не принимает AAD, или работая или в GCM или в режиме CCM и одном из update
методы уже вызвали для активной работы шифрования/дешифрованияUnsupportedOperationException
- если соответствующий метод в CipherSpi
не был переопределен реализацией
Для дальнейшей ссылки API и документации разработчика, см. Java Документация SE. Та документация содержит более подробные, предназначенные разработчиком описания, с концептуальными краткими обзорами, определениями сроков, обходных решений, и рабочих примеров кода.
Авторское право © 1993, 2013, Oracle и/или его филиалы. Все права защищены.
Проект сборка-b92