Freigeben über


Kryptografische Grundtypen

Die CNG-API stellt eine Reihe von Funktionen bereit, die grundlegende kryptografische Vorgänge ausführen, z. B. Das Erstellen von Hashes oder das Verschlüsseln und Entschlüsseln von Daten. Weitere Informationen zu diesen Funktionen finden Sie unter CNG Cryptographic Primitive Functions.

CNG implementiert zahlreiche kryptografische Algorithmen. Jeder Algorithmus oder jede Klasse von Algorithmen macht eine eigene primitive API verfügbar. Mehrere Implementierungen eines bestimmten Algorithmus können gleichzeitig installiert werden; Allerdings ist immer nur eine Implementierung die Standardeinstellung.

Jede Algorithmusklasse in CNG wird durch einen primitiven Router dargestellt. Anwendungen, die die CNG-Grundfunktionen verwenden, verknüpfen mit der Router-Binärdatei Bcrypt.dll im Benutzermodus oder Ksecdd.sys im Kernelmodus, bevor Sie die Funktionen aufrufen. Verschiedene Routerroutinen verwalten alle Algorithmusgrundtypen. Diese Router verfolgen jede auf dem System installierte Algorithmusimplementierung und leiten jeden Funktionsaufruf an das entsprechende primitive Anbietermodul weiter.

CNG stellt Grundtypen für die folgenden Algorithmenklassen bereit.

Algorithm-Klasse Beschreibung
Zufallszahlengenerator
Austauschbare Zufallszahlengenerierung (RNG).
Hashing
Algorithmen, die für Hashing verwendet werden, z. B. SHA1 und SHA2.
symmetrische Verschlüsselung
Algorithmen, die für die symmetrische Verschlüsselung verwendet werden, z. B. AES, 3DES und RC4.
asymmetrische Verschlüsselung
Asymmetrische (öffentliche Schlüssel)-Algorithmen, die Verschlüsselung unterstützen, z. B. RSA.
signatur
Signaturalgorithmen wie DSA und ECDSA. Diese Klasse kann auch mit RSA verwendet werden.
Geheimvertrag
Geheime Vereinbarungsalgorithmen wie Diffie-Hellman (DH) und elliptische Kurven Diffie-Hellman (ECDH).

Die folgende Abbildung zeigt den Entwurf und die Funktion der CNG-Kryptografiegrundtypen.

Entwurf und Funktion von kryptografischen Grundtypen

Die Headerdatei Bcrypt.h definiert die MS_PRIMITIVE_PROVIDER Konstante als "Microsoft Primitive Provider". Um den Microsoft Primitive Provider zu verwenden, übergeben Sie diesen Wert an BCryptOpenAlgorithmProvider.