Класс 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 от указанного объекта Provider. Обратите внимание, что указанный объект Provider не обязательно должен быть зарегистрирован в списке поставщиков.
- Параметры:
-
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не был инициализирован. - С:
- 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, 2021, 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/17/docs/api/java.base/javax/crypto/Mac.html