Класс Mac
- Все реализуемые интерфейсы:
Cloneable
public class Mac extends Object implements Cloneable
MAC позволяет проверять целостность информации, передаваемой по ненадежному каналу или хранящейся на ненадежном носителе, с использованием секретного ключа. Обычно коды аутентификации сообщений используются двумя сторонами, совместно использующими секретный ключ, для проверки информации, передаваемой между ними.
Механизм MAC, основанный на криптографических хеш-функциях, называется HMAC. HMAC можно использовать с любой криптографической хеш-функцией, например SHA256 или SHA384, в сочетании с общим секретным ключом. HMAC определен в RFC 2104.
Каждая реализация платформы Java должна поддерживать следующие стандартные алгоритмы Mac:
HmacSHA1HmacSHA256PBEWithHmacSHA256
- Начиная с версии:
- 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(). |
Методы, объявленные в классе Object
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait | Модификатор и тип | Метод | Описание |
|---|---|---|
boolean |
equals |
Указывает, равен ли другой объект этому объекту. |
protected void |
finalize() |
Устарело, планируется удаление: этот элемент API может быть удален в будущей версии. Финализация объявлена устаревшей и может быть удалена в одном из будущих выпусков. |
final Class |
getClass() |
Возвращает класс времени выполнения этого объекта Object. |
int |
hashCode() |
Возвращает хеш-код этого объекта. |
final void |
notify() |
Пробуждает один поток, ожидающий на мониторе этого объекта. |
final void |
notifyAll() |
Пробуждает все потоки, ожидающие на мониторе этого объекта. |
String |
toString() |
Возвращает строковое представление объекта. |
final void |
wait() |
Переводит текущий поток в ожидание до пробуждения, обычно посредством вызова notify или interrupt. |
final void |
wait |
Переводит текущий поток в ожидание до пробуждения, обычно посредством вызова notify или interrupt, либо до истечения заданного времени. |
final void |
wait |
Переводит текущий поток в ожидание до пробуждения, обычно посредством вызова notify или interrupt, либо до истечения заданного времени. |
Подробное описание конструкторов
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 Reference Implementation дополнительно использует свойство
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.