CNG 算法伪句柄

从 Windows 10 开始,CNG 为许多算法提供预定义的算法句柄。 在任何需要算法句柄的情况下,都可以使用这些句柄。

哈希和消息身份验证代码 (MAC) 算法

不断 描述
BCRYPT_MD2_ALG_HANDLE MD2 哈希算法的句柄。 标准:RFC 1319。
BCRYPT_MD4_ALG_HANDLE MD4 哈希算法的句柄。 标准:RFC 1320。
BCRYPT_MD5_ALG_HANDLE MD5 哈希算法的句柄。 标准:RFC 1321。
BCRYPT_SHA1_ALG_HANDLE 160 位安全哈希算法的句柄。 标准:FIPS 180-2、FIPS 198。
BCRYPT_SHA256_ALG_HANDLE 256 位安全哈希算法的句柄。 标准:FIPS 180-2、FIPS 198。
BCRYPT_SHA384_ALG_HANDLE 384 位安全哈希算法的句柄。 标准:FIPS 180-2、FIPS 198。
BCRYPT_SHA512_ALG_HANDLE 512 位安全哈希算法的句柄。 标准:FIPS 180-2、FIPS 198。
BCRYPT_SHA3_256_ALG_HANDLE SHA3 256 位安全哈希算法的句柄。 标准:FIPS 202。
Windows 11 版本 24H2: 开始支持此算法。
BCRYPT_SHA3_384_ALG_HANDLE SHA3 384 位安全哈希算法的句柄。 标准:FIPS 202。
Windows 11 版本 24H2: 开始支持此算法。
BCRYPT_SHA3_512_ALG_HANDLE SHA3 512 位安全哈希算法的句柄。 标准:FIPS 202。
Windows 11 版本 24H2: 开始支持此算法。
BCRYPT_HMAC_MD2_ALG_HANDLE 使用 MD2 哈希算法处理基于哈希的消息身份验证代码的句柄。 标准:RFC 2104、RFC 1319。
BCRYPT_HMAC_MD4_ALG_HANDLE 使用 MD4 哈希算法处理基于哈希的消息身份验证代码的句柄。 标准:RFC 2104、RFC 1320。
BCRYPT_HMAC_MD5_ALG_HANDLE 使用 MD4 哈希算法处理基于哈希的消息身份验证代码的句柄。 标准:RFC 2104、RFC 1321。
BCRYPT_HMAC_SHA1_ALG_HANDLE 使用 160 位安全哈希算法处理基于哈希的消息身份验证代码的句柄。 标准:RFC 2014、FIPS 180-2、FIPS 198。
BCRYPT_HMAC_SHA256_ALG_HANDLE 使用 256 位安全哈希算法处理基于哈希的消息身份验证代码的句柄。 标准:RFC 2014、FIPS 180-2、FIPS 198。
BCRYPT_HMAC_SHA384_ALG_HANDLE 使用 384 位安全哈希算法处理基于哈希的消息身份验证代码的句柄。 标准:RFC 2014、FIPS 180-2、FIPS 198。
BCRYPT_HMAC_SHA512_ALG_HANDLE 使用 512 位安全哈希算法处理基于哈希的消息身份验证代码的句柄。 标准:RFC 2014、FIPS 180-2、FIPS 198。
BCRYPT_HMAC_SHA3_256_ALG_HANDLE 使用 SHA3 256 位安全哈希算法处理基于哈希的消息身份验证代码的句柄。 标准:RFC 2014、FIPS 202。
Windows 11 版本 24H2: 开始支持此算法。
BCRYPT_HMAC_SHA3_384_ALG_HANDLE 使用 SHA3 384 位安全哈希算法处理基于哈希的消息身份验证代码的句柄。 标准:RFC 2014、FIPS 202。
Windows 11 版本 24H2: 开始支持此算法。
BCRYPT_HMAC_SHA3_512_ALG_HANDLE 使用 SHA3 512 位安全哈希算法处理基于哈希的消息身份验证代码的句柄。 标准:RFC 2014、FIPS 202。
Windows 11 版本 24H2: 开始支持此算法。
BCRYPT_KMAC128_ALG_HANDLE 基于CSHAKE128构建的 SHA3 派生 Keccak 消息身份验证代码(KMAC)的句柄。 标准:SP800-185。
Windows 11 版本 24H2: 开始支持此算法。
BCRYPT_KMAC256_ALG_HANDLE 基于CSHAKE256构建的 SHA3 派生 Keccak 消息身份验证代码(KMAC)的句柄。 标准:SP800-185。
Windows 11 版本 24H2: 开始支持此算法。

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 RC4 流密码算法的句柄。 标准:各种。

随机数生成器算法

不断 描述
BCRYPT_RNG_ALG_HANDLE 随机数生成器算法的句柄。注意 从 SP1 和 Windows Server 2008 的 Windows Vista 开始,随机数生成器基于 NIST SP 800-90 标准中指定的 AES 计数器模式。
Windows Vista: 随机数生成器基于 FIPS 186-2 标准中指定的基于哈希的随机数生成器。
Windows 8: RNG 算法支持 FIPS 186-3。 小于或等于 1024 位的键遵循 FIPS 186-2,密钥大于 1024 到 FIPS 186-3。
BCRYPT_RNG_FIPS186_DSA_ALG_HANDLE 适用于 DSA(数字签名算法)的随机数生成器算法的句柄。 标准:FIPS 186-2。

密钥派生函数 (KDF) 算法

不断 描述
BCRYPT_CAPI_KDF_ALG_HANDLE 加密 API (CAPI) 密钥派生函数算法的句柄。 由 BCryptKeyDerivationNCryptKeyDerivation 函数使用。
BCRYPT_HKDF_ALG_HANDLE 基于 HMAC 的提取和扩展密钥派生函数的句柄。 由 BCryptKeyDerivationNCryptKeyDerivation 函数使用。
Windows 10: 开始支持此算法。
BCRYPT_PBKDF2_ALG_HANDLE 基于密码的密钥派生函数 2 (PBKDF2) 算法的句柄。 由 BCryptKeyDerivationNCryptKeyDerivation 函数使用。
BCRYPT_SP800108_CTR_HMAC_ALG_HANDLE 计数器模式基于哈希的消息身份验证代码 (HMAC) 密钥派生函数算法的句柄。 由 BCryptKeyDerivationNCryptKeyDerivation 函数使用。
BCRYPT_SP80056A_CONCAT_ALG_HANDLE SP800-56A 密钥派生函数算法的句柄。 由 BCryptKeyDerivationNCryptKeyDerivation 函数使用。

密钥封装机制 (KEM) 算法

注释

本部分中的 ML-KEM 句柄与预发行产品相关,该产品在商业发布之前可能会进行大幅修改。 Microsoft对此处提供的信息不作任何明示或暗示的保证。 本节中所述的功能在 Windows 预览体验成员预览版的预发行版本中提供。

不断 描述
BCRYPT_MLKEM_ALG_HANDLE 模块Lattice-Based 密钥封装机制(ML-KEM)算法的句柄。 标准: FIPS 203

非对称算法

不断 描述
BCRYPT_DH_ALG_HANDLE Diffie-Hellman 密钥交换算法的句柄。 标准:PKCS #3。
BCRYPT_DSA_ALG_HANDLE 数字签名算法(DSA)数字签名算法的句柄。 标准:FIPS 186-2。
注意: 从 Windows 8 开始,此算法支持 FIPS 186-3。 小于或等于 1024 位的键遵循 FIPS 186-2,密钥大于 1024 到 FIPS 186-3。
BCRYPT_ECDH_ALG_HANDLE 泛型质椭圆曲线的句柄 Diffie-Hellman 密钥交换算法。 标准:SP800-56A。
BCRYPT_ECDSA_ALG_HANDLE 泛型质椭圆曲线数字签名算法的句柄。 标准:ANSI X9.62。
BCRYPT_ECDH_P256_ALG_HANDLE 256 位质椭圆曲线的句柄 Diffie-Hellman 密钥交换算法。 标准:SP800-56A。
BCRYPT_ECDH_P384_ALG_HANDLE 384 位质椭圆曲线的句柄 Diffie-Hellman 密钥交换算法。 标准:SP800-56A。
BCRYPT_ECDH_P521_ALG_HANDLE 521 位质椭圆曲线的句柄 Diffie-Hellman 密钥交换算法。 标准:SP800-56A。
BCRYPT_ECDSA_P256_ALG_HANDLE 256 位质椭圆曲线数字签名算法(FIPS 186-2)的句柄。 标准:FIPS 186-2、X9.62。
BCRYPT_ECDSA_P384_ALG_HANDLE 384 位质椭圆曲线数字签名算法(FIPS 186-2)的句柄。 标准:FIPS 186-2、X9.62。
BCRYPT_ECDSA_P521_ALG_HANDLE 521 位质椭圆曲线数字签名算法(FIPS 186-2)的句柄。 标准:FIPS 186-2、X9.62。
BCRYPT_RSA_ALG_HANDLE RSA 公钥算法的句柄。 标准:PKCS #1 v1.5 和 v2.0。
BCRYPT_RSA_SIGN_ALG_HANDLE RSA 签名算法的句柄。 目前不支持此算法。 可以使用 BCRYPT_RSA_ALG_HANDLE 算法来执行 RSA 签名作。 标准:PKCS #1 v1.5 和 v2.0。

阻止基于密码和基于密码的消息身份验证代码算法

不断 描述
BCRYPT_3DES_CBC_ALG_HANDLE 使用密码块链模式(CBC)的三重数据加密标准算法的句柄。 标准:SP800-67、SP800-38A。
BCRYPT_3DES_ECB_ALG_HANDLE 使用电子食谱模式的三重数据加密标准算法的句柄(ECB)。 标准:SP800-67、SP800-38A。
BCRYPT_3DES_CFB_ALG_HANDLE 使用密码反馈模式的三重数据加密标准算法的句柄(CFB)。 标准:SP800-67、SP800-38A。
BCRYPT_3DES_112_CBC_ALG_HANDLE 使用密码块链模式 (CBC) 的 112 位三重数据加密标准算法的句柄。 标准:SP800-67、SP800-38A。
BCRYPT_3DES_112_CBC_ALG_HANDLE 使用密码块链模式 (CBC) 的 112 位三重数据加密标准算法的句柄。 标准:SP800-67、SP800-38A。
BCRYPT_3DES_112_ECB_ALG_HANDLE 使用电子食谱模式(ECB)的 112 位三重数据加密标准算法的句柄。 标准:SP800-67、SP800-38A。
BCRYPT_3DES_112_CFB_ALG_HANDLE 使用密码反馈模式 (CFB) 的 112 位三重数据加密标准算法的句柄。 标准:SP800-67、SP800-38A。
BCRYPT_AES_CMAC_ALG_HANDLE 高级加密标准 (AES) 基于密码的消息身份验证代码 (CMAC) 算法的句柄。 标准:SP800-38B。
BCRYPT_AES_CBC_ALG_HANDLE 使用密码块链模式(CBC)的高级加密标准(AES)算法的句柄。 标准:FIPS 197。
BCRYPT_AES_ECB_ALG_HANDLE 使用电子食谱模式(ECB)的高级加密标准(AES)算法的句柄。 标准:FIPS 197。
BCRYPT_AES_CFB_ALG_HANDLE 使用密码反馈模式(CFB)的高级加密标准 (AES) 算法的句柄。 标准:FIPS 197。
BCRYPT_AES_CCM_ALG_HANDLE 将计数器与 CBC-MAC 模式(CCM)配合使用的高级加密标准 (AES) 算法的句柄。 标准:FIPS 197。
BCRYPT_AES_GCM_ALG_HANDLE 使用 Galois 计数器模式 (GCM) 的高级加密标准 (AES) 算法的句柄。 标准:FIPS 197。
BCRYPT_DES_CBC_ALG_HANDLE 使用密码块链模式(GCM)的数据加密标准(DES)算法的句柄。 标准:FIPS 46-3、FIPS 81。
BCRYPT_DES_ECB_ALG_HANDLE 使用电子食谱模式(ECB)的数据加密标准(DES)算法的句柄。 标准:FIPS 46-3、FIPS 81。
BCRYPT_DES_CFB_ALG_HANDLE 使用密码反馈模式(CFB)的数据加密标准(DES)算法的句柄。 标准:FIPS 46-3、FIPS 81。
BCRYPT_AES_CMAC_ALG_HANDLE 高级加密标准(AES)基于密码的消息身份验证代码(CMAC)对称加密算法的句柄。 标准:SP 800-38B。
BCRYPT_AES_GMAC_ALG_HANDLE 高级加密标准 (AES) Galois 消息身份验证代码 (GMAC) 对称加密算法的句柄。 标准:SP800-38D。
BCRYPT_RC4_ALG_HANDLE RC4 对称加密算法的句柄。 标准:各种。

言论

从 Windows 10 开始,CNG 为许多算法提供预定义的算法句柄。 在任何需要算法句柄的情况下,都可以使用这些句柄。 但是,当算法句柄共享且无法修改时,对 BCryptSetProperty 的任何调用都会失败。 此外,这些句柄不能在 IRQL=DISPATCH 内核模式下使用。

BCryptOpenAlgorithmProvider

NCryptCreatePersistedKey