语言支持的密钥类型

下表列出了每种基元支持的密钥类型(按语言分类)。

AEAD

实现 Java C++
(BoringSSL)
C++
(OpenSSL)
Objective-C Go Python
AES-GCM 是 是 是 是 是 是
AES-GCM-SIV 是1 是 否 否 是 是
AES-CTR-HMAC 是 是 是 是 是 是
AES-EAX 是 是 是 是 否 是
KMS 信封 是 是 是 否 是 是
CHACHA20-POLY1305 是 否 否 否 是 否
XCHACHA20-POLY1305 是 是 否 是 是 是

流式 AEAD

实现 Java C++
(BoringSSL)
C++
(OpenSSL)
Objective-C Go Python
AES-GCM-HKDF-STREAMING 是 是 是 否 是 是
AES-CTR-HMAC-STREAMING 是 是 是 否 是 是

确定性 AEAD

实现 Java C++
(BoringSSL)
C++
(OpenSSL)
Objective-C Go Python
AES-SIV 是 是 是 是 是 是

MAC

实现 Java C++
(BoringSSL)
C++
(OpenSSL)
Objective-C Go Python
HMAC-SHA2 是 是 是 是 是 是
AES-CMAC 是 是 是 是 是 是

PRF

实现 Java C++
(BoringSSL)
C++
(OpenSSL)
Objective-C Go Python
HKDF-SHA2 是 是 是 否 是 是
HMAC-SHA2 是 是 是 否 是 是
AES-CMAC 是 是 是 否 是 是

签名

实现 Java C++
(BoringSSL)
C++
(OpenSSL)
Objective-C Go Python
基于 NIST 曲线的 ECDSA 是 是 是 是 是 是
Ed25519 是 是 是 是 是 是
RSA-SSA-PKCS1 是 是 是 是 是 是
RSA-SSA-PSS 是 是 是 是 是 是
ML-DSA 是2 是 否 否 是 是
ML-DSA(外部 Mu)3 否 是 否 否 是 是
SLH-DSA (SHA2-128S) 是4 是 否 否 是 是

混合加密

实现 Java C++
(BoringSSL)
C++
(OpenSSL)
Objective-C Go Python
HPKE 是 是 否 否 是 是
使用 AEAD 和 HKDF 的 ECIES 是5 是 是 是 是 是
使用 DeterministicAEAD 和 HKDF 的 ECIES 是6 是 是 否 是 是

JWT MAC

实现 Java C++
(BoringSSL)
C++
(OpenSSL)
Objective-C Go Python
JWT HMAC-SHA2 是 是 是 否 是 是

JWT 签名

实现 Java C++
(BoringSSL)
C++
(OpenSSL)
Objective-C Go Python
基于 NIST 曲线的 JWT ECDSA 是 是 是 否 是 是
JWT RSA-SSA-PKCS1 是 是 是 否 是 是
JWT RSA-SSA-PSS 是 是 是 否 是 是

  1. AES-GCM-SIV 需要将 Conscrypt 安装为 JCE 安全提供程序。 ↩

  2. ML-DSA 要求将 Conscrypt 安装为 JCE 安全提供程序。 ↩

  3. 外部 Mu 模式下的 ML-DSA 通过 Prehash 和 SignPrehash 原语使用,并且需要具有 ID 要求的变体:TINK 或 NO_PREFIX_WITH_PREHASH_ID。 ↩

  4. SLH-DSA 要求将 Conscrypt 安装为 JCE 安全提供程序。 ↩

  5. ECIES 需要 NIST 曲线。 ↩

  6. ECIES 需要 NIST 曲线。 ↩