关于IC卡密钥理解和修改(简易篇)
常用的IC卡由于结构简单,使用方便,价格低,越来越受到普通应用的欢迎.本文主要描述普通IC卡的密钥相关的知识.
关于IC卡的读写,必须使用IC卡读写器, 我们推荐使用NFC读写器YW-607HC或者IC卡读卡器YW-605HA,不仅支持windows应用程序,也支持chrome等浏览器web的BS架构程序,同时支持安卓和linux的开发,可以说是一款非常全面的读卡器.
要了解IC卡的密钥,要从IC卡的结构说起.
1、卡内存结构
每张卡有16个扇区,每个扇区有4个块,每个块有16字节。
所以卡内存字节数:16*4*16=1024字节。
2、 每个扇区的最后一块为密钥块,用于保存密钥,除了密钥,不能用于保存其他数据。
第0扇区的第0块用于保存卡号等信息,是只读块,所以也不能用于写数据。
那么实际可用内存为:(16*3-1)*16字节=752字节
3、密钥块的密钥只能用于这个扇区的密钥认证,所以16个块的密钥都是互相独立的。
4、密钥块的绝对块地址:
0扇区:块3
1扇区:块7
2扇区:块11
...
15扇区:块63
5、密钥块数据结构
每个块16字节,密钥块也不例外,密钥块的数据结构如下:
A密钥(6字节)+密钥控制字(4字节)+B密钥(6字节),例如
FFFFFFFFFFFF FF078069 FFFFFFFFFFFF .
6、如何修改密钥
简单的修改密钥就是 将6字节的A密钥,换成你所要设置的密钥,密钥控制字不变, B密钥与A密钥保持一致。
例如设置密钥112233445566, 此时写密钥块112233445566 FF078069 112233445566。写密钥块api为YW_WriteaBlock, 即可将该扇区的密钥修改为112233445566。
7、BS结构下web程序如何修改密钥,首先还是要组织密钥块的16字节, 然后将这16字节写入到密钥块中, 可以参考密钥修改在线例程http://www.youwokeji.com.cn/CloudReader/Sample8.html