Поделиться через


Функция BCryptHashData (bcrypt.h)

Функция BCryptHashData выполняет один способ хэша или код проверки подлинности сообщений (MAC) в буфере данных.

Синтаксис

NTSTATUS BCryptHashData(
  [in, out] BCRYPT_HASH_HANDLE hHash,
  [in]      PUCHAR             pbInput,
  [in]      ULONG              cbInput,
  [in]      ULONG              dwFlags
);

Параметры

[in, out] hHash

Дескриптор хэша или MAC-объекта, используемого для выполнения операции. Этот дескриптор получается путем вызова функции BCryptCreateHash.

[in] pbInput

Указатель на буфер, содержащий данные для обработки. Параметр cbInput содержит количество байтов в этом буфере. Эта функция не изменяет содержимое этого буфера.

[in] cbInput

Количество байтов в буфере pbInput.

[in] dwFlags

Набор флагов, изменяющих поведение этой функции. В настоящее время флаги не определены, поэтому этот параметр должен быть равен нулю.

Возвращаемое значение

Возвращает код состояния, указывающий на успешность или сбой функции.

Возможные коды возврата включают в себя, но не ограничиваются следующими.

Возвращаемый код Описание
STATUS_SUCCESS
Функция была успешной.
STATUS_INVALID_PARAMETER
Один или несколько параметров недопустимы.
STATUS_INVALID_HANDLE
Хэш-дескриптор в параметре hHash недопустим. После вызова функции BCryptFinishHash для хэш-дескриптора этот дескриптор нельзя использовать повторно.

Замечания

Чтобы объединить несколько буферов в хэш или MAC, можно вызывать эту функцию несколько раз, передавая другой буфер каждый раз. Чтобы получить хэш-значение или ЗНАЧЕНИЕ MAC, вызовите функцию BCryptFinishHash. После вызова функции BCryptFinishH ash для указанного дескриптора этот дескриптор нельзя использовать повторно.

В зависимости от того, какие режимы процессора поддерживает поставщик, BCryptHashData можно вызывать из пользовательского режима или режима ядра. Вызывающие серверы режима ядра могут выполняться в PASSIVE_LEVELIRQL или DISPATCH_LEVEL IRQL. Если текущий уровень IRQL DISPATCH_LEVEL, то дескриптор, предоставленный в параметре hHash, должен быть производным от дескриптора алгоритма, возвращаемого поставщиком, который был открыт с помощью флага BCRYPT_PROV_DISPATCH, а все указатели, передаваемые в функцию BCryptHashData, должны ссылаться на неупакованную (или заблокированную) память.

Чтобы вызвать эту функцию в режиме ядра, используйте Cng.lib, которая входит в состав пакета средств разработки драйверов (DDK). Windows Server 2008 и Windows Vista: для вызова этой функции в режиме ядра используйте Ksecdd.lib.

Требования

Требование Ценность
минимальные поддерживаемые клиентские Windows Vista [классические приложения | Приложения UWP]
минимальный поддерживаемый сервер Windows Server 2008 [классические приложения | Приложения UWP]
целевая платформа Виндоус
заголовка bcrypt.h
библиотеки Bcrypt.lib
DLL Bcrypt.dll

См. также

BCryptCreateHash

BCryptFinishHash