

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

# 加密数据
<a name="encrypt-data"></a>

 [该 `Encrypt Data` API 用于使用对称和非对称数据加密密钥以及 [DUKPT](terminology.md#terms.dukpt) 和 EMV 派生的密钥对数据进行加密。](terminology.md#terms.emv)支持各种算法和变体，包括 `TDES`、`RSA` 和 `AES`。

主要输入是用于加密数据的加密密钥、要加密的 HexBinary 格式的纯文本数据以及诸如 TDES 之类的分组密码的初始化向量和模式等加密属性。纯文本数据必须是 8 字节`TDES`、16 字节`AES`和密钥长度的倍数（如果是）。`RSA`如果输入数据不符合这些要求，则应填充对称密钥输入（TDES、AES、DUKPT、EMV）。下表显示了每种密钥类型的最大明文长度以及您在中`EncryptionAttributes`为 RSA 密钥定义的填充类型。


| 填充类型 | RSA\$12048 | RSA\$13072 | RSA\$14096 | 
| --- | --- | --- | --- | 
| OAEP SHA1 | 428 | 684 | 940 | 
| OAEP SHA256 | 380 | 636 | 892 | 
| OAEP SHA512 | 252 | 508 | 764 | 
| PKCS1 | 488 | 744 | 1000 | 
| None | 488 | 744 | 1000 | 

主要输出包括十六进制格式加密文字形式的加密数据以及加密密钥的校验和值。有关所有可用选项的详细信息，请查阅[加密](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_EncryptData.html)的 API 指南。

**Topics**
+ [使用 AES 对称密钥加密数据](#w2aac15c16c11c13)
+ [使用 DUKPT 密钥加密数据](#w2aac15c16c11c15)
+ [使用 EMV 派生的对称密钥加密数据](#w2aac15c16c11c17)
+ [使用 RSA 密钥加密会话数据](#crypto-ops.encrypt-rsa)

## 使用 AES 对称密钥加密数据
<a name="w2aac15c16c11c13"></a>

**注意**  
 所有示例都假设相关密钥已经存在。可以使用该操作创建密钥，也可以使用该[CreateKey](create-keys.md)操作导入密钥。[ImportKey](keys-import.md)

**Example**  
 在此示例中，我们将使用使用操作创建或使用[CreateKey](create-keys.md)操作导入的对称密钥对纯文本数据进行加密。[ImportKey](keys-import.md)要执行此操作，密钥必须 KeyModesOfUse 设置为，`Encrypt`并 KeyUsage 设置为`TR31_D0_SYMMETRIC_DATA_ENCRYPTION_KEY`。有关更多选项，请参阅[加密操作密钥](crypto-ops-validkeys-ops.md)。  

```
$ aws payment-cryptography-data encrypt-data --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/tqv5yij6wtxx64pi --plain-text 31323334313233343132333431323334 --encryption-attributes 'Symmetric={Mode=CBC}'
```

```
         
{
    "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/tqv5yij6wtxx64pi",
    "KeyCheckValue": "71D7AE",
    "CipherText": "33612AB9D6929C3A828EB6030082B2BD"
}
```

## 使用 DUKPT 密钥加密数据
<a name="w2aac15c16c11c15"></a>

**Example**  
 在此示例中，我们将使用 [DU](terminology.md#terms.dukpt) KPT 密钥对纯文本数据进行加密。 AWS 支付密码学支持`TDES`和 `AES` DUKPT 密钥。要执行此操作，密钥必须 KeyModesOfUse 设置为，`DeriveKey`并 KeyUsage 设置为`TR31_B0_BASE_DERIVATION_KEY`。有关更多选项，请参阅[加密操作密钥](crypto-ops-validkeys-ops.md)。  

```
$ aws payment-cryptography-data encrypt-data --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/tqv5yij6wtxx64pi --plain-text 31323334313233343132333431323334 --encryption-attributes 'Dukpt={KeySerialNumber=FFFF9876543210E00001}'
```

```
         
{
    "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/tqv5yij6wtxx64pi",
    "KeyCheckValue": "71D7AE",
    "CipherText": "33612AB9D6929C3A828EB6030082B2BD"
}
```

## 使用 EMV 派生的对称密钥加密数据
<a name="w2aac15c16c11c17"></a>

**Example**  
 在此示例中，我们将使用已创建的 EMV 派生的对称密钥对明文数据进行加密。你可以使用这样的命令将数据发送到 EMV 卡。要执行此操作，密钥必须 KeyModesOfUse 设置为，`Derive`且必须 KeyUsage 设置为`TR31_E1_EMV_MKEY_CONFIDENTIALITY`或`TR31_E6_EMV_MKEY_OTHER`。有关更多详细信息[，请参阅加密操作密钥](crypto-ops-validkeys-ops.md)。  

```
$ aws payment-cryptography-data encrypt-data --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/tqv5yij6wtxx64pi --plain-text 33612AB9D6929C3A828EB6030082B2BD --encryption-attributes 'Emv={MajorKeyDerivationMode=EMV_OPTION_A,PanSequenceNumber=27,PrimaryAccountNumber=1000000000000432,SessionDerivationData=02BB000000000000, InitializationVector=1500000000000999,Mode=CBC}'
```

```
{
    "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/tqv5yij6wtxx64pi",
    "KeyCheckValue": "71D7AE",
    "CipherText": "33612AB9D6929C3A828EB6030082B2BD"
}
```

## 使用 RSA 密钥加密会话数据
<a name="crypto-ops.encrypt-rsa"></a>

**Example**  
 在此示例中，我们将使用使用操作导入的 [RSA 公钥](terminology.md#terms.publickey)对纯文本数据进行加密。[ImportKey](keys-import.md)要执行此操作，密钥必须 KeyModesOfUse 设置为，`Encrypt`并 KeyUsage 设置为`TR31_D1_ASYMMETRIC_KEY_FOR_DATA_ENCRYPTION`。有关更多选项，请参阅[加密操作密钥](crypto-ops-validkeys-ops.md)。  
 对于 PKCS \$17 或其他目前不支持的填充方案，请在调用服务之前申请，并通过省略填充指示器 *'Asymmetric=\$1\$1'* 来选择无填充   

```
$ aws payment-cryptography-data encrypt-data --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/thfezpmsalcfwmsg --plain-text 31323334313233343132333431323334 --encryption-attributes 'Asymmetric={PaddingType=OAEP_SHA256}'
```

```
     
{
 "CipherText": "12DF6A2F64CC566D124900D68E8AFEAA794CA819876E258564D525001D00AC93047A83FB13 \ 
 E73F06329A100704FA484A15A49F06A7A2E55A241D276491AA91F6D2D8590C60CDE57A642BC64A897F4832A3930 \ 
 0FAEC7981102CA0F7370BFBF757F271EF0BB2516007AB111060A9633D1736A9158042D30C5AE11F8C5473EC70F067 \ 
 72590DEA1638E2B41FAE6FB1662258596072B13F8E2F62F5D9FAF92C12BB70F42F2ECDCF56AADF0E311D4118FE3591 \ 
 FB672998CCE9D00FFFE05D2CD154E3120C5443C8CF9131C7A6A6C05F5723B8F5C07A4003A5A6173E1B425E2B5E42AD \ 
 7A2966734309387C9938B029AFB20828ACFC6D00CD1539234A4A8D9B94CDD4F23A",
 "KeyArn": "arn:aws:payment-cryptography:us-east-1:111122223333:key/5dza7xqd6soanjtb",
 "KeyCheckValue": "FF9DE9CE"
}
```