Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
A função BCryptCreateHash é chamada para criar um objeto MAC (código de autenticação de mensagem) ou hash.
Sintaxe
NTSTATUS BCryptCreateHash(
[in, out] BCRYPT_ALG_HANDLE hAlgorithm,
[out] BCRYPT_HASH_HANDLE *phHash,
[out, optional] PUCHAR pbHashObject,
[in] ULONG cbHashObject,
[in, optional] PUCHAR pbSecret,
[in] ULONG cbSecret,
[in] ULONG dwFlags
);
Parâmetros
[in, out] hAlgorithm
O identificador de um provedor de algoritmo que dá suporte à interface hash ou MAC. Esse identificador é obtido chamando a função BCryptOpenAlgorithmProvider ou pode ser um pseudo-identificador do algoritmo CNG.
[out] phHash
Um ponteiro para um valor BCRYPT_HASH_HANDLE que recebe um identificador que representa o objeto hash ou MAC. Esse identificador é usado em funções de hash ou MAC subsequentes, como a função BCryptHashData . Quando terminar de usar esse identificador, libere-o passando-o para a função BCryptDestroyHash .
[out, optional] pbHashObject
Um ponteiro para um buffer que recebe o hash ou o objeto MAC. O parâmetro cbHashObject contém o tamanho desse buffer. O tamanho necessário desse buffer pode ser obtido chamando a função BCryptGetProperty para obter a propriedade BCRYPT_OBJECT_LENGTH do identificador de algoritmo. Isso fornecerá o tamanho do objeto hash ou MAC para o algoritmo especificado.
Essa memória só pode ser liberada depois que o identificador apontado pelo parâmetro phHash for destruído.
Se o valor desse parâmetro for NULL e o valor do parâmetro cbHashObject for zero, a memória do objeto hash será alocada por essa função e liberada por BCryptDestroyHash.
Windows 7: Essa funcionalidade de gerenciamento de memória está disponível a partir do Windows 7.
[in] cbHashObject
O tamanho, em bytes, do buffer pbHashObject .
Se o valor desse parâmetro for zero e o valor do parâmetro pbHashObject for NULL, a memória do objeto de chave será alocada por essa função e liberada por BCryptDestroyHash.
Windows 7: Essa funcionalidade de gerenciamento de memória está disponível a partir do Windows 7.
[in, optional] pbSecret
Um ponteiro para um buffer que contém a chave a ser usada para um MAC. O parâmetro cbSecret contém o tamanho desse buffer. Se usado com um algoritmo de hash, o algoritmo deve ter sido promovido ao HMAC usando o sinalizador BCRYPT_ALG_HANDLE_HMAC no BCryptOpenAlgorithmProvider.
Para calcular um hash, defina esse parâmetro como NULL.
[in] cbSecret
O tamanho, em bytes, do buffer pbSecret . Se nenhuma chave for usada, defina esse parâmetro como zero.
[in] dwFlags
Sinalizadores que modificam o comportamento da função. Isso pode ser zero ou o seguinte valor:
| Valor | Significado |
|---|---|
| BCRYPT_HASH_REUSABLE_FLAG | Cria um objeto de hash reutilizável. O objeto pode ser usado para uma nova operação de hash imediatamente após chamar BCryptFinishHash. Para obter mais informações, consulte Criando um hash com CNG. Windows Server 2008 R2, Windows 7, Windows Server 2008 e Windows Vista: Não há suporte para esse sinalizador. |
Valor de retorno
Retorna um código de status que indica o êxito ou a falha da função.
Os códigos de retorno possíveis incluem, mas não se limitam a, o seguinte.
| Código de retorno | Descrição |
|---|---|
| STATUS_SUCCESS | A função foi bem-sucedida. |
| STATUS_BUFFER_TOO_SMALL | O tamanho do objeto hash especificado pelo parâmetro cbHashObject não é grande o suficiente para manter o objeto hash. |
| STATUS_INVALID_HANDLE | O identificador de algoritmo no parâmetro hAlgorithm não é válido. |
| STATUS_INVALID_PARAMETER | Um ou mais parâmetros não são válidos. |
| STATUS_NOT_SUPPORTED | O provedor de algoritmo especificado pelo parâmetro hAlgorithm não dá suporte à interface hash ou MAC. |
Observações
Ao usar um provedor de algoritmo com suporte, BCryptCreateHash pode ser chamado do modo de usuário ou do modo kernel. Os chamadores do modo kernel podem executar em PASSIVE_LEVELIRQL ou DISPATCH_LEVEL IRQL. Se o nível IRQL atual for DISPATCH_LEVEL, o identificador fornecido no parâmetro hAlgorithm deverá ter sido aberto usando o sinalizador BCRYPT_PROV_DISPATCH e todos os ponteiros passados para a função BCryptCreateHash deverão se referir à memória não paga (ou bloqueada).
O chamador deve liberar phHash com BCryptDestroyHash quando o objeto não estiver mais em uso.
Para chamar essa função no modo kernel, use Cng.lib, que faz parte do DDK (Driver Development Kit).
Windows Server 2008 e Windows Vista: Para chamar essa função no modo kernel, use Ksecdd.lib.
Requisitos
| Requisito | Valor |
|---|---|
| Cliente mínimo suportado | Windows Vista [aplicativos da área de trabalho | Aplicativos UWP] |
| Servidor mínimo compatível | Windows Server 2008 [aplicativos da área de trabalho | Aplicativos UWP] |
| da Plataforma de Destino |
Windows |
| Header | bcrypt.h |
| Library | Bcrypt.lib |
| de DLL |
Bcrypt.dll |