Partilhar via


Primitivos criptográficos

A API CNG fornece um conjunto de funções que executam operações criptográficas básicas, como criar hashes ou criptografar e descriptografar dados. Para obter mais informações sobre essas funções, consulte Funções primitivas criptográficas CNG.

O CNG implementa vários algoritmos criptográficos. Cada algoritmo ou classe de algoritmos expõe sua própria API primitiva. Várias implementações de um determinado algoritmo podem ser instaladas ao mesmo tempo; no entanto, apenas uma implementação será o padrão a qualquer momento.

Cada classe de algoritmo em CNG é representada por um roteador primitivo. Os aplicativos que usam as funções primitivas CNG serão vinculados ao arquivo binário do roteador Bcrypt.dll no modo de usuário ou Ksecdd.sys no modo kernel antes de chamar as funções. Várias rotinas de roteador gerenciam todos os primitivos do algoritmo. Esses roteadores acompanham cada implementação de algoritmo instalada no sistema e roteiam cada chamada de função para o módulo de provedor primitivo apropriado.

O CNG fornece primitivos para as seguintes classes de algoritmos.

Classe de algoritmo Descrição
Gerador de número aleatório
RNG (geração de número aleatório plugável).
Hash
Algoritmos usados para hash, como SHA1 e SHA2.
Criptografia simétrica
Algoritmos usados para criptografia simétrica, como AES, 3DES e RC4.
Criptografia assimétrica
Algoritmos assimétricos (chave pública) que dão suporte à criptografia, como RSA.
Signature
Algoritmos de assinatura, como DSA e ECDSA. Essa classe também pode ser usada com RSA.
Contrato secreto
Algoritmos de contrato secreto, como Diffie-Hellman (DH) e Diffie-Hellman ECDH (curva elíptica).

A ilustração a seguir mostra o design e a função dos primitivos criptográficos CNG.

design e função de primitivos criptográficos cng

O arquivo de cabeçalho Bcrypt.h define a constante MS_PRIMITIVE_PROVIDER como "Provedor Primitivo da Microsoft". Para usar o Provedor Primitivo da Microsoft, passe esse valor para BCryptOpenAlgorithmProvider.