本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
產生或驗證指定卡片的 CVV
CVV 或 CVV1 是傳統上內嵌在卡片磁性條紋中的值。它與 CVV2 不同 (持卡人可見並用於線上購買)。
第一步是建立金鑰。在本教學課程中,您會建立 CVK 雙長度 3DES (2KEY TDES) 金鑰。
注意
CVV、CVV2 和 iCVV 全都使用類似的演算法,但會改變輸入資料。所有 都使用相同的金鑰類型 TR31_C0_CARD_VERIFICATION_KEY,但建議針對每個用途使用不同的金鑰。這些可以使用別名和/或標籤來區分,如以下範例所示。
建立金鑰
$
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::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::key/r52o3wbqxyf6qlqr。在下一個步驟中,您需要用到。
產生 CVV
在此範例中,我們將為指定的 PAN 產生 CVV,其輸入為 PAN
,服務碼 (如 ISO/IEC 7813 所定義) 為 121,卡片過期日期。
如需所有可用的參數,請參閱 API 參考指南中的 CardVerificationValue1。
$
aws payment-cryptography-data generate-card-validation-data --key-identifier arn:aws:payment-cryptography:us-east-2::key/r52o3wbqxyf6qlqr --primary-account-number=171234567890123 --generation-attributes CardVerificationValue1='{CardExpiryDate=1127,ServiceCode=121}'
{ "KeyArn": "arn:aws:payment-cryptography:us-east-2::key/r52o3wbqxyf6qlqr", "KeyCheckValue": "DE89F9", "ValidationData": "801" }
驗證 CVV
在此範例中,我們將使用 CVKPAN
、、服務代碼 121、卡片過期日期和交易期間提供的 CVV 輸入來驗證指定 PAN 的 CVV。
如需所有可用的參數,請參閱 API 參考指南中的 CardVerificationValue1。
注意
CVV 不是使用者輸入的值 (例如 CVV2),但通常內嵌在磁條上。應考量是否應一律在提供時驗證。
$
aws payment-cryptography-data verify-card-validation-data --key-identifier arn:aws:payment-cryptography:us-east-2::key/r52o3wbqxyf6qlqr --primary-account-number=171234567890123 --verification-attributes CardVerificationValue1='{CardExpiryDate=1127,ServiceCode=121} --validation-data 801
{ "KeyArn": "arn:aws:payment-cryptography:us-east-2::key/r52o3wbqxyf6qlqr", "KeyCheckValue": "DE89F9", "ValidationData": "801" }