首先终端和卡片有一个共同的密钥叫做消费密钥:PurchKey
假设PurchKey = 11223344556677888877665544332211 在满足安全条件的情况下:
第一步:终端向卡片发送消费初始化命令:
Apdu: 80 50 01 02 0B 01 00001000 001122334455
CLA INS P1 P2 LC KeyIndex 交易金额 终端机编号
P1:密钥用途、P2:密钥版本、 Lc:密钥文件信息长度、KeyIndex:密钥文件标识符
卡片返回15个字节的数据如下(不包括9000):
00000000 0000 000000 01 00 11223344
卡片余额 交易序号 透支限额 密钥版本号 算法标识 随机数
MAC1的计算过程如下(终端):
1.计算过程密钥:SessionKey
InputData = 11223344 0000 0001 (8bytes)
随机数 卡片脱机交易序号 终端交易序号后四位
PurchKey = 11223344556677888877665544332211(消费密钥)
SessionKey = 3DESEnypt(InputData, PurchKey) =003238ABC57659DD(计算过程密钥)
用LoadKey输入键对InputData输入数据 做3DES加密
2.计算MAC1
InputData1 = 00001000 06 001122334455 20120229135100
交易金额 交易类型 终端机编号 日期时间
SessionKey = 003238ABC57659DD