解密数据 - AWS 支付密码学

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

解密数据

该 Decrypt Data API 用于使用对称和非对称数据加密密钥以及 DUK PT 和 EMV 派生的密钥来解密数据。支持各种算法和变体,包括 TDESRSAAES

主要输入是用于解密数据的解密密钥、要解密的十六进制格式的加密文字数据以及解密属性,例如初始化向量、分组密码模式等。主要输出包括十六进制格式的明文解密数据以及解密密钥的校验和值。有关所有可用选项的详细信息,请查阅解密 API 指南。

使用 AES 对称密钥解密数据

在此示例中,我们将使用对称密钥解密密文数据。此示例显示了一个AES密钥,但TDES_3KEY也支持TDES_2KEY和。要执行此操作,密钥必须 KeyModesOfUse 设置为,Decrypt并 KeyUsage 设置为TR31_D0_SYMMETRIC_DATA_ENCRYPTION_KEY。有关更多选项,请参阅加密操作密钥

$ aws payment-cryptography-data decrypt-data --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/tqv5yij6wtxx64pi --cipher-text 33612AB9D6929C3A828EB6030082B2BD --decryption-attributes 'Symmetric={Mode=CBC}'
{ "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/tqv5yij6wtxx64pi", "KeyCheckValue": "71D7AE", "PlainText": "31323334313233343132333431323334" }

使用 DUKPT 密钥解密数据

注意

将解密数据与 DUKPT 一起用于 P2PE 交易,可能会将信用卡 PAN 和其他持卡人数据返回到您的应用程序,在确定其 PCI DSS 范围时需要考虑这些数据。

在此示例中,我们将使用使用操作创建或使用CreateKey操作导入的 DUKPT 密钥解密密文数据。ImportKey要执行此操作,密钥必须 KeyModesOfUse 设置为,DeriveKey并 KeyUsage 设置为TR31_B0_BASE_DERIVATION_KEY。有关更多选项,请参阅加密操作密钥。使用 DUKPT 时,对于 TDES 算法,加密文字数据长度必须是 16 字节的倍数。对于 AES 算法,加密文字数据长度必须是 32 字节的倍数。

$ aws payment-cryptography-data decrypt-data --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/tqv5yij6wtxx64pi --cipher-text 33612AB9D6929C3A828EB6030082B2BD --decryption-attributes 'Dukpt={KeySerialNumber=FFFF9876543210E00001}'
{ "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/tqv5yij6wtxx64pi", "KeyCheckValue": "71D7AE", "PlainText": "31323334313233343132333431323334" }

使用 EMV 派生的对称密钥解密数据

在此示例中,我们将使用 EMV 派生的对称密钥解密密文数据,该密钥是使用操作创建或使用操作导入CreateKey的。ImportKey要执行此操作,密钥必须 KeyModesOfUse 设置为,Derive且必须 KeyUsage 设置为TR31_E1_EMV_MKEY_CONFIDENTIALITYTR31_E6_EMV_MKEY_OTHER。有关更多详细信息,请参阅加密操作密钥

$ aws payment-cryptography-data decrypt-data --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/tqv5yij6wtxx64pi --cipher-text 33612AB9D6929C3A828EB6030082B2BD --decryption-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", "PlainText": "31323334313233343132333431323334" }

使用 RSA 密钥解密数据

在此示例中,我们将使用使用操作创建的 RSA 密钥对来解密密文数据。CreateKey要执行此操作,必须 KeyModesOfUse 将密钥设置为启用Decrypt并 KeyUsage 设置为TR31_D1_ASYMMETRIC_KEY_FOR_DATA_ENCRYPTION。有关更多选项,请参阅加密操作密钥

对于 PKCS #7 或当前不支持的其他填充方案,请通过省略填充指示符“Asymmetry={}”来选择无填充,并在调用服务后删除填充。

$ aws payment-cryptography-data decrypt-data \ --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/5dza7xqd6soanjtb --cipher-text 8F4C1CAFE7A5DEF9A40BEDE7F2A264635C... \ --decryption-attributes 'Asymmetric={PaddingType=OAEP_SHA256}'
{ "KeyArn": "arn:aws:payment-cryptography:us-east-1:529027455495:key/5dza7xqd6soanjtb", "KeyCheckValue": "FF9DE9CE", "PlainText": "31323334313233343132333431323334" }