Spec-Zone .ru
спецификации, руководства, описания, API
|
public abstract class CipherSpi extends Object
Cipher
class. Все абстрактные методы в этом class должны быть реализованы каждым провайдером криптографических служб, который хочет предоставить реализацию определенного алгоритма шифра. Чтобы создать экземпляр Cipher
, который инкапсулирует экземпляр этого CipherSpi
class, приложение вызывает один из getInstance
методы фабрики Cipher
механизм class и определяет требуемое преобразование. Дополнительно, приложение может также определить имя провайдера.
Преобразование является строкой, которая описывает работу (или набор операций), чтобы быть выполненной на данном вводе, произвести некоторый вывод. Преобразование всегда включает имя криптографического алгоритма (например, DES), и может сопровождаться режимом обратной связи и дополнительной схемой.
Преобразование имеет форму:
(в последнем случае специфичные для провайдера значения по умолчанию для режима и дополнительной схемы используются). Например, следующее является допустимым преобразованием:
Cipher c = Cipher.getInstance("DES/CBC/PKCS5Padding");
Провайдер может предоставить отдельный class для каждой комбинации алгоритма/режима/дополнения, или может решить обеспечить больше универсальных классов, представляющих подпреобразования, соответствующие алгоритму или алгоритму/режиму, или алгоритм//дополняющий (отметьте двойные наклонные черты), когда требуемый режим и/или дополнение устанавливаются автоматически getInstance
методы Cipher
, которые вызывают engineSetMode
и engineSetPadding
методы подкласса провайдера CipherSpi
.
A Cipher
у свойства в ведущем устройстве провайдера class может быть один из следующих форматов:
// provider's subclass of "CipherSpi" implements "algName" with
// pluggable mode and padding
Cipher.
algName
// provider's subclass of "CipherSpi" implements "algName" in the
// specified "mode", with pluggable padding
Cipher.
algName/mode
// provider's subclass of "CipherSpi" implements "algName" with the
// specified "padding", with pluggable mode
Cipher.
algName//padding
// provider's subclass of "CipherSpi" implements "algName" with the
// specified "mode" and "padding"
Cipher.
algName/mode/padding
Например, провайдер может предоставить подкласс CipherSpi
это реализует DES/ECB/PKCS5Padding, тот, который реализует DES/CBC/PKCS5Padding, тот, который реализует DES/CFB/PKCS5Padding, и еще один, который реализует DES/OFB/PKCS5Padding. У того провайдера был бы следующий Cipher
свойства в его основном class:
Cipher.
DES/ECB/PKCS5Padding
Cipher.
DES/CBC/PKCS5Padding
Cipher.
DES/CFB/PKCS5Padding
Cipher.
DES/OFB/PKCS5Padding
Другой провайдер может реализовать class для каждого из вышеупомянутых режимов (то есть, один class для ECB, один для CBC, один для CFB, и один для OFB), один class для PKCS5Padding, и универсальный DES class, который разделяет на подклассы от CipherSpi
. У того провайдера был бы следующий Cipher
свойства в его основном class:
Cipher.
DES
getInstance
метод фабрики Cipher
class механизма следует за этими правилами, чтобы инстанцировать реализации провайдера CipherSpi
для преобразования формы "алгоритм":
CipherSpi
для указанного "алгоритма". Если ответ ДА, инстанцируйте этого class, для того, используются режим которого и дополнительные значения по умолчанию схемы (как предоставлено провайдером).
Если ответ нет, бросок a NoSuchAlgorithmException
исключение.
getInstance
метод фабрики Cipher
class механизма следует за этими правилами, чтобы инстанцировать реализации провайдера CipherSpi
для преобразования формы "алгоритм/режим/дополнение":
CipherSpi
для указанного преобразования "алгоритма/режима/дополнения". Если ответ ДА, инстанцируйте его.
Если ответ нет, пойдите в следующий шаг.
CipherSpi
для подпреобразования "алгоритм/режим". Если ответ ДА, инстанцируйте его, и вызов engineSetPadding(padding)
на новом экземпляре.
Если ответ нет, пойдите в следующий шаг.
CipherSpi
для подпреобразования "алгоритм//дополняющий" (отмечают двойные наклонные черты). Если ответ ДА, инстанцируйте его, и вызов engineSetMode(mode)
на новом экземпляре.
Если ответ нет, пойдите в следующий шаг.
CipherSpi
для подпреобразования "алгоритм". Если ответ ДА, инстанцируйте его, и вызов engineSetMode(mode)
и engineSetPadding(padding)
на новом экземпляре.
Если ответ нет, бросок a NoSuchAlgorithmException
исключение.
KeyGenerator
, SecretKey
Конструктор и Описание |
---|
CipherSpi() |
Модификатор и Тип | Метод и Описание |
---|---|
protected abstract byte[] |
engineDoFinal(byte[] input, int inputOffset, int inputLen)
Шифрует или дешифрует данные в работе единственной части, или заканчивает работу многократной части.
|
protected abstract int |
engineDoFinal(byte[] input, int inputOffset, int inputLen, byte[] output, int outputOffset)
Шифрует или дешифрует данные в работе единственной части, или заканчивает работу многократной части.
|
protected int |
engineDoFinal(ByteBuffer input, ByteBuffer output)
Шифрует или дешифрует данные в работе единственной части, или заканчивает работу многократной части.
|
protected abstract int |
engineGetBlockSize()
Возвращает размер блока (в байтах).
|
protected abstract byte[] |
engineGetIV()
Возвращает вектор инициализации (IV) в новом буфере.
|
protected int |
engineGetKeySize(Key key)
Возвращает размер ключа данного ключевого объекта в битах.
|
protected abstract int |
engineGetOutputSize(int inputLen)
Возвращает длину в байтах, что буфер вывода должен был бы быть в порядке, чтобы содержать результат следующего
update или doFinal работа, учитывая входную длину inputLen (в байтах). |
protected abstract AlgorithmParameters |
engineGetParameters()
Возвращает параметры, используемые с этим шифром.
|
protected abstract void |
engineInit(int opmode, Key key, AlgorithmParameterSpec params, SecureRandom random)
Инициализирует этот шифр с ключом, ряд параметров алгоритма, и источника случайности.
|
protected abstract void |
engineInit(int opmode, Key key, AlgorithmParameters params, SecureRandom random)
Инициализирует этот шифр с ключом, ряд параметров алгоритма, и источника случайности.
|
protected abstract void |
engineInit(int opmode, Key key, SecureRandom random)
Инициализирует этот шифр с ключом и источником случайности.
|
protected abstract void |
engineSetMode(String mode)
Устанавливает режим этого шифра.
|
protected abstract void |
engineSetPadding(String padding)
Устанавливает дополнительный механизм этого шифра.
|
protected Key |
engineUnwrap(byte[] wrappedKey, String wrappedKeyAlgorithm, int wrappedKeyType)
Разверните ранее обернутый ключ.
|
protected abstract byte[] |
engineUpdate(byte[] input, int inputOffset, int inputLen)
Продолжает шифрование многократной части или работу дешифрования (в зависимости от того, как этот шифр был инициализирован), обрабатывая другую часть данных.
|
protected abstract int |
engineUpdate(byte[] input, int inputOffset, int inputLen, byte[] output, int outputOffset)
Продолжает шифрование многократной части или работу дешифрования (в зависимости от того, как этот шифр был инициализирован), обрабатывая другую часть данных.
|
protected int |
engineUpdate(ByteBuffer input, ByteBuffer output)
Продолжает шифрование многократной части или работу дешифрования (в зависимости от того, как этот шифр был инициализирован), обрабатывая другую часть данных.
|
protected void |
engineUpdateAAD(byte[] src, int offset, int len)
Продолжает многослойное обновление Дополнительных Данных Аутентификации (AAD), используя подмножество обеспеченного буфера.
|
protected void |
engineUpdateAAD(ByteBuffer src)
Продолжает многослойное обновление Дополнительных Данных Аутентификации (AAD).
|
protected byte[] |
engineWrap(Key key)
Оберните ключ.
|
protected abstract void engineSetMode(String mode) throws NoSuchAlgorithmException
mode
- режим шифраNoSuchAlgorithmException
- если требуемый режим шифра не существуетprotected abstract void engineSetPadding(String padding) throws NoSuchPaddingException
padding
- дополнительный механизмNoSuchPaddingException
- если требуемый дополнительный механизм не существуетprotected abstract int engineGetBlockSize()
protected abstract int engineGetOutputSize(int inputLen)
update
или doFinal
работа, учитывая входную длину inputLen
(в байтах). Этот вызов принимает во внимание любые необработанные (буферизованные) данные от предыдущего update
вызовите, дополнение, и тегирование AEAD.
Фактическая выходная длина следующего update
или doFinal
вызов может быть меньшим чем длина, возвращенная этим методом.
inputLen
- входная длина (в байтах)protected abstract byte[] engineGetIV()
Это полезно в контексте основанного на пароле шифрования или дешифрования, где IV получается из предоставленного пользователем пароля.
protected abstract AlgorithmParameters engineGetParameters()
Возвращенные параметры могут быть тем же самым, которые использовались, чтобы инициализировать этот шифр, или могут содержать комбинацию значения по умолчанию и случайных значений параметра, используемых базовой реализацией шифра, если этот шифр требует параметров алгоритма, но не был инициализирован ни с кем.
protected abstract void engineInit(int opmode, Key key, SecureRandom random) throws InvalidKeyException
Шифр инициализируется для одной из следующих четырех операций: шифрование, дешифрование, ключевое обертывание или ключевое разворачивание, в зависимости от значения opmode
.
Если этот шифр требует каких-либо параметров алгоритма, которые не могут быть получены из данного key
, базовая реализация шифра, как предполагается, генерирует обязательные параметры самостоятельно (использующий специфичное для провайдера значение по умолчанию или случайные значения), если это инициализируется для шифрования или ключевого обертывания, и повышения InvalidKeyException
если это инициализируется для дешифрования или ключевого разворачивания. Сгенерированные параметры могут быть получены, используя engineGetParameters
или engineGetIV
(если параметр является IV).
Если этот шифр потребует параметров алгоритма, которые не могут быть получены из входных параметров, и нет никаких разумных специфичных для провайдера значений по умолчанию, то инициализация обязательно перестанет работать.
Если этот шифр (включая его базовую обратную связь или дополнительную схему) потребует каких-либо случайных байтов (например, для генерации параметра), то это получит их от random
.
Отметьте, что, когда объект Шифра инициализируется, он теряет все ранее полученное состояние. Другими словами инициализация Шифра эквивалентна созданию нового экземпляра того Шифра и инициализации этого.
opmode
- режим работы этого шифра (это - одно из следующего: ENCRYPT_MODE
, DECRYPT_MODE
, WRAP_MODE
или UNWRAP_MODE
)key
- ключ шифрованияrandom
- источник случайностиInvalidKeyException
- если данный ключ является несоответствующим для того, чтобы инициализировать этот шифр, или требует параметров алгоритма, которые не могут быть определены от данного ключа.protected abstract void engineInit(int opmode, Key key, AlgorithmParameterSpec params, SecureRandom random) throws InvalidKeyException, InvalidAlgorithmParameterException
Шифр инициализируется для одной из следующих четырех операций: шифрование, дешифрование, ключевое обертывание или ключевое разворачивание, в зависимости от значения opmode
.
Если этот шифр требует каких-либо параметров алгоритма и params
нуль, базовая реализация шифра, как предполагается, генерирует обязательные параметры самостоятельно (использующий специфичное для провайдера значение по умолчанию или случайные значения), если это инициализируется для шифрования или ключевого обертывания, и повышения InvalidAlgorithmParameterException
если это инициализируется для дешифрования или ключевого разворачивания. Сгенерированные параметры могут быть получены, используя engineGetParameters
или engineGetIV
(если параметр является IV).
Если этот шифр потребует параметров алгоритма, которые не могут быть получены из входных параметров, и нет никаких разумных специфичных для провайдера значений по умолчанию, то инициализация обязательно перестанет работать.
Если этот шифр (включая его базовую обратную связь или дополнительную схему) потребует каких-либо случайных байтов (например, для генерации параметра), то это получит их от random
.
Отметьте, что, когда объект Шифра инициализируется, он теряет все ранее полученное состояние. Другими словами инициализация Шифра эквивалентна созданию нового экземпляра того Шифра и инициализации этого.
opmode
- режим работы этого шифра (это - одно из следующего: ENCRYPT_MODE
, DECRYPT_MODE
, WRAP_MODE
или UNWRAP_MODE
)key
- ключ шифрованияparams
- параметры алгоритмаrandom
- источник случайностиInvalidKeyException
- если данный ключ является несоответствующим для того, чтобы инициализировать этот шифрInvalidAlgorithmParameterException
- если данные параметры алгоритма являются несоответствующими для этого шифра, или если этот шифр требует параметров алгоритма и params
нуль.protected abstract void engineInit(int opmode, Key key, AlgorithmParameters params, SecureRandom random) throws InvalidKeyException, InvalidAlgorithmParameterException
Шифр инициализируется для одной из следующих четырех операций: шифрование, дешифрование, ключевое обертывание или ключевое разворачивание, в зависимости от значения opmode
.
Если этот шифр требует каких-либо параметров алгоритма и params
нуль, базовая реализация шифра, как предполагается, генерирует обязательные параметры самостоятельно (использующий специфичное для провайдера значение по умолчанию или случайные значения), если это инициализируется для шифрования или ключевого обертывания, и повышения InvalidAlgorithmParameterException
если это инициализируется для дешифрования или ключевого разворачивания. Сгенерированные параметры могут быть получены, используя engineGetParameters
или engineGetIV
(если параметр является IV).
Если этот шифр потребует параметров алгоритма, которые не могут быть получены из входных параметров, и нет никаких разумных специфичных для провайдера значений по умолчанию, то инициализация обязательно перестанет работать.
Если этот шифр (включая его базовую обратную связь или дополнительную схему) потребует каких-либо случайных байтов (например, для генерации параметра), то это получит их от random
.
Отметьте, что, когда объект Шифра инициализируется, он теряет все ранее полученное состояние. Другими словами инициализация Шифра эквивалентна созданию нового экземпляра того Шифра и инициализации этого.
opmode
- режим работы этого шифра (это - одно из следующего: ENCRYPT_MODE
, DECRYPT_MODE
, WRAP_MODE
или UNWRAP_MODE
)key
- ключ шифрованияparams
- параметры алгоритмаrandom
- источник случайностиInvalidKeyException
- если данный ключ является несоответствующим для того, чтобы инициализировать этот шифрInvalidAlgorithmParameterException
- если данные параметры алгоритма являются несоответствующими для этого шифра, или если этот шифр требует параметров алгоритма и params
нуль.protected abstract byte[] engineUpdate(byte[] input, int inputOffset, int inputLen)
Первое inputLen
байты в input
буфер, запускающийся в inputOffset
включительно, обрабатываются, и результат сохранен в новом буфере.
input
- входной буферinputOffset
- смещение в input
где ввод запускаетсяinputLen
- входная длинаprotected abstract int engineUpdate(byte[] input, int inputOffset, int inputLen, byte[] output, int outputOffset) throws ShortBufferException
Первое inputLen
байты в input
буфер, запускающийся в inputOffset
включительно, обрабатываются, и результат сохранен в output
буфер, запускающийся в outputOffset
включительно.
Если output
буфер является слишком маленьким, чтобы содержать результат, a ShortBufferException
бросается.
input
- входной буферinputOffset
- смещение в input
где ввод запускаетсяinputLen
- входная длинаoutput
- буфер для результатаoutputOffset
- смещение в output
где результат сохраненoutput
ShortBufferException
- если данный буфер вывода является слишком небольшим, чтобы содержать результатprotected int engineUpdate(ByteBuffer input, ByteBuffer output) throws ShortBufferException
Все input.remaining()
байты, запускающиеся в input.position()
обрабатываются. Результат сохранен в буфере вывода. По возврату входная буферная позиция будет равна своему пределу; его предел не будет изменяться. Позиция буфера вывода будет совершенствоваться n, где n является значением, возвращенным этим методом; предел буфера вывода не будет изменяться.
Если output.remaining()
байты недостаточны, чтобы содержать результат, a ShortBufferException
бросается.
Подклассы должны рассмотреть переопределение этого метода, если они могут обработать ByteBuffers более эффективно чем байтовые массивы.
input
- ввод ByteBufferoutput
- вывод ByteByfferoutput
ShortBufferException
- если есть недостаточное пространство в буфере выводаNullPointerException
- если любой параметр null
protected abstract byte[] engineDoFinal(byte[] input, int inputOffset, int inputLen) throws IllegalBlockSizeException, BadPaddingException
Первое inputLen
байты в input
буфер, запускающийся в inputOffset
включительно, и любые входные байты, которые, возможно, были буферизованы во время предыдущего update
работа, обрабатываются, с дополнением (если требующийся) быть примененным. Если режим AEAD, такой как GCM/CCM используется, тег аутентификации добавляется в случае шифрования, или проверяется в случае дешифрования. Результат сохранен в новом буфере.
После окончания этот метод сбрасывает этот объект шифра к состоянию, в котором это было когда ранее инициализировано через звонок engineInit
. Таким образом, объект сбрасывается и доступен, чтобы зашифровать или дешифровать (в зависимости от режима работы, который был определен в звонке engineInit
) больше данных.
Отметьте: если какое-либо исключение выдается, этот объект шифра, возможно, должен быть сброшен прежде, чем это сможет использоваться снова.
input
- входной буферinputOffset
- смещение в input
где ввод запускаетсяinputLen
- входная длинаIllegalBlockSizeException
- если этот шифр является блочным шифром, никакое дополнение не требовали (только в режиме шифрования), и длина общих затрат данных, обработанных этим шифром, не является кратным числом размера блока; или если этот алгоритм шифрования неспособен обработать входные обеспеченные данные.BadPaddingException
- если этот шифр находится в режиме дешифрования, и (un), дополнение требовали, но дешифрованные данные не ограничиваются соответствующими дополнительными байтамиAEADBadTagException
- если этот шифр дешифрует в режиме AEAD (таком как GCM/CCM), и полученный тег аутентификации не соответствует расчетное значениеprotected abstract int engineDoFinal(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
бросается.
После окончания этот метод сбрасывает этот объект шифра к состоянию, в котором это было когда ранее инициализировано через звонок engineInit
. Таким образом, объект сбрасывается и доступен, чтобы зашифровать или дешифровать (в зависимости от режима работы, который был определен в звонке engineInit
) больше данных.
Отметьте: если какое-либо исключение выдается, этот объект шифра, возможно, должен быть сброшен прежде, чем это сможет использоваться снова.
input
- входной буферinputOffset
- смещение в input
где ввод запускаетсяinputLen
- входная длинаoutput
- буфер для результатаoutputOffset
- смещение в output
где результат сохраненoutput
IllegalBlockSizeException
- если этот шифр является блочным шифром, никакое дополнение не требовали (только в режиме шифрования), и длина общих затрат данных, обработанных этим шифром, не является кратным числом размера блока; или если этот алгоритм шифрования неспособен обработать входные обеспеченные данные.ShortBufferException
- если данный буфер вывода является слишком небольшим, чтобы содержать результатBadPaddingException
- если этот шифр находится в режиме дешифрования, и (un), дополнение требовали, но дешифрованные данные не ограничиваются соответствующими дополнительными байтамиAEADBadTagException
- если этот шифр дешифрует в режиме AEAD (таком как GCM/CCM), и полученный тег аутентификации не соответствует расчетное значениеprotected int engineDoFinal(ByteBuffer input, ByteBuffer output) throws ShortBufferException, IllegalBlockSizeException, BadPaddingException
Все input.remaining()
байты, запускающиеся в input.position()
обрабатываются. Если режим AEAD, такой как GCM/CCM используется, тег аутентификации добавляется в случае шифрования, или проверяется в случае дешифрования. Результат сохранен в буфере вывода. По возврату входная буферная позиция будет равна своему пределу; его предел не будет изменяться. Позиция буфера вывода будет совершенствоваться n, где n является значением, возвращенным этим методом; предел буфера вывода не будет изменяться.
Если output.remaining()
байты недостаточны, чтобы содержать результат, a ShortBufferException
бросается.
После окончания этот метод сбрасывает этот объект шифра к состоянию, в котором это было когда ранее инициализировано через звонок engineInit
. Таким образом, объект сбрасывается и доступен, чтобы зашифровать или дешифровать (в зависимости от режима работы, который был определен в звонке engineInit
) больше данных.
Отметьте: если какое-либо исключение выдается, этот объект шифра, возможно, должен быть сброшен прежде, чем это сможет использоваться снова.
Подклассы должны рассмотреть переопределение этого метода, если они могут обработать ByteBuffers более эффективно чем байтовые массивы.
input
- ввод ByteBufferoutput
- вывод ByteByfferoutput
IllegalBlockSizeException
- если этот шифр является блочным шифром, никакое дополнение не требовали (только в режиме шифрования), и длина общих затрат данных, обработанных этим шифром, не является кратным числом размера блока; или если этот алгоритм шифрования неспособен обработать входные обеспеченные данные.ShortBufferException
- если есть недостаточное пространство в буфере выводаBadPaddingException
- если этот шифр находится в режиме дешифрования, и (un), дополнение требовали, но дешифрованные данные не ограничиваются соответствующими дополнительными байтамиAEADBadTagException
- если этот шифр дешифрует в режиме AEAD (таком как GCM/CCM), и полученный тег аутентификации не соответствует расчетное значениеNullPointerException
- если любой параметр null
protected byte[] engineWrap(Key key) throws IllegalBlockSizeException, InvalidKeyException
Этот конкретный метод был добавлен к этому ранее определенному абстрактному class. (Для назад совместимости это не может быть абстрактно.) Это может быть переопределено провайдером, чтобы обернуть ключ. Такое переопределение, как ожидают, бросит IllegalBlockSizeException или InvalidKeyException (при указанных обстоятельствах), если данный ключ не может быть обернут. Если этот метод не переопределяется, он всегда бросает UnsupportedOperationException.
key
- ключ, который будет обернут.IllegalBlockSizeException
- если этот шифр является блочным шифром, никакое дополнение не требовали, и продолжительность кодирования ключа, который будет обернут, не является кратным числом размера блока.InvalidKeyException
- если это невозможно или опасно обернуть ключ с этим шифром (например, аппаратные средства, защищенный ключ передают к шифру только для программного обеспечения).protected Key engineUnwrap(byte[] wrappedKey, String wrappedKeyAlgorithm, int wrappedKeyType) throws InvalidKeyException, NoSuchAlgorithmException
Этот конкретный метод был добавлен к этому ранее определенному абстрактному class. (Для назад совместимости это не может быть абстрактно.) Это может быть переопределено провайдером, чтобы развернуть ранее обернутый ключ. Такое переопределение, как ожидают, бросит InvalidKeyException, если данный обернутый ключ не может быть развернут. Если этот метод не переопределяется, он всегда бросает UnsupportedOperationException.
wrappedKey
- ключ, который будет развернут.wrappedKeyAlgorithm
- алгоритм связался с обернутым ключом.wrappedKeyType
- тип обернутого ключа. Это - один из SECRET_KEY
, PRIVATE_KEY
, или PUBLIC_KEY
.NoSuchAlgorithmException
- если никакие установленные провайдеры не могут создать ключи типа wrappedKeyType
для wrappedKeyAlgorithm
.InvalidKeyException
- если wrappedKey
не представляет обернутый ключ типа wrappedKeyType
для wrappedKeyAlgorithm
.protected int engineGetKeySize(Key key) throws InvalidKeyException
Этот конкретный метод был добавлен к этому ранее определенному абстрактному class. Это бросает UnsupportedOperationException
если это не переопределяется провайдером.
key
- ключевой объект.InvalidKeyException
- если key
недопустимо.protected void engineUpdateAAD(byte[] src, int offset, int len)
Звонки в этот метод обеспечивают AAD для шифра, работая в режимах, таких как AEAD (GCM/CCM). Если этот шифр работает или в GCM или в режиме CCM, весь AAD должен быть предоставлен перед начинающимися операциями на шифрованном тексте (через update
и doFinal
методы).
src
- буфер, содержащий AADoffset
- смещение в src
где ввод AAD запускаетсяlen
- число байтов AADIllegalStateException
- если этот шифр находится в неправильном состоянии (например, не был инициализирован), не принимает AAD, или работая или в GCM или в режиме CCM и одном из update
методы уже вызвали для активной работы шифрования/дешифрованияUnsupportedOperationException
- если этот метод не был переопределен реализациейprotected void engineUpdateAAD(ByteBuffer src)
Звонки в этот метод обеспечивают AAD для шифра, работая в режимах, таких как AEAD (GCM/CCM). Если этот шифр работает или в GCM или в режиме CCM, весь AAD должен быть предоставлен перед начинающимися операциями на шифрованном тексте (через update
и doFinal
методы).
Все src.remaining()
байты, запускающиеся в src.position()
обрабатываются. По возврату входная буферная позиция будет равна своему пределу; его предел не будет изменяться.
src
- буфер, содержащий AADIllegalStateException
- если этот шифр находится в неправильном состоянии (например, не был инициализирован), не принимает AAD, или работая или в GCM или в режиме CCM и одном из update
методы уже вызвали для активной работы шифрования/дешифрованияUnsupportedOperationException
- если этот метод не был переопределен реализацией
Для дальнейшей ссылки API и документации разработчика, см. Java Документация SE. Та документация содержит более подробные, предназначенные разработчиком описания, с концептуальными краткими обзорами, определениями сроков, обходных решений, и рабочих примеров кода.
Авторское право © 1993, 2013, Oracle и/или его филиалы. Все права защищены.
Проект сборка-b92