Función CryptHashData (wincrypt.h)

Importante Esta API está en desuso. El software nuevo y existente debe empezar a usar las API cryptography Next Generation. Microsoft puede quitar esta API en futuras versiones.
 
La función CryptHashData agrega datos a un objeto hash especificado. Esta función y CryptHashSessionKey se pueden llamar varias veces para calcular el hash de flujos de datos largos o discontinuos.

Antes de llamar a esta función, se debe llamar a CryptCreateHash para crear un identificador de un objeto hash.

Sintaxis

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

Parámetros

[in] hHash

Identificador del objeto hash.

[in] pbData

Puntero a un búfer que contiene los datos que se van a agregar al objeto hash.

[in] dwDataLen

Número de bytes de datos que se van a agregar. Debe ser cero si se establece la marca CRYPT_USERDATA.

[in] dwFlags

Se definen los siguientes valores de marca.

Valor Significado
CRYPT_OWF_REPL_LM_HASH
0x00000001
Esta marca no se usa.
CRYPT_USERDATA
1 (0x1)
Todos los proveedores criptográficos de Microsoft omiten este parámetro. Para cualquier CSP que no omita este parámetro, si se establece esta marca, el CSP solicita al usuario que escriba datos directamente. Estos datos se agregan al hash. La aplicación no permite el acceso a los datos. Esta marca se puede usar para permitir al usuario escribir un PIN en el sistema.

Valor devuelto

Si la función se realiza correctamente, el valor devuelto es TRUE.

Si se produce un error en la función, el valor devuelto es FALSE. Para obtener información de error extendida, llame a GetLastError.

Los códigos de error precedidos por "NTE" se generan mediante el CSP concreto que usa. A continuación se indican algunos códigos de error posibles.

Código devuelto Descripción
ERROR_INVALID_HANDLE
Uno de los parámetros especifica un identificador que no es válido.
ERROR_INVALID_PARAMETER
Uno de los parámetros contiene un valor que no es válido. Suele ser un puntero que no es válido.
NTE_BAD_ALGID
El identificador hHash especifica un algoritmo que este CSP no admite.
NTE_BAD_FLAGS
El parámetro dwFlags contiene un valor que no es válido.
NTE_BAD_HASH
El objeto hash especificado por el parámetro hHash no es válido.
NTE_BAD_HASH_STATE
Se intentó agregar datos a un objeto hash que ya está marcado como "finalizado".
NTE_BAD_KEY
Se usa un algoritmo hash con clave, pero la clave de sesión ya no es válida. Este error se genera si la clave de sesión se destruye antes de que se complete la operación de hash.
NTE_BAD_LEN
El CSP no omite la marca CRYPT_USERDATA, se establece la marca y el parámetro dwDataLen tiene un valor distinto de cero.
NTE_BAD_UID
No se encuentra el contexto de CSP que se especificó cuando se creó el objeto hash.
NTE_FAIL
Error en la función de alguna manera inesperada.
NTE_NO_MEMORY
El CSP se quedó sin memoria durante la operación.

Requisitos

Requisito Value
Cliente mínimo compatible Windows XP [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2003 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado wincrypt.h
Library Advapi32.lib
Archivo DLL Advapi32.dll

Consulte también

CryptCreateHash

CryptHashSessionKey

CryptSignHash

Funciones hash y firma digital