Класс 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 для получения информации о стандартных именах алгоритмов. - Возвращает:
- новый объект
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 для получения информации о стандартных именах алгоритмов. -
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 для получения информации о стандартных именах алгоритмов. -
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, 2025, 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://download.java.net/java/early_access/jdk24/docs/api/java.base/javax/crypto/Mac.html