手动生成 AC 密码

generate AC cryptogram manually

我正在尝试手动生成 AC,我有生成 AC 的工具,但我想自己生成它以了解相同的算法。

我的计算对于 Discover 卡没有问题,但对于 MasterCard 却失败了。据我了解,用于生成 AC 的数据取决于标签 8C - CDOL1,我们使用 Gen AC 命令 + AIP + ATC 提供给卡片。

AIP 和 ATC - 由 ICC 内部访问。

用于生成AC的数据是:-

data part of Gen AC command + value of tag 82 + value of tag 9f36 + 80 + optional 00 to make it multiple of 8.

这是我的逻辑,可能是我使用了错误的数据来计算A.C这就是为什么我的测试工具得到不同结果的原因。

终端提供的数据
授权金额 - 000000000201
金额,其他 - 000000000000
终端国家代码 - 0826 - 英国
终端验证结果 - 00 00 00 00 00
交易货币代码 - 0826 - 英镑
交易日期 - 15 04 28
交易类型 - 00 - 商品和服务
不可预测的数字 - 30 90 1B 6A
终端类型 - 23 - 有人值守,仅限离线。由商家运营
数据认证码 - 00 00
ICC 动态号码 - 1E AB C1 26 F8 54 99 76
CVM 结果 - 00 00 00

使用 CDOL1 的 AC 代 80AE 40 00 2B 000000000201000000000000082600000000008261504280030901B6A2300001EABC126F8549976000000 此命令返回 9F26。 我用于计算的数据是:-

0000000002010000000000000826000000000008261504280030901B6A2300001EABC126F85499760000003800000180 [数据是 8 的倍数]

其中 3800 是 AIP,0001 是 ATC,80 是填充 [填充方法 2 EMV] 这是我的逻辑,有没有人告诉我我应该更多地关注哪里来生成与我的工具生成的相同的 AC。

MasterCard Application Cryptogram (AC) 生成比其他卡片方案更复杂。

  1. 卡可以使用不同的 ICC 会话密钥派生(SKD)方法:

    • MasterCard 专有 SKD,其中涉及应用程序交易计数器 (ATC) 和不可预测的数字 (UN);
    • EMV2000 方法,仅涉及 ATC - 参见 EMV 4.0,第 2 册
    • EMV 通用会话密钥 (CSK) 方法,仅涉及 ATC - 参见 EMV 4.2,第 2 册;
  2. 数据对象 (DO) 可以具有不同的附加值或修改值集:

    • 卡验证结果 (CVR) 可以是 6 或 4 个字节。
    • 可以包括来自发卡行应用程序数据 (IAD) 的离线计数器。
    • 可以包括上次在线 ATC 值。

使用的方法和数据变体可以通过密码版本号(CVN)和应用程序控制位来检测。 CVN 是 IAD 标签的子字段 0x9F10 .

详细信息为万事达卡会员专有。

要深入了解它,请查看“M/Chip 卡应用加密算法”和M/Chip 卡应用参考。