http://3y.uu456.com/bp_8mhvy4gizz721et5ih0i_1.html

一般来说,基于MifareClassic的射频卡;1K:16个分区(sector),每个分区4个块;对于所有基于MifareClassic的卡来说,;KeyA:6bytes;AccessConditions:4bytesK;M1卡分为16个扇区,每个扇区由4块(块0、块1;块0块1;扇区0;块2块3块0块1;扇区1;块2块3;密码A存取控制密码B:::;块0

一般来说,基于MifareClassic的射频卡,一般内存大小有3种:

1K: 16个分区(sector),每个分区4个块(block),每个块(block) 16个byte数据 2K: 32个分区,每个分区4个块(block),每个块(block) 16个byte数据 4K:64个分区,每个分区4个块(block),每个块(block) 16个byte数据

对于所有基于MifareClassic的卡来说,每个区最后一个块叫Trailer,16个byte, 主要来存放读写该区的key,可以有A,B两个KEY,每个key长6byte,默认的key一般是FF 或 0,最后一个块的内存结构如下: Block 0 Data 16bytes Block 1 Data 16 bytes Block 2 Data 16 bytes Block 3 Trailer 16 bytes Trailer:

Key A: 6 bytes

Access Conditions: 4 bytes Key B: 6 bytes

M1卡分为16个扇区,每个扇区由4块(块0、块1、块2、块3)组成,(我们也将16个扇区的64个块按绝对地址编号为0~63,)存贮结构如右表所示

块0 块1

扇 区 0

块2 块3 块0 块1

扇 区 1

块2 块3

密码A 存取控制 密码B : : :

块0

扇 区 15

块1 块2

密码A 存取控制 密码B

数据块 数据块 数据块 数据块 数据块 数据块 数据块 数据块

0 1 2 3 4 5 6 7

数据块 数据块 数据块

60 61 62

块3

密码A 存取控制 密码B 数据块 63

第0扇区的块0(即绝对地址0块),它用于存放厂商代码,已经固化,不可更改。 每个扇区的块0、块1、块2为数据块,可用于存贮数据。

每个扇区的块3为控制块,包括了密码A、存取控制、密码B。具体结构如下:

存取控制为4个字节,共32位,扇区中的每个块(包括数据块和控制块)的存取条件是由密码和存取控制共同决定的。 工作原理:

读写器向M1卡发一组固定频率的电磁波,卡片内有一个LC串联谐振电路,其频率与读写器发射的频率相同,在电磁波的激励下,LC谐振电路产生共振,从而使电容内有了电荷,在这个电容的另一端,接有一个单向导通的电子泵,将电容内的电荷送到另一个电容内储存,当所积累的电荷达到2V时,此电容可做为电源为其它电路提供工作电压,将卡内数据发射出去或接取读写器的数据。 Android 读写M1卡

先了解一下MifareClassic协议

在android sdk 的文档中,描述道 “all MifareClassic I/O operations will be supported, andMIFARE_CLASSIC NDEF tags will also be supported. In either case, NfcA will also be enumerated on the tag, because all MIFARE Classic tags are also NfcA.” 所以说NFCA协议是兼容MifareClassic 协议的, 我们可以通过NfcA在android的相关类来处理基于MifareClassic 的RFID卡。

读M1卡代码:

if (NfcAdapter.ACTION_TECH_DISCOVERED.equals(action)) {

// 3) Get an instance of the TAG from the NfcAdapter

EXTRA_TAG); // 4) Get an instance of the Mifare classic card from this TAG // intent

mfc = MifareClassic.get(tagFromIntent); if (mfc != null) {

Toast.makeText(this, "检测到卡片,读卡中。。。", Toast.LENGTH_SHORT).show(); try {

mfc.connect(); boolean auth = false;

auth = mfc.authenticateSectorWithKeyA(15,

"passwo".getBytes());// 验证密码

if (auth) { }

new String(mfc

.readBlock(60)));// 读取M1卡的第60块即15扇区第0块

} catch (Exception e) {

if (BuildConfig.DEBUG) { }

e.printStackTrace();

}

}

}// End of method

写M1卡代码:

try {

mfc.connect(); boolean auth = false; short sectorAddress = 1;

auth = mfc.authenticateSectorWithKeyA(sectorAddress,

MifareClassic.KEY_DEFAULT);

if (auth) { }

// the last block of the sector is used for KeyA and KeyB cannot

mfc.writeBlock(4, "1383838438000000".getBytes());// 必须为16字节不够自己补0 mfc.close();

Toast.makeText

this, "写入成功", Toast.LENGTH_SHORT)

.show();

} catch (IOException e) {

// TODO Auto-generated catch block e.printStackTrace();

} finally { }

try {

mfc.close();

} catch (IOException e) { }

// TODO Auto-generated catch block e.printStackTrace();

三亿文库3y.uu456.com包含各类专业文献、文学作品欣赏、各类资格考试、应用写作文书、高等教育、中学教育、专业论文、幼儿教育、小学教育、Android nfc模块读写MifareClassic卡50等内容。



Android nfc模块读写MifareClassic卡50相关推荐

  1. Android NFC 标签读写Demo与历史漏洞概述

    文章目录 前言 NFC基础 1.1 RFID区别 1.2 工作模式 1.3 日常应用 NFC标签 2.1 标签应用 2.2 应用实践 2.3 标签预览 2.4 前台调度 NFC开发 3.1 NDEF数 ...

  2. arduinopn532模块_零知开源分享-使用PN532串口NFC模块读写NFC卡片

    POSTAMBLE:帧尾 一般为 00. 2.读写示例分析 使用的是pn532为主控芯片的NFC串口模块,来读写M1卡,注意所有数字为16进制形式.用usb转串口模块将pn532与电脑连接,串口助手发 ...

  3. android 数据持久化——读写SD卡中的内容

    在前面讲的那三个方法:openFileOutput .openFileInput 虽然都能通过流对象OutputStream和InputStream可以处理任意文件中的数据,但与SharedPrefe ...

  4. android NFC的读写

    一.NFC知识 1.NFC是什么? NFC,即Near Field Communication,近距离无线通讯技术,是一种短距离的(通常<=4cm或更短)高频(13.56M Hz)无线通信技术, ...

  5. java media_unmount file_(20120801)android文件的读写SD卡总结

    android的SD卡的文件读取操作 首先设置xml文件的权限,和单元测试的代码 package="com.wsl.file_txt" android:versionCode=&q ...

  6. android 6.0 sd卡读写权限,Android 6.0 读写SD卡权限问题

    一.问题描述## Android 6.0 下默认存储SD卡,使用原生FMRadio生成的文件保存到内部存储中 [预置条件]插入T卡[操作步骤]设置>存储设备和USB>选择SD卡为默认存储& ...

  7. 【已鸽】手机添加nfc模块模拟ic卡开门禁

    step1:先查到门禁一卡通的生产公司,找到相应的型号 学校方:校园一卡通应用平台密钥系统通过银联提供的主控密钥生成校园一卡通的应用密钥:校园一卡通应用平台对金融IC卡进行二次发卡,在校园一卡通应用下 ...

  8. Android NFC读MifareClassic卡获取卡片ID 类型 扇区 存储空间

    1.首先要在AndroidManifest.xml中声明如下配置信息: 为了能够使用Android手机的NFC功能,需要在Manifest文件中添加相应的权限: 详细配置请参考-->Androi ...

  9. Android NFC源码读取公交卡信息余额和交易记录

    通过NFC的读模式,读取公交卡的余额和交易记录.可以读取深圳通.羊城通.北京卡.八达通.武汉通等. 源码亲测可用放心下载. 源码下载Eclipse版本:Android NFC源码读取公交卡信息余额和交 ...

最新文章

  1. html select 多选取值,下拉框多选实现 jquery-multiselect 并获取选中的值
  2. java sleep线程吗_JAVA的线程的sleep()方法是否占用CPU
  3. linux .ssh隐藏,linux安全配置-将ssh服务隐藏于Internet(端口碰撞)
  4. SpringSecurity 权限控制准备之IOC容器结构说明
  5. ALV Styles in Field catalogue using OOPS
  6. 在IBM服务器安装Windows server 2012的心得
  7. Win10笔记本可以搜索到邻居WiFi却搜不到自家的??
  8. oracle多用户导出导入用法
  9. Docker 镜像优化与最佳实践
  10. 绝对经典的滑轮新闻显示(javascript+css)
  11. MySQL查询用户行为,网站用户行为分析
  12. 斯皮尔曼等级相关(Spearman’s correlation coefficient for ranked data)
  13. access如何查询两张表的内容_在Excel中使用SQL语句实现精确查询
  14. dnmp一键部署搞定的php开发环境基于Docker的LNMP一键安装程序
  15. 关于DllRegisterServer的调用失败的问题解决办法 错误代码0x80040201
  16. Win10系统异常应该怎么修复
  17. 【VS Code】Windows10下VS Code配置Ruby语言环境
  18. nRF51822定时器设置
  19. Swift:高级架构、流水线深度、内存延迟 转载
  20. 句柄的本质——拨乱反正篇 (转)

热门文章

  1. 正宇丨揭秘你不知道的网络水军产业链运作内幕
  2. 华为OD机试 - 高矮个子排队
  3. 新唐单片机选型手册_新唐8051标准系列单片机选型指南
  4. 回收站清空了能恢复吗?回收站文件恢复的2种方法
  5. 使用JQuery快速高效制作网页交互特效第九章所有上机
  6. 计算机非全日制硕士 选校,非全日制研究生如何来选择学校呢?
  7. P4735 最大异或和(可持久化字典树)
  8. php 中margin-top,margin-top是什么意思?
  9. Java - 多线程
  10. Windows系统DOS命令之多线程技术