Класс MessageDigest
public abstract class MessageDigest extends MessageDigestSpi
Объект MessageDigest инициализируется в начальном состоянии. Данные обрабатываются с помощью методов update. В любой момент можно вызвать reset для сброса дайджеста. После того, как все данные, которые необходимо обновить, будут обновлены, следует вызвать один из методов digest для завершения вычисления хеша.
Метод digest может быть вызван один раз для заданного количества обновлений. После вызова digest объект MessageDigest сбрасывается в начальное состояние.
Реализации могут свободно реализовывать интерфейс Cloneable. Клиентские приложения могут проверить клонируемость, попытавшись выполнить клонирование и перехватив исключение CloneNotSupportedException:
MessageDigest md = MessageDigest.getInstance("SHA-256");
try {
md.update(toChapter1);
MessageDigest tc1 = md.clone();
byte[] toChapter1Digest = tc1.digest();
md.update(toChapter2);
...etc.
} catch (CloneNotSupportedException cnse) {
throw new DigestException("couldn't make digest of partial content");
}
Обратите внимание, что если данная реализация не клонируема, то всё ещё возможно вычислить промежуточные дайджесты, создав несколько экземпляров, если количество дайджестов известно заранее.
Обратите внимание, что этот класс является абстрактным и расширяется от MessageDigestSpi по историческим причинам. Разработчики приложений должны обращать внимание только на методы, определенные в этом MessageDigest классе; все методы в суперклассе предназначены для поставщиков криптографических сервисов, которые хотят предоставить собственные реализации алгоритмов дайджеста сообщений.
Каждая реализация Java платформы обязана поддерживать следующие стандартные MessageDigest алгоритмы:
SHA-1SHA-256
- Since:
- 1.1
- See Also:
Краткое описание конструкторов
| Модификатор | Конструктор | Описание |
|---|---|---|
protected |
Создаёт дайджест сообщения со заданным именем алгоритма. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
Object |
clone() |
Возвращает клон, если реализация клонируема. |
byte[] |
digest() |
Завершает вычисление хеша, выполняя окончательные операции, такие как заполнение. |
byte[] |
digest |
Выполняет окончательное обновление дайджеста с использованием указанного массива байтов, а затем завершает вычисление дайджеста. |
int |
digest |
Завершает вычисление хеша, выполняя окончательные операции, такие как заполнение. |
final String |
getAlgorithm() |
Возвращает строку, идентифицирующую алгоритм, независимо от деталей реализации. |
final int |
getDigestLength() |
Возвращает длину дайджеста в байтах или 0, если эта операция не поддерживается поставщиком, и реализация не клонируема. |
static MessageDigest |
getInstance |
Возвращает объект MessageDigest, реализующий указанный алгоритм дайджеста. |
static MessageDigest |
getInstance |
Возвращает объект MessageDigest, реализующий указанный алгоритм дайджеста. |
static MessageDigest |
getInstance |
Возвращает объект MessageDigest, реализующий указанный алгоритм дайджеста. |
final Provider |
getProvider() |
Возвращает поставщика этого объекта дайджеста сообщения. |
static boolean |
isEqual |
Сравнивает два дайджеста на равенство. |
void |
reset() |
Сбрасывает дайджест для дальнейшего использования. |
String |
toString() |
Возвращает строковое представление этого объекта дайджеста сообщения. |
void |
update |
Обновляет дайджест, используя указанный байт. |
void |
update |
Обновляет дайджест, используя указанный массив байтов. |
void |
update |
Обновляет дайджест, используя указанный массив байтов, начиная с указанного смещения. |
final void |
update |
Обновляет дайджест, используя указанный ByteBuffer. |
Методы, объявленные в классе java.security.MessageDigestSpi
engineDigest, engineDigest, engineGetDigestLength, engineReset, engineUpdate, engineUpdate, engineUpdate
Подробное описание конструкторов
MessageDigest
protected MessageDigest(String algorithm)
- Параметры:
-
algorithm- стандартное имя алгоритма дайджеста. См. раздел MessageDigest в спецификации Java Security Standard Algorithm Names для получения информации о стандартных именах алгоритмов.
Подробное описание методов
getInstance
public static MessageDigest getInstance(String algorithm) throws NoSuchAlgorithmException
Этот метод перебирает список зарегистрированных поставщиков безопасности, начиная с наиболее предпочтительного. Возвращается новый объект MessageDigest, содержащий реализацию MessageDigestSpi из первого поставщика, поддерживающего указанный алгоритм.
Обратите внимание, что список зарегистрированных поставщиков можно получить с помощью метода Security.getProviders().
- Примечание реализации:
- Реализация JDK дополнительно использует свойство
jdk.security.provider.preferredSecurity, чтобы определить предпочтительный порядок поставщиков для указанного алгоритма. Это может отличаться от порядка поставщиков, возвращаемого методомSecurity.getProviders(). - Параметры:
-
algorithm- имя запрашиваемого алгоритма. См. раздел MessageDigest в спецификации Java Security Standard Algorithm Names для получения информации о стандартных именах алгоритмов. - Возвращает:
- объект
MessageDigest, реализующий указанный алгоритм - Исключения:
-
NoSuchAlgorithmException- если ни одинProviderне поддерживает реализациюMessageDigestSpiдля указанного алгоритма -
NullPointerException- еслиalgorithmявляетсяnull - См. также:
getInstance
public static MessageDigest getInstance(String algorithm, String provider) throws NoSuchAlgorithmException, NoSuchProviderException
Возвращается новый объект MessageDigest, содержащий реализацию MessageDigestSpi из указанного поставщика. Указанный поставщик должен быть зарегистрирован в списке поставщиков безопасности.
Обратите внимание, что список зарегистрированных поставщиков можно получить с помощью метода Security.getProviders().
- Параметры:
-
algorithm- имя запрашиваемого алгоритма. См. раздел MessageDigest в спецификации Java Security Standard Algorithm Names для получения информации о стандартных именах алгоритмов. -
provider- имя поставщика. - Возвращает:
- объект
MessageDigest, реализующий указанный алгоритм - Исключения:
-
IllegalArgumentException- если имя поставщика являетсяnullили пустым -
NoSuchAlgorithmException- если реализацияMessageDigestSpiдля указанного алгоритма недоступна от указанного поставщика -
NoSuchProviderException- если указанный поставщик не зарегистрирован в списке поставщиков безопасности -
NullPointerException- еслиalgorithmявляетсяnull - См. также:
getInstance
public static MessageDigest getInstance(String algorithm, Provider provider) throws NoSuchAlgorithmException
Возвращается новый объект MessageDigest, содержащий реализацию MessageDigestSpi из указанного объекта Provider. Обратите внимание, что указанный объект Provider не обязательно должен быть зарегистрирован в списке поставщиков.
- Параметры:
-
algorithm- имя запрашиваемого алгоритма. См. раздел MessageDigest в спецификации Java Security Standard Algorithm Names для получения информации о стандартных именах алгоритмов. -
provider- поставщик. - Возвращает:
- объект
MessageDigest, реализующий указанный алгоритм - Исключения:
-
IllegalArgumentException- если указанный поставщик являетсяnull -
NoSuchAlgorithmException- если реализацияMessageDigestSpiдля указанного алгоритма недоступна от указанного объектаProvider -
NullPointerException- еслиalgorithmявляетсяnull - С момента:
- 1.4
- См. также:
getProvider
public final Provider getProvider()
- Возвращает:
- поставщик данного объекта message digest
update
public void update(byte input)
- Параметры:
-
input- байт, используемый для обновления дайджеста.
update
public void update(byte[] input, int offset, int len)
- Параметры:
-
input- массив байтов. -
offset- смещение для начала в массиве байтов. -
len- количество байтов для использования, начиная со смещенияoffset.
update
public void update(byte[] input)
- Параметры:
-
input- массив байтов.
update
public final void update(ByteBuffer input)
input.remaining() байтов, начиная со смещения input.position(). По завершении метод установит позицию буфера равной его пределу; предел буфера не изменится.- Параметры:
-
input- буфер ByteBuffer - С момента:
- 1.5
digest
public byte[] digest()
- Возвращает:
- массив байтов для результирующего значения хэша.
digest
public int digest(byte[] buf, int offset, int len) throws DigestException
- Параметры:
-
buf- буфер вывода для вычисленного дайджеста -
offset- смещение в буфере вывода для начала сохранения дайджеста -
len- количество байтов в буфере buf, выделенных для дайджеста - Возвращает:
- количество байтов, помещенных в
buf - Исключения:
-
DigestException- если произошла ошибка.
digest
public byte[] digest(byte[] input)
update(input), передавая массив input методу update, затем вызывает digest().- Параметры:
-
input- входные данные для обновления перед завершением вычисления дайджеста. - Возвращает:
- массив байтов для результирующего значения хэша.
toString
public String toString()
- Переопределяет:
-
toStringв классеObject - Возвращает:
- строковое представление объекта.
isEqual
public static boolean isEqual(byte[] digesta, byte[] digestb)
- Примечание реализации:
- Все байты в
digestaпроверяются на равенство. Время вычисления зависит только от длиныdigesta. Оно не зависит от длиныdigestbили содержимогоdigestaиdigestb. - Параметры:
-
digesta- один из дайджестов для сравнения. -
digestb- другой дайджест для сравнения. - Возвращает:
- true, если дайджесты равны, false в противном случае.
reset
public void reset()
getAlgorithm
public final String getAlgorithm()
- Возвращает:
- название алгоритма
getDigestLength
public final int getDigestLength()
- Возвращает:
- длину дайджеста в байтах или 0, если операция не поддерживается поставщиком, и реализация не клонируема.
- С:
- 1.2
clone
public Object clone() throws CloneNotSupportedException
- Переопределяет:
-
cloneв классеMessageDigestSpi - Возвращает:
- копию, если реализация клонируема.
- Изначает:
-
CloneNotSupportedException- если это вызывается на реализации, которая не поддерживаетCloneable. - См. также:
© 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/java/security/MessageDigest.html