|
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 где результат сохраненoutputShortBufferException - если данный буфер вывода является слишком небольшим, чтобы содержать результатprotected int engineUpdate(ByteBuffer input, ByteBuffer output) throws ShortBufferException
Все input.remaining() байты, запускающиеся в input.position() обрабатываются. Результат сохранен в буфере вывода. По возврату входная буферная позиция будет равна своему пределу; его предел не будет изменяться. Позиция буфера вывода будет совершенствоваться n, где n является значением, возвращенным этим методом; предел буфера вывода не будет изменяться.
Если output.remaining() байты недостаточны, чтобы содержать результат, a ShortBufferException бросается.
Подклассы должны рассмотреть переопределение этого метода, если они могут обработать ByteBuffers более эффективно чем байтовые массивы.
input - ввод ByteBufferoutput - вывод ByteByfferoutputShortBufferException - если есть недостаточное пространство в буфере выводаNullPointerException - если любой параметр nullprotected 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 где результат сохраненoutputIllegalBlockSizeException - если этот шифр является блочным шифром, никакое дополнение не требовали (только в режиме шифрования), и длина общих затрат данных, обработанных этим шифром, не является кратным числом размера блока; или если этот алгоритм шифрования неспособен обработать входные обеспеченные данные.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 - вывод ByteByfferoutputIllegalBlockSizeException - если этот шифр является блочным шифром, никакое дополнение не требовали (только в режиме шифрования), и длина общих затрат данных, обработанных этим шифром, не является кратным числом размера блока; или если этот алгоритм шифрования неспособен обработать входные обеспеченные данные.ShortBufferException - если есть недостаточное пространство в буфере выводаBadPaddingException - если этот шифр находится в режиме дешифрования, и (un), дополнение требовали, но дешифрованные данные не ограничиваются соответствующими дополнительными байтамиAEADBadTagException - если этот шифр дешифрует в режиме AEAD (таком как GCM/CCM), и полученный тег аутентификации не соответствует расчетное значениеNullPointerException - если любой параметр nullprotected 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