共用方式為


CNG 演算法虛擬句柄

從 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-4FIPS 198-1
BCRYPT_HMAC_SHA256_ALG_HANDLE
0x000000B1
使用256位安全哈希演算法之哈希式訊息驗證碼的句柄。 FIPS 180-4FIPS 198-1
BCRYPT_HMAC_SHA384_ALG_HANDLE
0x000000C1
使用384位安全哈希演算法之哈希式訊息驗證碼的句柄。 FIPS 180-4FIPS 198-1
BCRYPT_HMAC_SHA512_ALG_HANDLE
0x000000D1
使用512位安全哈希演算法之哈希式訊息驗證碼的句柄。 FIPS 180-4FIPS 198-1
BCRYPT_HMAC_MD2_ALG_HANDLE
0x00000121
使用 MD2 哈希演算法之哈希式訊息驗證程式代碼的句柄。 RFC 1319RFC 2104
BCRYPT_HMAC_MD4_ALG_HANDLE
0x00000131
使用 MD4 哈希演算法之哈希式訊息驗證程式代碼的句柄。 RFC 1320RFC 2104
BCRYPT_HMAC_MD5_ALG_HANDLE
0x00000091
使用 MD4 哈希演算法之哈希式訊息驗證程式代碼的句柄。 RFC 1321RFC 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 202FIPS 198-1
BCRYPT_HMAC_SHA3_384_ALG_HANDLE
0x000003F1
使用SHA3 384位安全哈希演算法的哈希式訊息驗證程式代碼句柄。 FIPS 202FIPS 198-1
BCRYPT_HMAC_SHA3_512_ALG_HANDLE
0x00000401
使用SHA3 512位安全哈希演算法的哈希式訊息驗證程式代碼句柄。 FIPS 202FIPS 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 Insider Preview 的發行前版本。

不斷 描述 標準
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) 金鑰衍生函式演算法的句柄。 由 BCryptKeyDerivationNCryptKeyDerivation 函式使用。
BCRYPT_PBKDF2_ALG_HANDLE
0x00000331
密碼型金鑰衍生函式 2 (PBKDF2) 演算法的句柄。 由 BCryptKeyDerivationNCryptKeyDerivation 函式使用。
BCRYPT_SP800108_CTR_HMAC_ALG_HANDLE
0x00000341
計數器模式哈希式訊息驗證程序代碼 (HMAC) 金鑰衍生函式演算法的句柄。 由 BCryptKeyDerivationNCryptKeyDerivation 函式使用。
BCRYPT_SP80056A_CONCAT_ALG_HANDLE
0x00000351
SP800-56A 密鑰衍生函式演算法的句柄。 由 BCryptKeyDerivationNCryptKeyDerivation 函式使用。
BCRYPT_HKDF_ALG_HANDLE
0x00000391
HMAC 型擷取和展開密鑰衍生函式的句柄。 由 BCryptKeyDerivationNCryptKeyDerivation 函式使用。

金鑰封裝機制 (KEM) 演算法

備註

本節中的 ML-KEM 句柄與發行前版本產品有關,在發行前可能會大幅修改。 Microsoft 對於此處提供的資訊,不做任何明確或隱含的保證。 本節所述的功能適用於 Windows Insider Preview 的發行前版本。

不斷 描述 標準
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-67SP 800-38A
BCRYPT_3DES_ECB_ALG_HANDLE
0x00000151
使用電子密碼本模式 (ECB) 的三重資料加密標準演算法的句柄。 SP 800-67SP 800-38A
BCRYPT_3DES_CFB_ALG_HANDLE
0x00000161
使用加密回饋模式的三重數據加密標準演算法句柄(CFB)。 SP 800-67SP 800-38A
BCRYPT_3DES_112_CBC_ALG_HANDLE
0x00000171
使用加密區塊鏈結模式的 112 位三重數據加密標準演算法句柄(CBC)。 SP 800-67SP 800-38A
BCRYPT_3DES_112_ECB_ALG_HANDLE
0x00000181
使用電子密碼本模式 (ECB) 的 112 位三重資料加密標準演算法的控制碼。 SP 800-67SP 800-38A
BCRYPT_3DES_112_CFB_ALG_HANDLE
0x00000191
使用加密回饋模式的112位三重數據加密標準演算法句柄(CFB)。 SP 800-67SP 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-3FIPS 81
BCRYPT_DES_ECB_ALG_HANDLE
0x00000201
使用電子密碼本模式 (ECB) 的資料加密標準 (DES) 演算法的控制碼。 FIPS 46-3FIPS 81
BCRYPT_DES_CFB_ALG_HANDLE
0x00000211
使用加密回饋模式 (CFB) 的數據加密標準 (DES) 演算法句柄。 FIPS 46-3FIPS 81

言論

您可以在任何需要演算法句柄的情況下使用這些句柄。 不過,任何對 BCryptSetProperty 的呼叫都會失敗,因為演算法句柄已共用且無法修改。 此外,這些句柄無法在核心模式中使用 IRQL=DISPATCH