Função BCryptCreateHash (bcrypt.h)
A função BCryptCreateHash
Sintaxe
NTSTATUS BCryptCreateHash(
[in, out] BCRYPT_ALG_HANDLE hAlgorithm,
[out] BCRYPT_HASH_HANDLE *phHash,
[out] PUCHAR pbHashObject,
[in, optional] ULONG cbHashObject,
[in, optional] PUCHAR pbSecret,
[in] ULONG cbSecret,
[in] ULONG dwFlags
);
Parâmetros
[in, out] hAlgorithm
O identificador de um provedor de algoritmos criado usando a função BCryptOpenAlgorithmProvider. O algoritmo especificado quando o provedor foi criado deve dar suporte à interface de hash.
[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 mac ou hash subsequentes, como a função BCryptHashData. Quando terminar de usar esse identificador, libere-o passando-o para a função BCryptDestroyHash
[out] pbHashObject
Um ponteiro para um buffer que recebe o hash ou o objeto MAC. O parâmetro cbHashObject
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 e liberada por essa função. Windows 7: Essa funcionalidade de gerenciamento de memória está disponível a partir do Windows 7.
[in, optional] 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 e liberada por essa função. 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 o hash ou MAC. O parâmetro cbSecret contém o tamanho desse buffer. Essa chave só se aplica a algoritmos de hash abertos pela função BCryptOpenAlgorithmProvider
[in] cbSecret
O tamanho, em bytes, do buffer de 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 valor a seguir.
Valor | Significado |
---|---|
|
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 comCNG.
Windows Server 2008 R2, Windows 7, Windows Server 2008 e Windows Vista: Esse sinalizador não tem suporte. |
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 |
---|---|
|
A função foi bem-sucedida. |
|
O tamanho do objeto hash especificado pelo parâmetro cbHashObject não é grande o suficiente para manter o objeto hash. |
|
O identificador de algoritmo no parâmetro hAlgorithm |
|
Um ou mais parâmetros não são válidos. |
|
O provedor de algoritmo especificado pelo parâmetro hAlgorithm não dá suporte à interface de hash. |
Observações
Dependendo de quais modos de processador um provedor dá suporte, BCryptCreateHash pode ser chamado do modo de usuário ou do modo kernel. Os chamadores do modo kernel podem ser executados 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 de BCRYPT_PROV_DISPATCH e todos os ponteiros passados para a função BCryptCreateHash devem se referir à memória nãopagada (ou bloqueada).
Para chamar essa função no modo kernel, use Cng.lib, que faz parte do DDK (Driver Development Kit). Para obter mais informações, consulte WDK e ferramentas de desenvolvedor.Windows Server 2008 e Windows Vista: Para chamar essa função no modo kernel, use Ksecdd.lib.
Requisitos
Requisito | Valor |
---|---|
de cliente com suporte mínimo | Windows Vista [aplicativos da área de trabalho | Aplicativos UWP] |
servidor com suporte mínimo | Windows Server 2008 [aplicativos da área de trabalho | Aplicativos UWP] |
da Plataforma de Destino |
Windows |
cabeçalho | bcrypt.h |
biblioteca | Bcrypt.lib |
de DLL |
Bcrypt.dll |