|
1、MIFARE® Classic 1k卡的状态
(1)、POWER OFF (断电状态)
卡片由于缺少射频磁场能量而处于断电状态卡片不工作。
(2)、IDLE (休眠状态)
卡片被电磁场能量激活后延迟数毫秒则进入IDLE 状态,在这一状态中能够解调读卡器传来的调制信号并能对读卡器的Request 以IDLE 或ALL 方式命令进行应答。
(3)、READY (就绪状态)
当对Request 命令进行应答后就进入了READY 状态,在这一状态中可以采用比特帧防冲突算法,当卡片的唯一序列号被读卡器发来的Selection 命令选中时就退出本状态。
(4)、ACTIVE (激活状态)
当卡片的唯一序列号被读卡器选中时就进入本状态, 在这一状态中卡片完成本次应用所要求的全部操作。
(5) HALT 停止状态
卡片应用完成后,读卡器可通过发送Halt 命令,使卡片进入这一状态,在这一状态中卡片只对读卡器以ALL 方式发送的Request命令进行应答(或被唤醒),从而又进入READY 状态。
2、密钥B的使用
问:一张初始卡用B 密钥校验后为什么不能对数据块进行读写?
答:其实在MIFARE® Classic 1k卡内的MF1 ICS50芯片中,有这样的安全逻辑关系:如果密钥B 可以在相应的区尾被读出它就不能用于确认,如果读写设备已用能被读出密钥B确认任何段,卡会在确认后拒绝任何存储器的访问操作。
初始卡中的B密钥可以通过校验密钥A而被读出,因此它不能用于确认,读写设备可以成功校验该密钥B,但校验之后的任何数据访问操作将被卡拒绝。
3、值块(value)的格式
值块在卡中可以实现电子钱包的功能,它有一个固定的格式,可以进行错误检测和纠正,在对其进行操作时需要按照这种格式来进行。
值块的这种标准格式只能在格式化值块的写操作时产生:
1)、Value:表示一个带符号4 字节值,这个值的最低一个字节保存在最低的地址中,取反的字节以标准2的格式保存,为了保证数据的正确性和保密性,值被保存了3次,两次不取反保存一次取反保存,
2)、Adr :表示一个字节地址,当执行强大的备份管理时用于保存存储段的地址,地址字节保存了4 次,取反和不取反各保存两次。在执行增减恢复传送操作时地址保持不变,它只能通过写命令改变。
4、值操作
问:
在对数据块进行值操作时参数*_Value 需要减的值应该是十进制还是十六进制
是低位在前还是高位在前例如我要减1000 *_Value 指向的指应该是00 00 10 00 或
00 10 00 00 还是应该是E8 03 00 00 或 00 00 03 E8 为什么在函数中您将这几个数倒序赋值即
spi_buffer[DATA+2]=*(temp+3);
spi_buffer[DATA+3]=*(temp+2);
spi_buffer[DATA+4]=*(temp+1);
spi_buffer[DATA+5]=*temp;
答:
这实际上是高级语言和机器语言的转换问题在对参数*_Value进行赋值时若要减1000
十进制可以是1000 或0x3E8 那么在C51 编译器编译后在内存中它的存储方式是
00 00 03 E8 其高位在低地址而低位却在高地址而卡中这个数的存放顺序为E8 03 00 00
两者正好位置颠倒因此在函数中将这几个数倒序赋值.
|
|