本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
生成或验证给定卡片的 CVV
CVV 或 CVV1 是传统上嵌入在卡片磁条中的值。它与 CVV2 (持卡人可见,也可用于在线购物)不同。
第一步是创建一个密钥。在本教程中,您将创建一个 CVK 双长度 3DES (2KEY TDES) 密钥。
注意
CVV CVV2 和 iCvV 都使用相似甚至相同的算法,但输入数据会有所不同。所有密钥都使用相同的密钥类型 TR31 _C0_CARD_VERIFICATION_KEY,但建议为每种目的使用不同的密钥。可以使用别名 and/or 标签来区分它们,如下例所示。
创建密钥
$
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/r52o3wbqx yf6qlqr。您需要在下一步中执行该操作。
生成 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
在此示例中,我们将使用输入 CV K、服务代码 121 PAN
、卡到期日期和交易期间提供的 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" }