加密基元

CNG API 提供了一组执行基本加密操作的函数,例如创建哈希或加密和解密数据。 有关这些函数的详细信息,请参阅 CNG 加密基元函数

CNG 实现许多加密算法。 每个算法或算法类都公开其自己的基元 API。 可以同时安装给定算法的多个实现;但是,在任何给定时间,只有一个实现是默认实现。

CNG 中的每个算法类都由基元路由器表示。 使用 CNG 基元函数的应用程序将链接到在用户模式下Bcrypt.dll路由器二进制文件,或者在调用函数之前在内核模式下Ksecdd.sys。 各种路由器例程管理所有算法基元。 这些路由器跟踪安装在系统上的每个算法实现,并将每个函数调用路由到相应的基元提供程序模块。

CNG 为以下算法类提供基元。

Algorithm 类 说明
随机数生成器
可插入随机数生成 (RNG) 。
散 列
用于哈希的算法,例如 SHA1 和 SHA2。
对称加密
用于对称加密的算法,例如 AES、3DES 和 RC4。
非对称加密
非对称 (公钥) 支持加密的算法,例如 RSA。
Signature
签名算法,例如 DSA 和 ECDSA。 此类还可以与 RSA 一起使用。
机密协议
Diffie-Hellman (DH) 和椭圆曲线等机密协议算法Diffie-Hellman (ECDH) 。

下图显示了 CNG 加密基元的设计和功能。

cng 加密基元的设计和功能

头文件 Bcrypt.h 将 MS_PRIMITIVE_PROVIDER 常量定义为“Microsoft Primitive Provider”。 若要使用 Microsoft 基元提供程序,请将此值传递给 BCryptOpenAlgorithmProvider