

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

# 验证身份验证请求 (ARQC) 密码
<a name="data-operations.verifyauthrequestcryptogram"></a>

 验证身份验证请求密码 API 用于验证 [ARQC](terminology.md#terms.arqc)。ARQC的生成超出了 AWS 支付密码学的范围，通常在交易授权期间使用EMV芯片卡（或数字等效物，例如移动钱包）执行。ARQC 对于每笔交易都是唯一的，旨在以加密方式显示卡的有效性并确保交易数据与当前（预期）交易完全匹配。

AWS 支付密码学为验证ARQC和生成可选的ARPC值提供了多种选项，包括 [EMV 4.4 Book 2](https://www.emvco.com/specifications/?post_id=80377) 中定义的值以及Visa和Mastercard使用的其他方案。有关所有可用选项的完整列表，请参阅 [API 指南](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_VerifyCardValidationData.html)中的 VerifyCardValidationData 部分。

ARQC 密码通常需要以下输入（尽管这可能因实现而异）：
+ [PAN](terminology.md#terms.pan)-在 PrimaryAccountNumber 字段中指定
+ [PAN 序列号 (PSN)](terminology.md#terms.psn)-在字段中指 PanSequenceNumber 定
+ 密钥派生方法，例如通用会话密钥 (CSK)-在 SessionKeyDerivationAttributes
+ 主密钥派生模式（例如 EMV 选项 A）-在 MajorKeyDerivationMode
+ 交易数据-在 TransactionData 字段中指定的各种交易、终端和银行卡数据的字符串，例如金额和日期
+ [颁发者主密](terminology.md#terms.imk)钥-用于派生用于保护个人交易并在字段中指定的密码 (AC) 密钥的主密钥 KeyIdentifier 

**Topics**
+ [建立交易数据](#w2aac15c25c13)
+ [交易数据填充](#w2aac15c25c15)
+ [示例](#w2aac15c25c17)

## 建立交易数据
<a name="w2aac15c25c13"></a>

交易数据字段的确切内容（和顺序）因实现和网络方案而异，但最低推荐字段（和串联顺序）在 [EMV 4.4 Book 2 第 8.1.1 节](https://www.emvco.com/specifications/?post_id=80377) ——数据选择中定义。如果前三个字段是金额 (17.00)、其他金额 (0.00) 和购买国家，则交易数据将按以下方式开始：
+ 000000001700 - 金额 - 12 位隐含两位小数
+ 000000000000 - 其他金额 - 12 位隐含两位小数
+ 0124 - 四位数国家代码 
+  输出（部分）交易数据 - 0000000017000000000000000124 

## 交易数据填充
<a name="w2aac15c25c15"></a>

在将交易数据发送到服务之前，应先填充交易数据。大多数方案使用 ISO 9797 方法 2 填充，其中十六进制字符串后面加上十六进制 80，然后加上 00，直到该字段是加密块大小的倍数；TDES 为 8 字节或 16 个字符，AES 为 16 字节或 32 个字符。替代方案（方法 1）并不常见，但仅使用 00 作为填充字符。

### ISO 9797 方法 1 填充
<a name="w2aac15c25c15b5"></a>

 未填充：00000000170000000000000008400080008000084016051700000000093800000B03011203（74 个字符或 37 个字节） 

 填充：00000000170000000000000008400080008000084016051700000000093800000B03011203**000000**（80 个字符或 40 个字节） 

### ISO 9797 方法 2 填充
<a name="w2aac15c25c15b7"></a>

 未填充：00000000170000000000000008400080008000084016051700000000093800000B1F220103000000（80 个字符或 40 个字节） 

 填充：00000000170000000000000008400080008000084016051700000000093800000B1F220103000000**8000000000000000**（88 个字符或 44 个字节） 

## 示例
<a name="w2aac15c25c17"></a>

### 签证 CVN10
<a name="w2aac15c25c17b3"></a>

**Example**  
在此示例中，我们将验证使用Visa生成的ARQC。 CVN10  
如果 AWS 支付密码学能够验证 ARQC，则会返回 http/200。如果 ARCQ（授权请求密码）未经过验证，它将返回 http/400 响应。  

```
$ aws payment-cryptography-data verify-auth-request-cryptogram --auth-request-cryptogram D791093C8A921769 \
--key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/pw3s6nl62t5ushfk \
--major-key-derivation-mode EMV_OPTION_A \ 
--transaction-data 00000000170000000000000008400080008000084016051700000000093800000B03011203000000 \
--session-key-derivation-attributes='{"Visa":{"PanSequenceNumber":"01" \ 
,"PrimaryAccountNumber":"9137631040001422"}}'
```

```
{
  "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/pw3s6nl62t5ushfk",
  "KeyCheckValue": "08D7B4"
}
```

### 签证 CVN18 和签证 CVN22
<a name="w2aac15c25c17b5"></a>

**Example**  
在此示例中，我们将验证使用Vis CVN18 a或生成的ARQC。 CVN22 CVN18 和之间的加密操作相同， CVN22 但交易数据中包含的数据有所不同。相比之下 CVN10，即使输入相同，也会生成完全不同的密码。  
如果 AWS 支付密码学能够验证 ARQC，则会返回 http/200。如果 ARCQ 未经过验证，它将返回 http/400。  

```
$ aws payment-cryptography-data verify-auth-request-cryptogram \ 
--auth-request-cryptogram 61EDCC708B4C97B4
--key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/pw3s6nl62t5ushfk \ 
--major-key-derivation-mode EMV_OPTION_A 
--transaction-data 00000000170000000000000008400080008000084016051700000000093800000B1F22010300000000000 \
00000000000000000000000000000000000000000008000000000000000
--session-key-derivation-attributes='{"EmvCommon":{"ApplicationTransactionCounter":"000B", \
"PanSequenceNumber":"01","PrimaryAccountNumber":"9137631040001422"}}'
```

```
{
  "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/pw3s6nl62t5ushfk",
  "KeyCheckValue": "08D7B4"
}
```