近段时间在做android下NFC的M1卡的加密扇区的读取,但是涉及到MifareClassic类操作验证未能找到相关资料,后来查看了MifareClassic类的源代码和基于android原生案例,实现了加密扇区读取。分享下代码,希望对大家有帮助。
对于NFC操作的基本部分有很多资料都一样的,这里不再赘述,仅简单介绍MifareClassic验证和读取的过程
1、创建MifareClassic对象,MifareClassic.get(tag);
2、建立MifareClassic类连接,MifareClassic.connect();
3、对扇区(0-15)进行验证,按KeyA和KeyB两种验证,
(1) MifareClassic.authenticateSectorWithKeyA(sector,key);
其中sector为扇区号,key为6字节验证码,此处Key需要处理为-128至127的字节,开始使用0x00-0xFF会报错
(2) MifareClassic.authenticateSectorWithKeyB(sector,key);
其中sector为扇区号,key为6字节验证码,此处Key需要处理为-128至127的字节,开始使用0x00-0xFF会报错
4、按块(sector*4+i)读取扇区内的16Byte内容,MifareClassic.readBlock(Block);
Block0=sector×4+0;
Block1=sector×4+1;
Block2=sector×4+2;
Block3=sector×4+3;