加密基元

CNG API 提供了一组函数,用于执行基本的加密作,例如创建哈希或加密和解密数据。 有关这些函数的详细信息,请参阅 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 加密基元的设计和功能。

cng 加密基元设计和功能

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