Dela via


Kryptografiska primitiver

CNG-API:et innehåller en uppsättning funktioner som utför grundläggande kryptografiska åtgärder, till exempel att skapa hashar eller kryptera och dekryptera data. Mer information om dessa funktioner finns i CNG Cryptographic Primitive Functions.

CNG implementerar många kryptografiska algoritmer. Varje algoritm eller klass av algoritmer exponerar sitt eget primitiva API. Flera implementeringar av en viss algoritm kan installeras samtidigt. Dock är endast en implementering standard vid en viss tidpunkt.

Varje algoritmklass i CNG representeras av en primitiv router. Program som använder CNG-primitiva funktioner länkar till den binära routerfilen Bcrypt.dll i användarläge eller Ksecdd.sys i kernelläge innan de anropar funktionerna. Olika routerrutiner hanterar alla algoritmprimitiver. Dessa routrar spårar varje algoritmimplementering som är installerad på systemet och dirigerar varje funktionsanrop till lämplig primitiv providermodul.

CNG tillhandahåller primitiver för följande klasser av algoritmer.

Algoritmklass Beskrivning
slumptalsgenerator
Pluggbar slumptalsgenerering (RNG).
hashing
Algoritmer som används för hashning, till exempel SHA1 och SHA2.
symmetrisk kryptering
Algoritmer som används för symmetrisk kryptering, till exempel AES, 3DES och RC4.
asymmetrisk kryptering
Asymmetriska algoritmer (offentlig nyckel) som stöder kryptering, till exempel RSA.
signatur
Signaturalgoritmer som DSA och ECDSA. Den här klassen kan också användas med RSA.
Hemligt avtal
Hemliga avtalsalgoritmer som Diffie-Hellman (DH) och elliptiska kurva Diffie-Hellman (ECDH).

Följande bild visar designen och funktionen för CNG-kryptografiska primitiver.

design och funktion för kryptografiska cng-primitiver

Rubrikfilen Bcrypt.h definierar den MS_PRIMITIVE_PROVIDER konstanten som "Microsoft Primitive Provider". Om du vill använda Microsoft Primitive-providern skickar du det här värdet till BCryptOpenAlgorithmProvider.