从 Windows 10 开始,CNG(加密 API:下一代)为加密作提供预定义的算法句柄。 这些算法通过无需手动创建常见加密算法的句柄(包括哈希函数、加密算法、数字签名和密钥派生函数)来简化开发。
哈希和消息身份验证代码 (MAC) 算法
| 不断 | 描述 | 标准 |
|---|---|---|
|
BCRYPT_MD2_ALG_HANDLE 0x00000001 |
MD2 哈希算法的句柄。 | RFC 1319 |
|
BCRYPT_MD4_ALG_HANDLE 0x00000011 |
MD4 哈希算法的句柄。 | RFC 1320 |
|
BCRYPT_MD5_ALG_HANDLE 0x00000021 |
MD5 哈希算法的句柄。 | RFC 1321 |
|
BCRYPT_SHA1_ALG_HANDLE 0x00000031 |
160 位安全哈希算法的句柄。 | FIPS 180-4 |
|
BCRYPT_SHA256_ALG_HANDLE 0x00000041 |
256 位安全哈希算法的句柄。 | FIPS 180-4 |
|
BCRYPT_SHA384_ALG_HANDLE 0x00000051 |
384 位安全哈希算法的句柄。 | FIPS 180-4 |
|
BCRYPT_SHA512_ALG_HANDLE 0x00000061 |
512 位安全哈希算法的句柄。 | FIPS 180-4 |
|
BCRYPT_HMAC_SHA1_ALG_HANDLE 0x000000A1 |
使用 160 位安全哈希算法处理基于哈希的消息身份验证代码的句柄。 | FIPS 180-4、 FIPS 198-1 |
|
BCRYPT_HMAC_SHA256_ALG_HANDLE 0x000000B1 |
使用 256 位安全哈希算法处理基于哈希的消息身份验证代码的句柄。 | FIPS 180-4、 FIPS 198-1 |
|
BCRYPT_HMAC_SHA384_ALG_HANDLE 0x000000C1 |
使用 384 位安全哈希算法处理基于哈希的消息身份验证代码的句柄。 | FIPS 180-4、 FIPS 198-1 |
|
BCRYPT_HMAC_SHA512_ALG_HANDLE 0x000000D1 |
使用 512 位安全哈希算法处理基于哈希的消息身份验证代码的句柄。 | FIPS 180-4、 FIPS 198-1 |
|
BCRYPT_HMAC_MD2_ALG_HANDLE 0x00000121 |
使用 MD2 哈希算法处理基于哈希的消息身份验证代码的句柄。 | RFC 1319、 RFC 2104 |
|
BCRYPT_HMAC_MD4_ALG_HANDLE 0x00000131 |
使用 MD4 哈希算法处理基于哈希的消息身份验证代码的句柄。 | RFC 1320、 RFC 2104 |
|
BCRYPT_HMAC_MD5_ALG_HANDLE 0x00000091 |
使用 MD4 哈希算法处理基于哈希的消息身份验证代码的句柄。 | RFC 1321、 RFC 2104 |
| 在 Windows 11 版本 23H2 中可用 | ||
|
BCRYPT_SHA3_256_ALG_HANDLE 0x000003B1 |
SHA3 256 位安全哈希算法的句柄。 | FIPS 202 |
|
BCRYPT_SHA3_384_ALG_HANDLE 0x000003C1 |
SHA3 384 位安全哈希算法的句柄。 | FIPS 202 |
|
BCRYPT_SHA3_512_ALG_HANDLE 0x000003D1 |
SHA3 512 位安全哈希算法的句柄。 | FIPS 202 |
|
BCRYPT_HMAC_SHA3_256_ALG_HANDLE 0x000003E1 |
使用 SHA3 256 位安全哈希算法处理基于哈希的消息身份验证代码的句柄。 | FIPS 202、 FIPS 198-1 |
|
BCRYPT_HMAC_SHA3_384_ALG_HANDLE 0x000003F1 |
使用 SHA3 384 位安全哈希算法处理基于哈希的消息身份验证代码的句柄。 | FIPS 202、 FIPS 198-1 |
|
BCRYPT_HMAC_SHA3_512_ALG_HANDLE 0x00000401 |
使用 SHA3 512 位安全哈希算法处理基于哈希的消息身份验证代码的句柄。 | FIPS 202、 FIPS 198-1 |
|
BCRYPT_CSHAKE128_ALG_HANDLE 0x00000411 |
SHA3 派生的 cSHAKE 128 位 XOF(扩展输出函数)哈希算法的句柄。 | SP 800-185 |
|
BCRYPT_CSHAKE256_ALG_HANDLE 0x00000421 |
SHA3 派生的 cSHAKE 256 位 XOF(扩展输出函数)哈希算法的句柄。 | SP 800-185 |
|
BCRYPT_KMAC128_ALG_HANDLE 0x00000431 |
基于 cSHAKE128 构建的 SHA3 派生 Keccak 消息身份验证代码(KMAC)的句柄。 | SP 800-185 |
|
BCRYPT_KMAC256_ALG_HANDLE 0x00000441 |
基于 cSHAKE256 构建的 SHA3 派生 Keccak 消息身份验证代码(KMAC)的句柄。 | SP 800-185 |
PQ 数字签名算法
注释
本部分中的 PQDSA 句柄与预发行版产品相关,该产品在商业发布之前可能会进行大幅修改。 Microsoft对此处提供的信息不作任何明示或暗示的保证。 本节中所述的功能在 Windows 预览体验成员预览版的预发行版本中提供。
| 不断 | 描述 | 标准 |
|---|---|---|
| BCRYPT_LMS_ALG_HANDLE | Leighton-Micali Hash-Based 签名 (LMS) 算法的句柄。 | RFC 8554 |
| BCRYPT_MLDSA_ALG_HANDLE | 模块Lattice-Based 数字签名算法(ML-DSA)的句柄。 | FIPS 204 |
| BCRYPT_SLHDSA_ALG_HANDLE | 基于无状态哈希的数字签名算法(SLH-DSA)的句柄。 | FIPS 205 |
| BCRYPT_XMSS_ALG_HANDLE | eXtended Merkle 签名方案 (XMSS) 有状态基于哈希的算法的句柄。 | RFC 8391 |
流密码算法
| 不断 | 描述 | 标准 |
|---|---|---|
|
BCRYPT_RC4_ALG_HANDLE 0x00000071 |
RC4 流密码算法的句柄。 | 均可 |
随机数生成器算法
| 不断 | 描述 | 标准 |
|---|---|---|
|
BCRYPT_RNG_ALG_HANDLE 0x00000081 |
随机数生成器算法的句柄。 | 从 Windows 10 开始: 使用的 RNG 算法是在 SP 800-90A 中定义的 AES CTR_DRBG。 |
密钥派生函数 (KDF) 算法
| 不断 | 描述 |
|---|---|
|
BCRYPT_CAPI_KDF_ALG_HANDLE 0x00000321 |
加密 API (CAPI) 密钥派生函数算法的句柄。 由 BCryptKeyDerivation 和 NCryptKeyDerivation 函数使用。 |
|
BCRYPT_PBKDF2_ALG_HANDLE 0x00000331 |
基于密码的密钥派生函数 2 (PBKDF2) 算法的句柄。 由 BCryptKeyDerivation 和 NCryptKeyDerivation 函数使用。 |
|
BCRYPT_SP800108_CTR_HMAC_ALG_HANDLE 0x00000341 |
计数器模式基于哈希的消息身份验证代码 (HMAC) 密钥派生函数算法的句柄。 由 BCryptKeyDerivation 和 NCryptKeyDerivation 函数使用。 |
|
BCRYPT_SP80056A_CONCAT_ALG_HANDLE 0x00000351 |
SP800-56A 密钥派生函数算法的句柄。 由 BCryptKeyDerivation 和 NCryptKeyDerivation 函数使用。 |
|
BCRYPT_HKDF_ALG_HANDLE 0x00000391 |
基于 HMAC 的提取和扩展密钥派生函数的句柄。 由 BCryptKeyDerivation 和 NCryptKeyDerivation 函数使用。 |
密钥封装机制 (KEM) 算法
注释
本部分中的 ML-KEM 句柄与预发行产品相关,该产品在商业发布之前可能会进行大幅修改。 Microsoft对此处提供的信息不作任何明示或暗示的保证。 本节中所述的功能在 Windows 预览体验成员预览版的预发行版本中提供。
| 不断 | 描述 | 标准 |
|---|---|---|
| BCRYPT_MLKEM_ALG_HANDLE | 模块Lattice-Based 密钥封装机制(ML-KEM)算法的句柄。 | FIPS 203 |
非对称算法
| 不断 | 描述 | 标准 |
|---|---|---|
|
BCRYPT_DH_ALG_HANDLE 0x00000281 |
Diffie-Hellman 密钥交换算法的句柄。 | PKCS #3 |
|
BCRYPT_DSA_ALG_HANDLE 0x000002D1 |
数字签名算法(DSA)数字签名算法的句柄。 |
FIPS 186-2 从 Windows 8 开始: 此算法支持 FIPS 186-3。 小于或等于 1024 位的键遵循 FIPS 186-2 ,密钥大于 1024 到 FIPS 186-3。 |
|
BCRYPT_ECDH_ALG_HANDLE 0x00000291 |
泛型质椭圆曲线的句柄 Diffie-Hellman 密钥交换算法。 | SP 800-56A |
|
BCRYPT_ECDH_P256_ALG_HANDLE 0x000002A1 |
256 位质椭圆曲线的句柄 Diffie-Hellman 密钥交换算法。 | SP 800-56A |
|
BCRYPT_ECDH_P384_ALG_HANDLE 0x000002B1 |
384 位质椭圆曲线的句柄 Diffie-Hellman 密钥交换算法。 | SP 800-56A |
|
BCRYPT_ECDH_P521_ALG_HANDLE 0x000002C1 |
521 位质椭圆曲线的句柄 Diffie-Hellman 密钥交换算法。 | SP 800-56A |
|
BCRYPT_ECDSA_ALG_HANDLE 0x000000F1 |
泛型质椭圆曲线数字签名算法的句柄。 | ANSI X9.62 |
|
BCRYPT_ECDSA_P256_ALG_HANDLE 0x000002E1 |
256 位质椭圆曲线数字签名算法的句柄。 | FIPS 186-2、X9.62 |
|
BCRYPT_ECDSA_P384_ALG_HANDLE 0x000002F1 |
384 位质椭圆曲线数字签名算法的句柄。 | FIPS 186-2、X9.62 |
|
BCRYPT_ECDSA_P521_ALG_HANDLE 0x00000301 |
521 位质椭圆曲线数字签名算法的句柄。 | FIPS 186-2、X9.62 |
|
BCRYPT_RSA_ALG_HANDLE 0x000000E1 |
RSA 公钥算法的句柄。 | PKCS #1 v1.5 和 v2.0 |
|
BCRYPT_RSA_SIGN_ALG_HANDLE 0x00000311 |
RSA 签名算法的句柄。 目前不支持此算法。 可以使用 BCRYPT_RSA_ALG_HANDLE 算法来执行 RSA 签名作。 | PKCS #1 v1.5 和 v2.0。 |
阻止基于密码和基于密码的消息身份验证代码算法
| 不断 | 描述 | 标准 |
|---|---|---|
|
BCRYPT_AES_CMAC_ALG_HANDLE 0x00000101 |
高级加密标准(AES)基于密码的消息身份验证代码(CMAC)对称加密算法的句柄。 | SP 800-38B |
|
BCRYPT_AES_GMAC_ALG_HANDLE 0x00000111 |
高级加密标准 (AES) Galois 消息身份验证代码 (GMAC) 对称加密算法的句柄。 SP800-38D | |
|
BCRYPT_3DES_CBC_ALG_HANDLE 0x00000141 |
使用密码块链模式(CBC)的三重数据加密标准算法的句柄。 | SP 800-67、 SP 800-38A |
|
BCRYPT_3DES_ECB_ALG_HANDLE 0x00000151 |
使用电子代码手册模式的三重数据加密标准算法的句柄(ECB)。 | SP 800-67、 SP 800-38A |
|
BCRYPT_3DES_CFB_ALG_HANDLE 0x00000161 |
使用密码反馈模式的三重数据加密标准算法的句柄(CFB)。 | SP 800-67、 SP 800-38A |
|
BCRYPT_3DES_112_CBC_ALG_HANDLE 0x00000171 |
使用密码块链模式 (CBC) 的 112 位三重数据加密标准算法的句柄。 | SP 800-67、 SP 800-38A |
|
BCRYPT_3DES_112_ECB_ALG_HANDLE 0x00000181 |
使用电子 Codebook 模式的 112 位三重数据加密标准算法(ECB)的句柄。 | SP 800-67、 SP 800-38A |
|
BCRYPT_3DES_112_CFB_ALG_HANDLE 0x00000191 |
使用密码反馈模式 (CFB) 的 112 位三重数据加密标准算法的句柄。 | SP 800-67、 SP 800-38A |
|
BCRYPT_AES_CBC_ALG_HANDLE 0x000001A1 |
使用密码块链模式(CBC)的高级加密标准(AES)算法的句柄。 | FIPS 197 |
|
BCRYPT_AES_ECB_ALG_HANDLE 0x000001B1 |
使用电子代码手册模式(ECB)的高级加密标准(AES)算法的句柄。 | FIPS 197 |
|
BCRYPT_AES_CFB_ALG_HANDLE 0x000001C1 |
使用密码反馈模式(CFB)的高级加密标准 (AES) 算法的句柄。 | FIPS 197 |
|
BCRYPT_AES_CCM_ALG_HANDLE 0x000001D1 |
将计数器与 CBC-MAC 模式(CCM)配合使用的高级加密标准 (AES) 算法的句柄。 | FIPS 197 |
|
BCRYPT_AES_GCM_ALG_HANDLE 0x000001E1 |
使用 Galois 计数器模式 (GCM) 的高级加密标准 (AES) 算法的句柄。 | FIPS 197 |
|
BCRYPT_DES_CBC_ALG_HANDLE 0x000001F1 |
使用密码块链模式(GCM)的数据加密标准(DES)算法的句柄。 | FIPS 46-3、 FIPS 81 |
|
BCRYPT_DES_ECB_ALG_HANDLE 0x00000201 |
使用电子编解码器模式(ECB)的数据加密标准(DES)算法的句柄。 | FIPS 46-3、 FIPS 81 |
|
BCRYPT_DES_CFB_ALG_HANDLE 0x00000211 |
使用密码反馈模式(CFB)的数据加密标准(DES)算法的句柄。 | FIPS 46-3、 FIPS 81 |
言论
在任何需要算法句柄的情况下,都可以使用这些句柄。 但是,当算法句柄共享且无法修改时,对 BCryptSetProperty 的任何调用都会失败。 此外,这些句柄不能在 IRQL=DISPATCH 内核模式下使用。