

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 產生或驗證指定卡片的 CVV
<a name="use-cases-issuers.generalfunctions.cvv"></a>

[CVV](terminology.md#terms.cvv) 或 CVV1 是傳統上內嵌在卡片磁性條紋中的值。它與 CVV2 不同 （持卡人可見並用於線上購買）。

第一步是建立金鑰。在本教學課程中，您會建立 [CVK](terminology.md#terms.cvk) 雙長度 3DES (2KEY TDES) 金鑰。

**注意**  
CVV、CVV2 和 iCVV 全都使用類似的演算法，但會改變輸入資料。所有 都使用相同的金鑰類型 TR31\$1C0\$1CARD\$1VERIFICATION\$1KEY，但建議針對每個用途使用不同的金鑰。這些可以使用別名和/或標籤來區分，如以下範例所示。

## 建立金鑰
<a name="use-cases-issuers.generalfunctions.cvv.setup"></a>

```
$ aws payment-cryptography create-key --exportable --key-attributes KeyAlgorithm=TDES_2KEY,KeyUsage=TR31_C0_CARD_VERIFICATION_KEY,KeyClass=SYMMETRIC_KEY,KeyModesOfUse='{Generate=true,Verify=true}' --tags='[{"Key":"KEY_PURPOSE","Value":"CVV"},{"Key":"CARD_BIN","Value":"12345678"}]'
```

回應會回傳請求參數，包括後續呼叫的 ARN 以及金鑰檢查值 (KCV)。

```
{
            "Key": {
                "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/r52o3wbqxyf6qlqr",
                "KeyAttributes": {
                    "KeyUsage": "TR31_C0_CARD_VERIFICATION_KEY",
                    "KeyClass": "SYMMETRIC_KEY",
                    "KeyAlgorithm": "TDES_2KEY",
                    "KeyModesOfUse": {
                        "Encrypt": false,
                        "Decrypt": false,
                        "Wrap": false,
                        "Unwrap": false,
                        "Generate": true,
                        "Sign": false,
                        "Verify": true,
                        "DeriveKey": false,
                        "NoRestrictions": false
                    }
                },
                "KeyCheckValue": "DE89F9",
                "KeyCheckValueAlgorithm": "ANSI_X9_24",
                "Enabled": true,
                "Exportable": true,
                "KeyState": "CREATE_COMPLETE",
                "KeyOrigin": "AWS_PAYMENT_CRYPTOGRAPHY",
                "CreateTimestamp": "2023-06-05T06:41:46.648000-07:00",
                "UsageStartTimestamp": "2023-06-05T06:41:46.626000-07:00"
            }
        }
```

請記下代表金鑰`KeyArn`的 ，例如 *arn：aws：payment-cryptography：us-east-2：111122223333：key/r52o3wbqxyf6qlqr*。在下一個步驟中，您需要用到。

## 產生 CVV
<a name="use-cases-issuers.generalfunctions.cvv.generate"></a>

**Example**  
在此範例中，我們將為指定的 PAN 產生 [CVV](terminology.md#terms.cvv)，其輸入為 `PAN`，服務碼 （如 ISO/IEC 7813 所定義） 為 121，卡片過期日期。  
如需所有可用的參數，請參閱 API 參考指南中的 [CardVerificationValue1](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_CardVerificationValue1.html)。  

```
$ aws payment-cryptography-data generate-card-validation-data --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/r52o3wbqxyf6qlqr --primary-account-number=171234567890123 --generation-attributes CardVerificationValue1='{CardExpiryDate=1127,ServiceCode=121}'
```

```
                  {
                      "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/r52o3wbqxyf6qlqr",
                      "KeyCheckValue": "DE89F9",
                      "ValidationData": "801"
                  }
```

## 驗證 CVV
<a name="use-cases-issuers.generalfunctions.cvv.verify"></a>

**Example**  
在此範例中，我們將使用 [CVK](terminology.md#terms.cvv)`PAN`、、服務代碼 121、卡片過期日期和交易期間提供的 CVV 輸入來驗證指定 PAN 的 CVV。  
如需所有可用的參數，請參閱 API 參考指南中的 [CardVerificationValue1](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_CardVerificationValue1.html)。  
CVV 不是使用者輸入的值 （例如 CVV2)，但通常內嵌在磁條上。應考慮是否應一律在提供時驗證。

```
$ aws payment-cryptography-data verify-card-validation-data --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/r52o3wbqxyf6qlqr --primary-account-number=171234567890123 --verification-attributes CardVerificationValue1='{CardExpiryDate=1127,ServiceCode=121} --validation-data 801
```

```
{
                    "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/r52o3wbqxyf6qlqr",
                    "KeyCheckValue": "DE89F9",
                    "ValidationData": "801"
}
```