加密基元
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。