Share via


Primitivos criptográficos

La API de CNG proporciona un conjunto de funciones que realizan operaciones criptográficas básicas, como crear hashes o cifrar y descifrar datos. Para obtener más información sobre estas funciones, vea Funciones primitivas criptográficas de CNG.

CNG implementa numerosos algoritmos criptográficos. Cada algoritmo o clase de algoritmos expone su propia API primitiva. Se pueden instalar varias implementaciones de un algoritmo determinado al mismo tiempo; sin embargo, solo una implementación será la predeterminada en un momento dado.

Cada clase de algoritmo de CNG se representa mediante un enrutador primitivo. Las aplicaciones que usan las funciones primitivas de CNG se vincularán al archivo binario del enrutador Bcrypt.dll en modo de usuario o Ksecdd.sys en modo kernel antes de llamar a las funciones. Varias rutinas de enrutador administran todos los primitivos del algoritmo. Estos enrutadores realizan un seguimiento de cada implementación de algoritmo instalada en el sistema y enrutan cada llamada de función al módulo de proveedor primitivo adecuado.

CNG proporciona primitivos para las siguientes clases de algoritmos.

Clase Algorithm Descripción
Generador de números aleatorios
Generación de números aleatorios conectables (RNG).
Hash
Algoritmos usados para el hash, como SHA1 y SHA2.
Cifrado simétrico
Algoritmos usados para el cifrado simétrico, como AES, 3DES y RC4.
Cifrado asimétrico
Algoritmos asimétricos (clave pública) que admiten el cifrado, como RSA.
Signature
Algoritmos de firma como DSA y ECDSA. Esta clase también se puede usar con RSA.
Acuerdo secreto
Algoritmos de acuerdo secreto, como Diffie-Hellman (DH) y curva elíptica Diffie-Hellman (ECDH).

En la ilustración siguiente se muestra el diseño y la función de los primitivos criptográficos CNG.

diseño y función de primitivos criptográficos

El archivo de encabezado Bcrypt.h define la constante MS_PRIMITIVE_PROVIDER como "Proveedor primitivo de Microsoft". Para usar el proveedor primitivo de Microsoft, pase este valor a BCryptOpenAlgorithmProvider.