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


Функция CryptHashData (wincrypt.h)

Важно Этот API является устаревшим. Новое и существующее программное обеспечение должно начать использовать API-интерфейсы шифрования следующего поколения. Корпорация Майкрософт может удалить этот API в будущих выпусках.
 
Функция CryptHashData добавляет данные в указанный хэш-объект. Эту функцию и CryptHashSessionKey можно вызывать несколько раз для вычисления хэша длинных или неоднородных потоков данных.

Перед вызовом этой функции необходимо вызвать CryptCreateHash для создания дескриптора хэш-объекта.

Синтаксис

BOOL CryptHashData(
  [in] HCRYPTHASH hHash,
  [in] const BYTE *pbData,
  [in] DWORD      dwDataLen,
  [in] DWORD      dwFlags
);

Параметры

[in] hHash

Дескриптор хэш-объекта.

[in] pbData

Указатель на буфер, содержащий данные для добавления в хэш-объект.

[in] dwDataLen

Количество байтов данных, которые необходимо добавить. Значение должно быть равно нулю, если установлен флаг CRYPT_USERDATA.

[in] dwFlags

Определены следующие значения флагов.

Значение Значение
CRYPT_OWF_REPL_LM_HASH
0x00000001
Этот флаг не используется.
CRYPT_USERDATA
1 (0x1)
Все поставщики служб шифрования Майкрософт игнорируют этот параметр. Для любого CSP, который не игнорирует этот параметр, если этот флаг установлен, CSP предлагает пользователю ввести данные напрямую. Эти данные добавляются в хэш. Приложению не разрешен доступ к данным. Этот флаг можно использовать, чтобы разрешить пользователю вводить ПИН-код в систему.

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

Если функция выполнена успешно, возвращается значение TRUE.

Если функция завершается сбоем, возвращается значение FALSE. Для получения дополнительных сведений об ошибке вызовите Метод GetLastError.

Коды ошибок, предваряемые "NTE", создаются конкретным поставщиком служб CSP, который вы используете. Ниже приведены некоторые возможные коды ошибок.

Код возврата Описание
ERROR_INVALID_HANDLE
Один из параметров указывает недопустимый дескриптор.
ERROR_INVALID_PARAMETER
Один из параметров содержит недопустимое значение. Чаще всего это недопустимый указатель.
NTE_BAD_ALGID
Дескриптор hHash указывает алгоритм, который не поддерживается этим поставщиком служб CSP.
NTE_BAD_FLAGS
Параметр dwFlags содержит недопустимое значение.
NTE_BAD_HASH
Хэш-объект, заданный параметром hHash , недопустим.
NTE_BAD_HASH_STATE
Предпринята попытка добавить данные в хэш-объект, который уже помечен как завершенный.
NTE_BAD_KEY
Используется хэш-алгоритм с ключами, но сеансовый ключ больше недействителен. Эта ошибка возникает, если сеансовый ключ уничтожается до завершения операции хэширования.
NTE_BAD_LEN
CSP не игнорирует флаг CRYPT_USERDATA, флаг установлен, а параметр dwDataLen имеет ненулевое значение.
NTE_BAD_UID
Не удается найти контекст CSP, указанный при создании хэш-объекта.
NTE_FAIL
Сбой функции каким-то непредвиденным образом.
NTE_NO_MEMORY
Во время операции у поставщика служб конфигурации не хватает памяти.

Требования

Требование Значение
Минимальная версия клиента Windows XP [только классические приложения]
Минимальная версия сервера Windows Server 2003 [только классические приложения]
Целевая платформа Windows
Header wincrypt.h
Библиотека Advapi32.lib
DLL Advapi32.dll

См. также раздел

CryptCreateHash

CryptHashSessionKey

CryptSignHash

Функции хэша и цифровой подписи