Класс 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. - Возвращает:
- новый объект
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. -
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. -
provider— провайдер. - Возвращает:
- новый объект
Mac - Исключения:
-
IllegalArgumentException— еслиproviderимеет значениеnull -
NoSuchAlgorithmException— если у указанного объектаProviderотсутствует реализацияMacSpiдля указанного алгоритма -
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 включительно.
- Параметры:
-
output— буфер для сохранения результата MAC -
outOffset— смещение вoutput, по которому сохраняется MAC - Исключения:
-
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).
- Параметры:
-
input— данные в байтах - Возвращает:
- результат MAC.
- Исключения:
-
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
- Переопределяет:
-
cloneв классеObject - Возвращает:
- клон, если реализация провайдера поддерживает клонирование.
- Исключения:
-
CloneNotSupportedException— если этот метод вызван для делегата, не поддерживающегоCloneable. - См. также:
© 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://docs.oracle.com/en/java/javase/25/docs/api/java.base/javax/crypto/Mac.html