

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

# 使用 KMU 加密和解密 AWS CloudHSM 文件
<a name="key_mgmt_util-aesWrapUnwrap"></a>

使用 AWS CloudHSM key\$1mgmt\$1util 中的**aesWrapUnwrap**命令来加密或解密磁盘上文件的内容。此命令可用于对加密密钥进行包装和解开包装，但您可对包含小于 4 KB (4096 字节) 数据的任何文件使用它。

**aesWrapUnwrap** 使用带 PKCS \$15 填充的 AES 密钥包装。它使用 HSM 上的 AES 密钥作为包装密钥或解开包装密钥。然后，它将结果写入到磁盘上的另一个文件中。

在运行任何 key\$1mgmt\$1util 命令之前，您必须[启动 key\$1mgmt\$1util](key_mgmt_util-setup.md#key_mgmt_util-start) 并以加密用户（CU）身份[登录](key_mgmt_util-log-in.md)到 HSM。

## 语法
<a name="aesWrapUnwrap-syntax"></a>

```
aesWrapUnwrap -h

aesWrapUnwrap -m <wrap-unwrap mode>
              -f <file-to-wrap-unwrap> 
              -w <wrapping-key-handle>               
              [-i <wrapping-IV>] 
              [-out <output-file>]
```

## 示例
<a name="aesWrapUnwrap-examples"></a>

这些示例演示如何使用 **aesWrapUnwrap** 加密和解密文件中的加密密钥。

**Example ：包装加密密钥**  
此命令使用 **aesWrapUnwrap** 包装三重 DES 对称密钥（[以明文形式从 HSM 导出](key_mgmt_util-exSymKey.md)至 `3DES.key` 文件）。您可以使用类似命令包装保存在文件中的任何密钥。  
此命令使用值为 `1` 的 `-m` 参数来指示包装模式。它使用 `-w` 参数指定 HSM 中的 AES 密钥 (密钥句柄 `6`) 作为包装密钥。它将生成的包装密钥写入到 `3DES.key.wrapped` 文件。  
输出显示，此命令已成功运行并且操作使用了默认 IV (首选设置)。  

```
 Command:  aesWrapUnwrap -f 3DES.key -w 6 -m 1 -out 3DES.key.wrapped

        Warning: IV (-i) is missing.
                 0xA6A6A6A6A6A6A6A6 is considered as default IV
result data:
49 49 E2 D0 11 C1 97 22
17 43 BD E3 4E F4 12 75
8D C1 34 CF 26 10 3A 8D
6D 0A 7B D5 D3 E8 4D C2
79 09 08 61 94 68 51 B7

result written to file 3DES.key.wrapped

        Cfm3WrapHostKey returned: 0x00 : HSM Return: SUCCESS
```

**Example ：将加密密钥解开包装**  
此示例演示如何使用 **aesWrapUnwrap** 将文件中的已包装（已加密）密钥解开包装（解密）。在将密钥导入到 HSM 中之前，您可能需要执行与此类似的操作。例如，如果您尝试使用[imSymKey](key_mgmt_util-imSymKey.md)命令导入加密密钥，则会返回错误，因为加密密钥的格式不符合该类型的纯文本密钥所需的格式。  
此命令将 `3DES.key.wrapped` 文件中的密钥解开包装并将明文写入到 `3DES.key.unwrapped` 文件。此命令使用值为 `0` 的 `-m` 参数指示解开包装模式。它使用 `-w` 参数指定 HSM 中的 AES 密钥 (密钥句柄 `6`) 作为包装密钥。它将生成的包装密钥写入到 `3DES.key.unwrapped` 文件。  

```
 Command:  aesWrapUnwrap -m 0 -f 3DES.key.wrapped -w 6 -out 3DES.key.unwrapped

        Warning: IV (-i) is missing.
                 0xA6A6A6A6A6A6A6A6 is considered as default IV
result data:
14 90 D7 AD D6 E4 F5 FA
A1 95 6F 24 89 79 F3 EE
37 21 E6 54 1F 3B 8D 62

result written to file 3DES.key.unwrapped

        Cfm3UnWrapHostKey returned: 0x00 : HSM Return: SUCCESS
```

## 参数
<a name="aesWrapUnwrap-params"></a>

**-h**  
显示该命令的帮助信息。  
是否必需：是

**-m**  
指定模式。要包装 (加密) 文件内容，键入 `1`；要将文件内容进行解开包装 (解密)，键入 `0`。  
是否必需：是

**-f**  
指定要包装的文件。输入一个包含小于 4 KB (4096 字节) 数据的文件。此操作可用于将加密密钥进行包装和解开包装。  
是否必需：是

**-w**  
指定包装密钥。在 HSM 上输入 AES 密钥的密钥句柄。此参数为必需参数。要查找密钥句柄，请使用 [findKey](key_mgmt_util-findKey.md) 命令。  
要创建包装密钥，[genSymKey](key_mgmt_util-genSymKey.md)请使用生成 AES 密钥（类型 31）。  
是否必需：是

**-i**  
指定算法的备用初始值 (IV)。除非您有需要备用值的特殊条件，否则请使用默认值。  
默认值：`0xA6A6A6A6A6A6A6A6`。默认值是在 [AES 密钥包装](https://tools.ietf.org/html/rfc3394)算法规范中定义的。  
必需：否

**-out**  
为包含已包装或已解开包装密钥的输出文件指定备用名称。本地目录中的默认名称为 `wrapped_key` (对于包装操作) 和 `unwrapped_key` (对于解开包装操作)。  
如果该文件存在，则 **aesWrapUnwrap** 将覆盖该文件而不发出警告。如果此命令失败，则 **aesWrapUnwrap** 将创建一个无内容的输出文件。  
默认名称：`wrapped_key` (对于包装)。`unwrapped_key` (对于解开包装)。  
必需：否

## 相关主题
<a name="aesWrapUnwrap-seealso"></a>
+ [exSymKey](key_mgmt_util-exSymKey.md)
+ [imSymKey](key_mgmt_util-imSymKey.md)
+ [unWrapKey](key_mgmt_util-unwrapKey.md)
+ [wrapKey](key_mgmt_util-wrapKey.md)