Криптографические примитивы
API CNG предоставляет набор функций, которые выполняют основные криптографические операции, такие как создание хэшей или шифрование и расшифровка данных. Дополнительные сведения об этих функциях см. в разделе Криптографические примитивные функции CNG.
CNG реализует множество алгоритмов шифрования. Каждый алгоритм или класс алгоритмов предоставляет собственный примитивный API. Одновременно можно установить несколько реализаций заданного алгоритма; однако в любой момент времени по умолчанию будет использоваться только одна реализация.
Каждый класс алгоритма в CNG представлен примитивным маршрутизатором. Приложения, использующие примитивные функции CNG, будут связываться с двоичным файлом маршрутизатора Bcrypt.dll в пользовательском режиме или Ksecdd.sys в режиме ядра перед вызовом функций. Различные подпрограммы маршрутизатора управляют всеми примитивами алгоритмов. Эти маршрутизаторы отслеживают каждую реализацию алгоритма, установленную в системе, и направляют каждый вызов функции в соответствующий модуль поставщика примитива.
CNG предоставляет примитивы для следующих классов алгоритмов.
Класс Algorithm | Описание |
---|---|
Генератор случайных чисел |
Подключаемое создание случайных чисел (RNG). |
Хэширования |
Алгоритмы, используемые для хэширования, такие как SHA1 и SHA2. |
Симметричное шифрование |
Алгоритмы, используемые для симметричного шифрования, такие как AES, 3DES и RC4. |
Асимметричное шифрование |
Асимметричные алгоритмы (открытый ключ), поддерживающие шифрование, например RSA. |
Подпись |
Алгоритмы подписи, такие как DSA и ECDSA. Этот класс также можно использовать с RSA. |
Секретное соглашение |
Алгоритмы секретного соглашения, такие как Diffie-Hellman (DH) и эллиптические кривые Diffie-Hellman (ECDH). |
На следующем рисунке показана схема и функция криптографических примитивов CNG.
Файл заголовка Bcrypt.h определяет константу MS_PRIMITIVE_PROVIDER как "Поставщик примитива Microsoft". Чтобы использовать поставщик Microsoft Primitive, передайте это значение в BCryptOpenAlgorithmProvider.