Класс Mac
- Все реализуемые интерфейсы:
Cloneable
public class Mac extends Object implements Cloneable
MAC предоставляет способ проверки целостности информации, передаваемой или хранящейся в ненадежном носителе, на основе секретного ключа. Как правило, коды аутентификации сообщений используются между двумя сторонами, которые делят секретный ключ, для проверки информации, передаваемой между этими сторонами.
Механизм MAC, основанный на криптографических хеш-функциях, называется HMAC. HMAC может быть использован с любой криптографической хеш-функцией, например, SHA256 или SHA384, в сочетании с общим секретным ключом. HMAC определен в RFC 2104.
Каждая реализация Java платформы обязана поддерживать следующие стандартные Mac алгоритмы:
HmacSHA1HmacSHA256
- С:
- 1.4
Краткое описание конструкторов
| Модификатор | Конструктор | Описание |
|---|---|---|
protected |
Создаёт объект MAC. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
final Object |
clone() |
Возвращает клон, если реализация поставщика поддерживает клонирование. |
final byte[] |
doFinal() |
Завершает операцию MAC. |
final byte[] |
doFinal |
Обрабатывает заданный массив байтов и завершает операцию MAC. |
final void |
doFinal |
Завершает операцию MAC. |
final String |
getAlgorithm() |
Возвращает имя алгоритма этого Mac объекта. |
static final Mac |
getInstance |
Возвращает объект Mac, который реализует указанный алгоритм MAC. |
static final Mac |
getInstance |
Возвращает объект Mac, который реализует указанный алгоритм MAC. |
static final Mac |
getInstance |
Возвращает объект Mac, который реализует указанный алгоритм MAC. |
final int |
getMacLength() |
Возвращает длину MAC в байтах. |
final Provider |
getProvider() |
Возвращает поставщика этого Mac объекта. |
final void |
init |
Инициализирует этот Mac объект заданным ключом. |
final void |
init |
Инициализирует этот Mac объект заданным ключом и параметрами алгоритма. |
final void |
reset() |
Сбрасывает этот Mac объект. |
final void |
update |
Обрабатывает заданный байт. |
final void |
update |
Обрабатывает заданный массив байтов. |
final void |
update |
Обрабатывает первые len байты в input, начиная с offset включительно. |
final void |
update |
Обрабатывает input.remaining() байта в буфере ByteBuffer input, начиная с input.position(). |
Подробное описание конструкторов
Mac
protected Mac(MacSpi macSpi, Provider provider, String algorithm)
- Параметры:
-
macSpi- делегат -
provider- поставщик -
algorithm- алгоритм
Подробное описание методов
getAlgorithm
public final String getAlgorithm()
Mac. Это то же имя, которое было указано в одном из вызовов getInstance, создавших этот объект Mac.
- Возвращает:
- имя алгоритма этого объекта
Mac.
getInstance
public static final Mac getInstance(String algorithm) throws NoSuchAlgorithmException
Mac, реализующий указанный алгоритм MAC. Этот метод проходит по списку зарегистрированных поставщиков безопасности, начиная с самого предпочтительного. Возвращается новый объект Mac, инкапсулирующий реализацию MacSpi от первого поставщика, поддерживающего указанный алгоритм.
Обратите внимание, что список зарегистрированных поставщиков можно получить с помощью метода Security.getProviders().
- Примечание реализации:
- Реализация JDK дополнительно использует свойство
jdk.security.provider.preferredSecurity, чтобы определить порядок предпочтительности поставщиков для указанного алгоритма. Это может отличаться от порядка поставщиков, возвращаемого методомSecurity.getProviders(). - Параметры:
-
algorithm- стандартное имя запрашиваемого алгоритма MAC. См. раздел Mac в Спецификации Java Security Standard Algorithm Names для получения информации о стандартных именах алгоритмов. - Возвращает:
- новый объект
Mac - Исключения:
-
NoSuchAlgorithmException- если ни один из поставщиковProviderне поддерживает реализациюMacSpiдля указанного алгоритма -
NullPointerException- еслиalgorithmявляетсяnull - См. также:
getInstance
public static final Mac getInstance(String algorithm, String provider) throws NoSuchAlgorithmException, NoSuchProviderException
Mac, реализующий указанный алгоритм MAC. Возвращается новый объект Mac, инкапсулирующий реализацию MacSpi от указанного поставщика. Указанный поставщик должен быть зарегистрирован в списке поставщиков безопасности.
Обратите внимание, что список зарегистрированных поставщиков можно получить с помощью метода Security.getProviders().
- Параметры:
-
algorithm- стандартное имя запрашиваемого алгоритма MAC. См. раздел Mac в Спецификации Java Security Standard Algorithm Names для получения информации о стандартных именах алгоритмов. -
provider- имя поставщика. - Возвращает:
- новый объект
Mac - Исключения:
-
IllegalArgumentException- еслиproviderявляетсяnullили пустым -
NoSuchAlgorithmException- если реализацияMacSpiдля указанного алгоритма недоступна от указанного поставщика -
NoSuchProviderException- если указанный поставщик не зарегистрирован в списке поставщиков безопасности -
NullPointerException- еслиalgorithmявляетсяnull - См. также:
getInstance
public static final Mac getInstance(String algorithm, Provider provider) throws NoSuchAlgorithmException
Mac, реализующий указанный алгоритм MAC. Возвращается новый объект Mac, инкапсулирующий реализацию MacSpi от указанного поставщика. Обратите внимание, что указанному поставщику не обязательно быть зарегистрированным в списке поставщиков.
- Параметры:
-
algorithm- стандартное имя запрашиваемого алгоритма MAC. См. раздел Mac в Спецификации Java Security Standard Algorithm Names для получения информации о стандартных именах алгоритмов. -
provider- поставщик. - Возвращает:
- новый объект
Mac - Исключения:
-
IllegalArgumentException- еслиproviderявляетсяnull -
NoSuchAlgorithmException- если реализацияMacSpiдля указанного алгоритма недоступна от указанного объектаProvider -
NullPointerException- еслиalgorithmявляетсяnull - См. также:
getProvider
public final Provider getProvider()
Mac.- Возвращает:
- поставщик этого объекта
Mac.
getMacLength
public final int getMacLength()
- Возвращает:
- длина MAC в байтах.
init
public final void init(Key key) throws InvalidKeyException
Mac заданным ключом.- Параметры:
-
key- ключ. - Исключения:
-
InvalidKeyException- если заданный ключ не подходит для инициализации этого MAC.
init
public final void init(Key key, AlgorithmParameterSpec params) throws InvalidKeyException, InvalidAlgorithmParameterException
Mac заданным ключом и параметрами алгоритма.- Параметры:
-
key- ключ. -
params- параметры алгоритма. - Исключения:
-
InvalidKeyException- если заданный ключ не подходит для инициализации этого MAC. -
InvalidAlgorithmParameterException- если заданные параметры алгоритма не подходят для этого MAC.
update
public final void update(byte input) throws IllegalStateException
- Параметры:
-
input- обрабатываемый входной байт. - Исключения:
-
IllegalStateException- если этот объектMacне был инициализирован.
update
public final void update(byte[] input) throws IllegalStateException
- Параметры:
-
input- обрабатываемый массив байтов. - Исключения:
-
IllegalStateException- если этот объектMacне был инициализирован.
update
public final void update(byte[] input, int offset, int len) throws IllegalStateException
len байтов в input, начиная с offset включительно.- Параметры:
-
input- буфер ввода. -
offset- смещение вinput, с которого начинается вход. -
len- количество обрабатываемых байтов. - Исключения:
-
IllegalStateException- если этот объектMacне был инициализирован.
update
public final void update(ByteBuffer input)
input.remaining() байтов в ByteBuffer input, начиная с input.position().- Параметры:
-
input- ByteBuffer - Исключения:
-
IllegalStateException- если этот объектMacне был инициализирован. -
IllegalArgumentException- еслиinputравно null - С:
- 1.5
doFinal
public final byte[] doFinal() throws IllegalStateException
Вызов этого метода сбрасывает этот объект Mac до состояния, в котором он находился при предыдущей инициализации с помощью вызова init(Key) или init(Key, AlgorithmParameterSpec). То есть объект сбрасывается и готов сгенерировать другой MAC с тем же ключом, если нужно, с помощью новых вызовов update и doFinal. (Чтобы повторно использовать этот объект Mac с другим ключом, его необходимо повторно инициализировать с помощью вызова init(Key) или init(Key, AlgorithmParameterSpec).
- Возвращает:
- результат MAC.
- Исключения:
-
IllegalStateException- если этот объектMacне был инициализирован.
doFinal
public final void doFinal(byte[] output, int outOffset) throws ShortBufferException, IllegalStateException
Вызов этого метода сбрасывает этот Mac объект в состояние, в котором он находился при предыдущей инициализации с помощью вызова init(Key) или init(Key, AlgorithmParameterSpec). То есть, объект сбрасывается и готов сгенерировать другой MAC с тем же ключом, если это необходимо, с помощью новых вызовов update и doFinal. (Для повторного использования этого Mac объекта с другим ключом он должен быть повторно инициализирован с помощью вызова init(Key) или init(Key, AlgorithmParameterSpec).
Результат MAC хранится в output, начиная с outOffset включительно.
- Parameters:
-
output- буфер, в котором хранится результат MAC -
outOffset- смещение вoutput, где хранится MAC - Throws:
-
ShortBufferException- если заданный буфер вывода слишком мал для хранения результата -
IllegalStateException- если этотMacне был инициализирован.
doFinal
public final byte[] doFinal(byte[] input) throws IllegalStateException
Вызов этого метода сбрасывает этот Mac объект в состояние, в котором он находился при предыдущей инициализации с помощью вызова init(Key) или init(Key, AlgorithmParameterSpec). То есть, объект сбрасывается и готов сгенерировать другой MAC с тем же ключом, если это необходимо, с помощью новых вызовов update и doFinal. (Для повторного использования этого Mac объекта с другим ключом он должен быть повторно инициализирован с помощью вызова init(Key) или init(Key, AlgorithmParameterSpec).
- Parameters:
-
input- данные в байтах - Returns:
- результат MAC.
- Throws:
-
IllegalStateException- если этотMacне был инициализирован.
reset
public final void reset()
Mac объект. Вызов этого метода сбрасывает этот Mac объект в состояние, в котором он находился при предыдущей инициализации с помощью вызова init(Key) или init(Key, AlgorithmParameterSpec). То есть, объект сбрасывается и готов сгенерировать другой MAC с тем же ключом, если это необходимо, с помощью новых вызовов update и doFinal. (Для повторного использования этого Mac объекта с другим ключом он должен быть повторно инициализирован с помощью вызова init(Key) или init(Key, AlgorithmParameterSpec).
clone
public final Object clone() throws CloneNotSupportedException
- Overrides:
-
cloneв классеObject - Returns:
- копию, если реализация поставщика поддерживает клонирование.
- Throws:
-
CloneNotSupportedException- если этот метод вызван на делегате, который не поддерживаетCloneable. - See Also:
© 1993, 2023, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/21/docs/api/java.base/javax/crypto/Mac.html