经过一周的努力终于搞定了cpu发卡的流程,我这里密钥用到了一级分散因子。
1.卡片上电复位,得到4字节uid
00A40000023F00 选择MF(3F00)
2.外部认证
- APDU指令 0084000004 取四个字节随机数
- 用8个字节的初始密钥FFFFFFFFFFFFFFFF和4随机数+00000000进 行解密生成8字节解密数据(用DES函数计算得出)
- APDU指令 0082000008+8个字节的解密数据
3.删除MF下的所有文件
APDU指令800E000000
4.建立MF下的密钥文件
APDU指令 80E00000073F00A080FFFFFF
指令说明:80(CLA)E0(INS)0000(P1P2 文件标识)07(Lc)3F(文件类型)00A0(文件控件)80(DF文件短标识符)FF(增加权限)FF(默认)FF(默认)
5.增加密钥
16字节的主控密钥+分散因子(4字节的uid左补4字节ff) 3Des计算得到前8个字节
16字节的主控密钥+分散因子取反(4字节的uid左补4字节ff取反) 3Des计算得到后8个字节
APDU指令80D401001539F0FF0F33+16字节
指令说明:80(CLA)D4(INS)01(P1)00