当前位置: 代码迷 >> 嵌入开发 >> APDU下令MAC计算
  详细解决方案

APDU下令MAC计算

热度:8131   发布时间:2013-02-26 00:00:00.0
APDU命令MAC计算
用银联的手机支付SD卡,类似于CPU卡。发送APDU命令来计算MAC。


CLA INS P1 P2 Lc DATA
‘80’ ‘FA’ 见下表 ‘00’ N*8 数据
P1字节定义:
B8 B7 B6 B5 B4 B3 B2 B1 含义
X x x x x - - - RFU
- - - - - - - x 计算模式
0 加密/解密
1 MAC计算
- - - - - - x - 后续块
0 无后续块
1 有后续块
- - - - - x - - 初始值(仅对MAC计算有效)
0 无初始值
1 有初始值


80 FA 01 00 08 11 22 33 44 55 66 77 88
比如这条命令,计算1122334455667788的MAC,08为指定的长度。

但是现在有一个问题,我需要的计算的数据超过255了,要如何才能计算这条数据的MAC。
是需要分次发送?该怎么写?
------解决方案--------------------------------------------------------
如果P1的最高位b8为1时,b6和b7位必须为0,b5-b1位表示待读取的基本文件的SFI;这时P2表示要读取数据起始位置在文件中的偏移量。
    如果P1的最高位为0时,P1的后7位和P2相连共同组成了一个超过256的整数,表示待读取数据块的起始位置在文件中的偏移量,可以用于超过256Byte文件的读取。

APDU命令

------解决方案--------------------------------------------------------
这是一条写入的命令。要写入超过255的数据,然后在芯片内计算出MAC,读取到返回的MAC。其中LC标识写入的长度。如何写入超过255的数据来计算?