

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 适用于客户端 SDK 3 的客户 AWS CloudHSM 端 SDK 3 支持的机制
<a name="java-lib-supported"></a>

本主题提供有关 AWS CloudHSM 客户端 SDK 3 支持的 JCE 提供程序的机制的信息。有关支持的 Java 密码学架构 (JCA) 接口和引擎类的信息 AWS CloudHSM，请参阅以下主题。

**Topics**
+ [支持的密钥](#java-keys)
+ [支持的密码](#java-ciphers)
+ [支持的摘要](#java-digests)
+ [支持 HMAC 散列消息认证码算法](#java-mac)
+ [支持的 sign/verify 机制](#java-sign-verify)
+ [机制注释](#w2aac25c23c25c11c17)

## 支持的密钥
<a name="java-keys"></a>

Java AWS CloudHSM 软件库允许您生成以下密钥类型。
+ AES – 128、192 和 256 位 AES 密钥。
+ DESede — 92 位 3DES 密钥。有关即将发生的更改，请参阅下面的注释 [1](#java-keys-note-1)。
+ NIST 曲线 secp256r1 (P-256)、secp384r1 (P-384) 和 secp256k1（区块链）的 ECC 密钥对。
+ RSA 2048 位到 4096 位 RSA 密钥，增量为 256 位。

除了标准参数以外，我们对于生成的每个密钥还支持以下参数。
+ **Label**：可用于搜索密钥的密钥标签。
+ **isExtractable**：指示密钥是否可从 HSM 中导出。
+ **isPersistent**：指示在当前会话结束时密钥是否保留在 HSM 上。

**注意**  
 利用 Java 库版本 3.1，可以更详细地指定参数。有关更多信息，请参阅[支持的 Java 属性](java-lib-attributes.md)。

## 支持的密码
<a name="java-ciphers"></a>

Java AWS CloudHSM 软件库支持以下算法、模式和填充组合。


| 算法 | Mode | Padding | 注意 | 
| --- | --- | --- | --- | 
| AES | CBC |  `AES/CBC/NoPadding` `AES/CBC/PKCS5Padding`  | 实施 `Cipher.ENCRYPT_MODE` 和 `Cipher.DECRYPT_MODE`。  | 
| AES | ECB |  `AES/ECB/NoPadding` `AES/ECB/PKCS5Padding`  | 实施 Cipher.ENCRYPT\$1MODE 和 Cipher.DECRYPT\$1MODE。使用转换 AES。 | 
| AES | CTR |  `AES/CTR/NoPadding`  |  实施 `Cipher.ENCRYPT_MODE` 和 `Cipher.DECRYPT_MODE`。  | 
| AES | GCM | AES/GCM/NoPadding | 实施 `Cipher.ENCRYPT_MODE` 和 `Cipher.DECRYPT_MODE`，以及 `Cipher.WRAP_MODE` 和 `Cipher.UNWRAP_MODE`。执行 AES-GCM 加密时，HSM 会忽略请求中的初始化向量 (IV) 并使用其生成的 IV。当该操作完成时，您必须调用 `Cipher.getIV()` 以获取 IV。 | 
| AESWrap | ECB |  `AESWrap/ECB/ZeroPadding` `AESWrap/ECB/NoPadding` `AESWrap/ECB/PKCS5Padding`  |  实施 `Cipher.WRAP_MODE` 和 `Cipher.UNWRAP_MODE`。使用转换 AES。  | 
| DESede （三重 DES） | CBC |  `DESede/CBC/NoPadding` `DESede/CBC/PKCS5Padding`  |  实施 `Cipher.ENCRYPT_MODE` 和 `Cipher.DECRYPT_MODE`。 密钥生成程序接受 168 或 192 位的大小。但是，在内部，所有 DESede 密钥都是 192 位。 有关即将发生的更改，请参阅下面的注释 [1](#java-keys-note-1)。  | 
| DESede （三重 DES） | ECB | `DESede/ECB/NoPadding``DESede/ECB/PKCS5Padding` | 实施 `Cipher.ENCRYPT_MODE` 和 `Cipher.DECRYPT_MODE`。 密钥生成程序接受 168 或 192 位的大小。但是，在内部，所有 DESede 密钥都是 192 位。 有关即将发生的更改，请参阅下面的注释 [1](#java-keys-note-1)。  | 
| RSA | ECB | `RSA/ECB/NoPadding``RSA/ECB/PKCS1Padding` | 实施 `Cipher.ENCRYPT_MODE` 和 `Cipher.DECRYPT_MODE`。 有关即将发生的更改，请参阅下面的注释 [1](#java-keys-note-1)。 | 
| RSA | ECB | `RSA/ECB/OAEPPadding` `RSA/ECB/OAEPWithSHA-1ANDMGF1Padding` `RSA/ECB/OAEPWithSHA-224ANDMGF1Padding` `RSA/ECB/OAEPWithSHA-256ANDMGF1Padding` `RSA/ECB/OAEPWithSHA-384ANDMGF1Padding` `RSA/ECB/OAEPWithSHA-512ANDMGF1Padding`  |  实施 `Cipher.ENCRYPT_MODE`、`Cipher.DECRYPT_MODE`、`Cipher.WRAP_MODE` 和 `Cipher.UNWRAP_MODE`。 `OAEPPadding` 是采用 `SHA-1` 填充类型的 `OAEP`。  | 
| RSAAESWrap | ECB | OAEPPADDING | 实施 Cipher.WRAP\$1Mode 和 Cipher.UNWRAP\$1MODE。 | 

## 支持的摘要
<a name="java-digests"></a>

Java AWS CloudHSM 软件库支持以下消息摘要。
+ `SHA-1`
+ `SHA-224`
+ `SHA-256`
+ `SHA-384`
+ `SHA-512`

**注意**  
长度小于 16 KB 的数据将在 HSM 上进行哈希处理，而较大的数据将在软件中本地进行哈希处理。

## 支持 HMAC 散列消息认证码算法
<a name="java-mac"></a>

Java AWS CloudHSM 软件库支持以下 HMAC 算法。
+ `HmacSHA1`
+ `HmacSHA224`
+ `HmacSHA256`
+ `HmacSHA384`
+ `HmacSHA512`

## 支持的 sign/verify 机制
<a name="java-sign-verify"></a>

Java AWS CloudHSM 软件库支持以下类型的签名和验证。

**RSA 签名类型**
+ `NONEwithRSA`
+ `SHA1withRSA`
+ `SHA224withRSA`
+ `SHA256withRSA`
+ `SHA384withRSA`
+ `SHA512withRSA`
+ `SHA1withRSA/PSS`
+ `SHA224withRSA/PSS`
+ `SHA256withRSA/PSS`
+ `SHA384withRSA/PSS`
+ `SHA512withRSA/PSS`

**ECDSA 签名类型**
+ `NONEwithECDSA`
+ `SHA1withECDSA`
+ `SHA224withECDSA`
+ `SHA256withECDSA`
+ `SHA384withECDSA`
+ `SHA512withECDSA`

## 机制注释
<a name="w2aac25c23c25c11c17"></a>

[1] 根据 NIST 指导，2023 年以后处于 FIPS 模式的集群不允许这样做。对于处于非 FIPS 模式的集群，2023 年之后仍然允许。有关详细信息，请参阅[FIPS 140 合规：2024 年机制弃用](compliance-dep-notif.md#compliance-dep-notif-1)。