Compartilhar via


Pseudo-identificadores do algoritmo CNG

A partir do Windows 10, o CNG (API de Criptografia: Próxima Geração) fornece identificadores de algoritmo predefinidos para operações criptográficas. Esses identificadores de algoritmo simplificam o desenvolvimento eliminando a necessidade de criar manualmente identificadores para algoritmos criptográficos comuns, incluindo funções de hash, algoritmos de criptografia, assinaturas digitais e funções de derivação de chave.

Algoritmos MAC (Código de Autenticação de Mensagens e Hash)

Constante Descrição Padrões
BCRYPT_MD2_ALG_HANDLE
0x00000001
Um identificador para o algoritmo de hash MD2. RFC 1319
BCRYPT_MD4_ALG_HANDLE
0x00000011
Um identificador para o algoritmo de hash MD4. RFC 1320
BCRYPT_MD5_ALG_HANDLE
0x00000021
Um identificador para o algoritmo de hash MD5. RFC 1321
BCRYPT_SHA1_ALG_HANDLE
0x00000031
Um identificador para o algoritmo de hash seguro de 160 bits. FIPS 180-4
BCRYPT_SHA256_ALG_HANDLE
0x00000041
Um identificador para o algoritmo de hash seguro de 256 bits. FIPS 180-4
BCRYPT_SHA384_ALG_HANDLE
0x00000051
Um identificador para o algoritmo de hash seguro de 384 bits. FIPS 180-4
BCRYPT_SHA512_ALG_HANDLE
0x00000061
Um identificador para o algoritmo de hash seguro de 512 bits. FIPS 180-4
BCRYPT_HMAC_SHA1_ALG_HANDLE
0x000000A1
Um identificador para o código de autenticação de mensagem baseado em hash usando o algoritmo de hash seguro de 160 bits. FIPS 180-4, FIPS 198-1
BCRYPT_HMAC_SHA256_ALG_HANDLE
0x000000B1
Um identificador para o código de autenticação de mensagem baseado em hash usando o algoritmo de hash seguro de 256 bits. FIPS 180-4, FIPS 198-1
BCRYPT_HMAC_SHA384_ALG_HANDLE
0x000000C1
Um identificador para o código de autenticação de mensagem baseado em hash usando o algoritmo de hash seguro de 384 bits. FIPS 180-4, FIPS 198-1
BCRYPT_HMAC_SHA512_ALG_HANDLE
0x000000D1
Um identificador para o código de autenticação de mensagem baseado em hash usando o algoritmo de hash seguro de 512 bits. FIPS 180-4, FIPS 198-1
BCRYPT_HMAC_MD2_ALG_HANDLE
0x00000121
Um identificador para o código de autenticação de mensagem baseado em hash usando o algoritmo de hash MD2. RFC 1319, RFC 2104
BCRYPT_HMAC_MD4_ALG_HANDLE
0x00000131
Um identificador para o código de autenticação de mensagem baseado em hash usando o algoritmo de hash MD4. RFC 1320, RFC 2104
BCRYPT_HMAC_MD5_ALG_HANDLE
0x00000091
Um identificador para o código de autenticação de mensagem baseado em hash usando o algoritmo de hash MD4. RFC 1321, RFC 2104
Disponível no Windows 11, versão 23H2
BCRYPT_SHA3_256_ALG_HANDLE
0x000003B1
Um identificador para o algoritmo de hash seguro sha3 de 256 bits. FIPS 202
BCRYPT_SHA3_384_ALG_HANDLE
0x000003C1
Um identificador para o algoritmo de hash seguro SHA3 de 384 bits. FIPS 202
BCRYPT_SHA3_512_ALG_HANDLE
0x000003D1
Um identificador para o algoritmo de hash seguro sha3 de 512 bits. FIPS 202
BCRYPT_HMAC_SHA3_256_ALG_HANDLE
0x000003E1
Um identificador para o código de autenticação de mensagem baseado em hash usando o algoritmo de hash seguro SHA3 de 256 bits. FIPS 202, FIPS 198-1
BCRYPT_HMAC_SHA3_384_ALG_HANDLE
0x000003F1
Um identificador para o código de autenticação de mensagem baseado em hash usando o algoritmo de hash seguro SHA3 de 384 bits. FIPS 202, FIPS 198-1
BCRYPT_HMAC_SHA3_512_ALG_HANDLE
0x00000401
Um identificador para o código de autenticação de mensagem baseado em hash usando o algoritmo de hash seguro SHA3 de 512 bits. FIPS 202, FIPS 198-1
BCRYPT_CSHAKE128_ALG_HANDLE
0x00000411
Um identificador para o algoritmo de hash XOF de 128 bits (função de saída extensível) derivado do SHA3. SP 800-185
BCRYPT_CSHAKE256_ALG_HANDLE
0x00000421
Um identificador para o algoritmo de hash XOF de 256 bits (função de saída extensível) derivado do SHA3. SP 800-185
BCRYPT_KMAC128_ALG_HANDLE
0x00000431
Um identificador para o KMAC (código de autenticação de mensagem Keccak) derivado do SHA3 criado em cSHAKE128. SP 800-185
BCRYPT_KMAC256_ALG_HANDLE
0x00000441
Um identificador para o KMAC (código de autenticação de mensagem Keccak) derivado do SHA3 criado em cSHAKE256. SP 800-185

Algoritmos de assinatura digital PQ

Observação

Os identificadores PQDSA nesta seção estão relacionados a um produto de pré-lançamento que pode ser substancialmente modificado antes de ser lançado comercialmente. A Microsoft não oferece garantias, expressas ou implícitas, em relação às informações fornecidas aqui. O recurso descrito nesta seção está disponível em versões de pré-lançamento do Windows Insider Preview.

Constante Descrição Padrões
BCRYPT_LMS_ALG_HANDLE Um identificador para o algoritmo LMS (assinatura de Leighton-Micali Hash-Based). RFC 8554
BCRYPT_MLDSA_ALG_HANDLE Um identificador para o Algoritmo de Assinatura DigitalLattice-Based de Módulo (ML-DSA). FIPS 204
BCRYPT_SLHDSA_ALG_HANDLE Um identificador para o Algoritmo de Assinatura Digital baseado em Hash sem Estado (SLH-DSA). FIPS 205
BCRYPT_XMSS_ALG_HANDLE Um identificador para o algoritmo baseado em hash com estado XMSS (Esquema de Assinatura Merkle) eXtended. RFC 8391

Algoritmos de criptografia de fluxo

Constante Descrição Padrões
BCRYPT_RC4_ALG_HANDLE
0x00000071
Um identificador para o algoritmo de criptografia de fluxo RC4. Vários

Algoritmos de gerador de número aleatório

Constante Descrição Padrões
BCRYPT_RNG_ALG_HANDLE
0x00000081
Um identificador para o algoritmo de gerador de número aleatório. Começando com o Windows 10: O algoritmo RNG usado é CTR_DRBG AES, definido em SP 800-90A.

Algoritmos de KDF (função de derivação de chave)

Constante Descrição
BCRYPT_CAPI_KDF_ALG_HANDLE
0x00000321
Um identificador para o algoritmo de função de derivação de chave da API de Criptografia (CAPI). Usado pelas funções BCryptKeyDerivation e NCryptKeyDerivation .
BCRYPT_PBKDF2_ALG_HANDLE
0x00000331
Um identificador para o algoritmo PBKDF2 (função de derivação de chave baseada em senha 2). Usado pelas funções BCryptKeyDerivation e NCryptKeyDerivation .
BCRYPT_SP800108_CTR_HMAC_ALG_HANDLE
0x00000341
Um identificador para o modo contador, o algoritmo de função de derivação de chave HMAC (código de autenticação de mensagem baseado em hash). Usado pelas funções BCryptKeyDerivation e NCryptKeyDerivation .
BCRYPT_SP80056A_CONCAT_ALG_HANDLE
0x00000351
Um identificador para o algoritmo de função de derivação de chave SP800-56A. Usado pelas funções BCryptKeyDerivation e NCryptKeyDerivation .
BCRYPT_HKDF_ALG_HANDLE
0x00000391
Um identificador para a função de derivação de chave Extract-and-Expand baseada em HMAC. Usado pelas funções BCryptKeyDerivation e NCryptKeyDerivation .

Algoritmos kem (mecanismo de encapsulamento de chave)

Observação

Os identificadores de ML-KEM nesta seção estão relacionados a um produto de pré-lançamento que pode ser substancialmente modificado antes de ser lançado comercialmente. A Microsoft não oferece garantias, expressas ou implícitas, em relação às informações fornecidas aqui. O recurso descrito nesta seção está disponível em versões de pré-lançamento do Windows Insider Preview.

Constante Descrição Padrões
BCRYPT_MLKEM_ALG_HANDLE Um identificador para o algoritmo mecanismo de encapsulamento de chave deLattice-Based módulo (ML-KEM). FIPS 203

Algoritmos assimétricos

Constante Descrição Padrões
BCRYPT_DH_ALG_HANDLE
0x00000281
Um identificador para o algoritmo Diffie-Hellman troca de chaves. PKCS nº 3
BCRYPT_DSA_ALG_HANDLE
0x000002D1
Um identificador para o algoritmo de assinatura digital DSA (Algoritmo de Assinatura Digital). FIPS 186-2
Começando com o Windows 8: Esse algoritmo dá suporte ao FIPS 186-3. Chaves menores ou iguais a 1.024 bits aderem ao FIPS 186-2 e chaves maiores que 1024 para FIPS 186-3.
BCRYPT_ECDH_ALG_HANDLE
0x00000291
Um identificador para a curva elíptica principal genérica Diffie-Hellman algoritmo de troca de chaves. SP 800-56A
BCRYPT_ECDH_P256_ALG_HANDLE
0x000002A1
Um identificador para a curva elíptica principal de 256 bits Diffie-Hellman algoritmo de troca de chaves. SP 800-56A
BCRYPT_ECDH_P384_ALG_HANDLE
0x000002B1
Um identificador para a curva elíptica principal de 384 bits Diffie-Hellman algoritmo de troca de chaves. SP 800-56A
BCRYPT_ECDH_P521_ALG_HANDLE
0x000002C1
Um identificador para a curva elíptica principal de 521 bits Diffie-Hellman algoritmo de troca de chaves. SP 800-56A
BCRYPT_ECDSA_ALG_HANDLE
0x000000F1
Um identificador para o algoritmo de assinatura digital de curva elíptica principal genérica. ANSI X9.62
BCRYPT_ECDSA_P256_ALG_HANDLE
0x000002E1
Um identificador para o algoritmo de assinatura digital de curva elíptica principal de 256 bits. FIPS 186-2, X9.62
BCRYPT_ECDSA_P384_ALG_HANDLE
0x000002F1
Um identificador para o algoritmo de assinatura digital de curva elíptica principal de 384 bits. FIPS 186-2, X9.62
BCRYPT_ECDSA_P521_ALG_HANDLE
0x00000301
Um identificador para o algoritmo de assinatura digital de curva elíptica principal de 521 bits. FIPS 186-2, X9.62
BCRYPT_RSA_ALG_HANDLE
0x000000E1
Um identificador para o algoritmo de chave pública RSA. PKCS nº 1 v1.5 e v2.0
BCRYPT_RSA_SIGN_ALG_HANDLE
0x00000311
Um identificador para o algoritmo de assinatura RSA. No momento, não há suporte para esse algoritmo. Você pode usar o algoritmo BCRYPT_RSA_ALG_HANDLE para executar operações de assinatura RSA. PKCS nº 1 v1.5 e v2.0.

Bloquear algoritmos de código de autenticação de mensagem baseados em criptografia e codificação

Constante Descrição Padrões
BCRYPT_AES_CMAC_ALG_HANDLE
0x00000101
Um identificador para o algoritmo de criptografia simétrica CMAC (código de autenticação de mensagem) baseado em criptografia baseada em criptografia do AES (Advanced Encryption Standard). SP 800-38B
BCRYPT_AES_GMAC_ALG_HANDLE
0x00000111
Um identificador para o algoritmo de criptografia simétrica GMAC (código de autenticação de mensagem) galois do AES (Advanced Encryption Standard). SP800-38D
BCRYPT_3DES_CBC_ALG_HANDLE
0x00000141
Um identificador para o algoritmo padrão de criptografia de dados triplo usando o cbc (modo de encadeamento de blocos de criptografia). SP 800-67, SP 800-38A
BCRYPT_3DES_ECB_ALG_HANDLE
0x00000151
Um identificador para o algoritmo padrão de criptografia de dados triplo usando o modo de Codebook Eletrônico (ECB). SP 800-67, SP 800-38A
BCRYPT_3DES_CFB_ALG_HANDLE
0x00000161
Um identificador para o algoritmo padrão de criptografia de dados triplo usando o cfb (modo de comentários de criptografia). SP 800-67, SP 800-38A
BCRYPT_3DES_112_CBC_ALG_HANDLE
0x00000171
Um identificador para o algoritmo triple Data Encryption Standard de 112 bits usando o CBC (modo de encadeamento de blocos de criptografia). SP 800-67, SP 800-38A
BCRYPT_3DES_112_ECB_ALG_HANDLE
0x00000181
Um identificador para o algoritmo triple Data Encryption Standard de 112 bits usando o MODO de Codebook Eletrônico (ECB). SP 800-67, SP 800-38A
BCRYPT_3DES_112_CFB_ALG_HANDLE
0x00000191
Um identificador para o algoritmo padrão de criptografia de dados triplo de 112 bits usando o cfb (modo de comentários de criptografia). SP 800-67, SP 800-38A
BCRYPT_AES_CBC_ALG_HANDLE
0x000001A1
Um identificador para o algoritmo AES (Advanced Encryption Standard) usando o CBC (Modo de Encadeamento de Blocos de Criptografia). FIPS 197
BCRYPT_AES_ECB_ALG_HANDLE
0x000001B1
Um identificador para o algoritmo AES (Advanced Encryption Standard) usando o Modo de Codebook Eletrônico (ECB). FIPS 197
BCRYPT_AES_CFB_ALG_HANDLE
0x000001C1
Um identificador para o algoritmo AES (Advanced Encryption Standard) usando o CFB (Modo de Comentários de Criptografia). FIPS 197
BCRYPT_AES_CCM_ALG_HANDLE
0x000001D1
Um identificador para o algoritmo AES (Advanced Encryption Standard) usando o Counter com o CCM (Modo de CBC-MAC). FIPS 197
BCRYPT_AES_GCM_ALG_HANDLE
0x000001E1
Um identificador para o algoritmo AES (Advanced Encryption Standard) usando o Modo de Contador Galois (GCM). FIPS 197
BCRYPT_DES_CBC_ALG_HANDLE
0x000001F1
Um identificador para o algoritmo DES (Data Encryption Standard) usando o GCM (Modo de Encadeamento de Blocos de Criptografia). FIPS 46-3, FIPS 81
BCRYPT_DES_ECB_ALG_HANDLE
0x00000201
Um identificador para o algoritmo DES (Data Encryption Standard) usando o MODO DES (Electronic Codebook Mode). FIPS 46-3, FIPS 81
BCRYPT_DES_CFB_ALG_HANDLE
0x00000211
Um identificador para o algoritmo DES (Data Encryption Standard) usando o CFB (Modo de Comentários de Criptografia). FIPS 46-3, FIPS 81

Observações

Você pode usar esses identificadores em qualquer situação que exija um identificador de algoritmo. No entanto, qualquer chamada para BCryptSetProperty falha, pois o identificador de algoritmo é compartilhado e não pode ser modificado. Além disso, esses identificadores não podem ser usados no IRQL=DISPATCH modo kernel.