從 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 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) 金鑰衍生函式演算法的句柄。 由 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 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-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 |
使用加密區塊鏈結模式的 112 位三重數據加密標準演算法句柄(CBC)。 | SP 800-67、 SP 800-38A |
|
BCRYPT_3DES_112_ECB_ALG_HANDLE 0x00000181 |
使用電子密碼本模式 (ECB) 的 112 位三重資料加密標準演算法的控制碼。 | SP 800-67、 SP 800-38A |
|
BCRYPT_3DES_112_CFB_ALG_HANDLE 0x00000191 |
使用加密回饋模式的112位三重數據加密標準演算法句柄(CFB)。 | 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 。