Função CryptHashData (wincrypt.h)

Importante Essa API foi preterida. O software novo e existente deve começar a usar APIs de Criptografia de Próxima Geração. A Microsoft pode remover essa API em versões futuras.
 
A função CryptHashData adiciona dados a um objeto hash especificado. Essa função e CryptHashSessionKey podem ser chamadas várias vezes para calcular o hash de fluxos de dados longos ou descontinuados.

Antes de chamar essa função, CryptCreateHash deve ser chamado para criar um identificador de um objeto hash.

Sintaxe

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

Parâmetros

[in] hHash

Identificador do objeto hash.

[in] pbData

Um ponteiro para um buffer que contém os dados a serem adicionados ao objeto hash.

[in] dwDataLen

Número de bytes de dados a serem adicionados. Isso deve ser zero se o sinalizador CRYPT_USERDATA estiver definido.

[in] dwFlags

Os valores de sinalizador a seguir são definidos.

Valor Significado
CRYPT_OWF_REPL_LM_HASH
0x00000001
Esse sinalizador não é usado.
CRYPT_USERDATA
1 (0x1)
Todos os Provedores Criptográficos da Microsoft ignoram esse parâmetro. Para qualquer CSP que não ignore esse parâmetro, se esse sinalizador estiver definido, o CSP solicitará que o usuário insira dados diretamente. Esses dados são adicionados ao hash. O aplicativo não tem permissão para acessar os dados. Esse sinalizador pode ser usado para permitir que o usuário insira um PIN no sistema.

Retornar valor

Se a função for bem-sucedida, o valor retornado será TRUE.

Se a função falhar, o valor retornado será FALSE. Para obter informações de erro estendidas, chame GetLastError.

Os códigos de erro precedidos por "NTE" são gerados pelo CSP específico que você está usando. Alguns códigos de erro possíveis seguem.

Código de retorno Descrição
ERROR_INVALID_HANDLE
Um dos parâmetros especifica um identificador que não é válido.
ERROR_INVALID_PARAMETER
Um dos parâmetros contém um valor que não é válido. Isso geralmente é um ponteiro que não é válido.
NTE_BAD_ALGID
O identificador hHash especifica um algoritmo que esse CSP não dá suporte.
NTE_BAD_FLAGS
O parâmetro dwFlags contém um valor que não é válido.
NTE_BAD_HASH
O objeto hash especificado pelo parâmetro hHash não é válido.
NTE_BAD_HASH_STATE
Foi feita uma tentativa de adicionar dados a um objeto hash que já está marcado como "concluído".
NTE_BAD_KEY
Um algoritmo de hash com chave está sendo usado, mas a chave de sessão não é mais válida. Esse erro será gerado se a chave de sessão for destruída antes da conclusão da operação de hash.
NTE_BAD_LEN
O CSP não ignora o sinalizador CRYPT_USERDATA, o sinalizador é definido e o parâmetro dwDataLen tem um valor diferente de zero.
NTE_BAD_UID
O contexto CSP especificado quando o objeto hash foi criado não pode ser encontrado.
NTE_FAIL
A função falhou de alguma forma inesperada.
NTE_NO_MEMORY
O CSP ficou sem memória durante a operação.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows XP [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server 2003 [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho wincrypt.h
Biblioteca Advapi32.lib
DLL Advapi32.dll

Confira também

Cryptcreatehash

Crypthashsessionkey

Cryptsignhash

Funções de hash e assinatura digital