从事RDID行业的朋友经常会遇到这样的情况,同一张ID卡,在不同厂家生产的读卡器上读出的识别号完全不一样,有时甚至差之千里。ID卡的识别号一般是在出厂时被固化在卡片的ROM里,本身是不会改变的,问题出在读卡器上,是读卡器对卡片识别号采用了不同的输出格式。下面以第7节中提到的ID卡(其卡号是16进制的2100A5EAD9H)为例,说明常见的识别号输出格式。
1.ASCII码与16进制真值变换
在嵌入式系统里,数据的存储一般以字节为单位,字节的表示范围为16进制的00-FFH,这就是16进制的真值。而计算机显示数据一般使用可见字符的ASCII码,ASCII码使用一个字节表示原来16进制真值数据的半个字节。比如ASCII用30H-39H表示16进制的0-9,用41-46H表示16进制的A-F。对于上面的卡号,在16进制显示模式下,如果使用16进制真值,输出结果为
21 00 A5 EA D9
如果使用ASCII码输出,则变成了
32 31 30 30 41 35 45 41 44 39
2.大小端模式变换
如果我们把识别号看成一个数,按多数人的习惯,一般要先输出数据的高位部分,再输出数据的低位部分。对于卡号2100A5EAD9H到底是左边的21是最高位,还是右边的D9是最高位呢?这就是大小端模式的问题。如果认为左边是高位,就是大端模式,如果认为右边是高位,就是小端模式。所以识别号2100A5EAD9H在大端模式下输出就是.
21 00 A5 EA D9
在小段模式下输出就是
D9 EA A5 00 21
3.识别号的整体与部分输出
ID卡的识别号有5个字节,通常情况下使用低位的4个字节。有的用户需要ID号的全部信息,就会输出全部5个字节。有时一个单位的人数较少,为方便记录,只使用低位的2个或3个字节。使用的字节数越少,表示的数值范围越小,越容易发生重号。仅使用两个或3个字节的用户,一般在购卡时会购买一个低位连续的号段,同时让高位字节固定。比如如果想只使用低位的两个字节,则可以固定高位3个字节为2100A5H, 低位两个字节从0000-1000H,也就是将2100A50000-2100A51000H范围的识别卡买断。这样在单位内部使用时就不会重号了。实际上只要高位的三个字节相同,根据卡号的唯一性,低位的两个字节无论如何也不会相同的。如果卡号不唯一,情况将另当别论,“关于ID卡的复制”后面还要述及。
2100A5EAD9H在大端模式下输出5个字节
21 00 A5 EA D9
输出4个字节
00 A5 EA D9
输出3个字节
A5 EA D9
输出2个字节
EA D9
4.16进制与10进制转换
对于卡片的用户来说,10进制相对于16进制更容易记忆和接受,所以许多读卡器都把卡号转换成10进制输出。多数情况下,是将低位的4个字节转换为10位的10进制数,当然也可以把5个字节转换为13位的10进制数、把3个字节转换为8位的10进制数、把2个字节转换为5位的10进制数输出。
2100A5EAD9H整体5字节转换为13位10进制数结果为
141744794329
右边4字节转换为10进制
0010873561
右边3字节转换为10进制
10873561
右边2字节转换为10进制
60121
5.数据的韦根格式
这里的韦根指的是韦根数据转换格式,而不是韦根信号传输接口。韦根数据格式只使用识别号的低位三个字节,这三个字节的第一个字节转换成一个3位的10进制数,后两个字节转换成一个5位的10进制数,然后把两部分组合成一个8位的10进制数输出。例如2100A5EAD9H,只使用A5EAD9H,把A5H化为10进制的165,把 EAD9H化为10进制的60121,最后输出16560121。
6.数据的半字节旋转
还有一些读卡器厂家的排他性较强,对ID号进行了一些加密变换,比如所有卡号的识别字节都异或一个数,或者按某种规则把识别号和一些数进行运算,然后将运算结果输出。这种情况下一般很难猜出其加密算法。半字节旋转就是常见的一种加密方法。我们知道,16进制数的数值范围是0-15,用4位2进制数表示。半字节旋转法是将每一个0-15之间的4位2进制数左边的两个bit和右边的两个bit对调。其对调的结果如下
原值16进制 原值2进制 对调后2进制 对调后16进制
0 0000 0000 0
1 0001 1000 8
2 0010 0100 4
3 0011 1100 C
4 0100 0010 2
5 0101 1010 A
6 0110 0110 6
7 0111 1110 E
8 1000 0001 1
9 1001 1001 9
A 1010 0101 5
B 1011 1101 D
C 1100 0011 3
D 1101 1011 B
E 1110 0111 7
F 1111 1111 F
例如2100A5EAD9H ,按上述规则变为48005A75B9H
7.ID64格式输出
前面说过,TTF的ID卡,只要一进入读卡器的射频场,就不停的发送64位的ID64格式的数据,读卡器从这64位数据中解码提取5个字节的识别号。有些读卡器直接将64数据不解码输出,这时正好是8个字节。例如2100A5EAD9H,对应的ID64格式输出为FF94600515DA6E58H(参见射频识别技术漫谈(7)——ID卡)。由于ID64格式的开始是9个“1”,所以这种输出的第一个字节必定是FFH。
8.数据的前缀与后缀
前面几条主要说的是卡号本身的变换。在ASCII码输出的情况下,为了区分每一条数据,有时读卡器在每一条识别号的后面增加一个回车换行(0D 0A);有时为了更清楚的表示每一条识别号的开始和结束,在识别号的前面增加一个起始符,后面增加一个结束符,最常见的起始符是02,结束符是03。例如2100A5EAD9H,增加了前缀后缀和回车换行,并转为ASCII输出后的格式为
02 32 31 30 30 41 35 45 41 44 39 0D 0A 03
有些读卡器还有校验字节,射频识别技术中常用的数据校验方法笔者将用专门一节介绍。
实际的读卡器输出格式往往是上述一种或几种的组合,例如先半字节旋转,然后转化为10进制,最后用ASCII加前后缀输出。对于其他可读写的IC卡,比如常用的Mifare系列卡片,当用作ID卡时,其序列号的格式也有上述类似的变换。
本文来自新浪网
射频识别技术漫谈(10)——识别号的格式变化【worldsing笔记】的更多相关文章
-
射频识别技术漫谈(14)——S50与S70存取控制【worldsing笔记】
存取控制指符合什么条件才能对卡片进行操作. S50和S70的块分为数据块和控制块,对数据块的操作有"读"."写"."加值"."减值 ...
-
射频识别技术漫谈(12)——三次相互认证【worldsing笔记】
射频识别系统中由于卡片和读写器并不是固定连接为一个不可分割的整体,二者在进行数据通讯前如何确信对方的合法身份就变得非常重要.根据安全级别的要求不同,有的系统不需认证对方的身份,例如大多数的TTF模式的 ...
-
射频识别技术漫谈(13)——Mifare S50与S70【worldisng笔记】
Mifare S50和Mifare S70又常被称为Mifare Standard.Mifare Classic.MF1,是遵守ISO14443A标准的卡片中应用最为广泛.影响力最大的的一员.而Mif ...
-
射频识别技术漫谈(9)——动物标签HDX【worldsing笔记】
半双工(HDX,Half Duplex)技术是ISO11784/11785中规定的另一种标签与读写器之间的通讯方式.读写器先打开射频场对标签充电以激活标签,然后关闭磁场,标签在读写器磁场关闭的情况下向 ...
-
射频识别技术漫谈(7)——ID卡【worldsing笔记】
ID(Identification)是识别的意思,ID卡就是识别卡.ID卡包含范围广泛,只要具有识别功能的卡片都可以叫ID卡,例如条码卡,磁卡都可以是ID卡,我们这儿说的当然是射频识别卡. 射频ID卡 ...
-
射频识别技术漫谈(9)——动物标签HDX
半双工(HDX,Half Duplex)技术是ISO11784/11785中规定的另一种标签与读写器之间的通讯方式.读写器先打开射频场对标签充电以激活标签,然后关闭磁场,标签在读写器磁场关闭的情况下向 ...
-
射频识别技术漫谈(7)——ID卡
ID(Identification)是识别的意思,ID卡就是识别卡.ID卡包含范围广泛,只要具有识别功能的卡片都可以叫ID卡,例如条码卡,磁卡都可以是ID卡,我们这儿说的当然是射频识别卡. 射频ID卡 ...
-
射频识别技术漫谈(6)——通讯协议概述【worldsing笔记】
通讯协议是通讯的双方或多方在交流时遵守的规矩,包括谁先发起通讯,先交流什么,后交流什么,一方如何问,另一方如何答等.在这里通迅的双方指的是读写器和卡片. 首先是谁先发起通讯,很显然有两种,读写器先发言 ...
-
射频识别技术漫谈(1)——概念、分类
现代社会智能卡已经渗透到生活的方方面面,公交卡.考勤卡.身份证.手机卡等等数不胜数. 智能卡按使用时是否和读卡器接触可分为接触式智能卡和非接触式智能卡,接触式智能卡上有6-8个触点,使用时插在卡 ...
随机推荐
-
jquery仿搜狐投票动画代码
体验效果:http://hovertree.com/texiao/jquery/21/ 这是一款基于jquery实现的仿搜狐投票动画特效源码,运行该源码可见VS图标首先出现在中间位置,紧接着随着投票比 ...
-
saiku-添加数据源以及保证数据源的一致性
采用任何一种添加数据源的方式都不能保证数据源的一致和完整,所以需要两种结合来管理数据源 1.通过saiku的管理台添加数据源 ① 第一种方式:schema和ds都在管理台添加 1)上传schema文件 ...
-
Queue及Stack
Queue 她是一个接口,有多冢实现方式(LinkedList.ArrayDeque等) 类别 方法 入队 add.offer(优先级高) 出队 remove.poll 查询 element.peek ...
-
UPUPW PHP环境集成包
UPUPW PHP环境集成包 http://www.upupw.net/
-
Swift中NSData与NSDictionary之间的相互转换
原创Blog,转载请注明出处 使用NSKeyedUnarchiver类来进行相互转换 1.NSDictionary转NSData var dictionaryExample : [String:Any ...
-
xcode5下一个ffmpeg静态库配置
1.若要安装xcode命令行工具 1).xcode5安装命令行工具方法: 在终端运行命令Using xcode-select --install 2).xcode5之前安装命令行工具方法: 2.xco ...
-
华为防火墙USG5500-企业双ISP出口
需求:(1)技术部IP地址自动获取,网段为192.168.10.0/24,该部门访问Internet的报文正常情况下流入链路ISP1. 总经办IP地址自动获取,网段为192.168.20.0/24,该 ...
-
sa账号无法登陆sqlserver2008
今天遇到sa无法登陆sqlserver2008的问题,原来是sa账户未启用,混合验证模式没打开,太低端了. 具体解决过程将从百度文库里查到的文章张贴如下: 出现问题 : 标题: 连接到服务器 ---- ...
-
SAP 打印自动导出PDF本地文件(自己做的例子)
smartforms导出PDF: 常用函数有: convert_otfconvert_otfspooljob_2_pdfconvert_abapspooljob_2_pdfCONVERT_OTF_2_ ...
-
[转]vue跨域解决方法
vue跨域解决方法 vue项目中,前端与后台进行数据请求或者提交的时候,如果后台没有设置跨域,前端本地调试代码的时候就会报“No 'Access-Control-Allow-Origin' hea ...