首页 > 代码库 > ABA数据传输格式
ABA数据传输格式
我们经常见到许多卡片和存折的背面有一个黑色的磁条,这种卡片一般称为磁卡。磁卡的使用已经有很长的历史了。由于磁卡成本低廉,易于使用,便于管理,因此它的发展得到了很多世界知名公司,特别各国政府部门的鼎立支持,使得磁卡的应用非常普及,尤其是在银行系统几十年的普遍推广使用,使得磁卡的普及率非常高。
磁卡磁条记录数据的原理和录音机磁带类似。磁带上一般有4个磁道,分别记录两个方向上的左右声道。磁条上有3个磁道。磁道1与磁道2是只读磁道,在使用时磁道上记录的信息只能读出而不允许写或修改。磁道3为读写磁道,在使用时可以读出,也可以写入。
磁道1可记录数字(0-9)、字母(A-Z)和其他一些符号(如括号、分隔符等),最大可记录79个数字或字母。磁道2和3所记录的字符只能是数字(0-9)。磁道2最大可记录40个字符,磁道3最大可记录107个字符。磁卡记录数据信号的格式一般称为ABA(American Bankers Association)信号。相应的3个磁道信号分别称为ABA TRACK1、ABA TRACK2、ABA TRACK3。
相对于非接触式IC卡,磁卡的缺点非常明显。其中最突出的缺点是卡的保密性和安全性较差。磁条上的信息比较容易读出,非法修改磁条上的内容也较容易,所以大多情况下磁卡都是作为静态数据输入使用。虽然第3磁道可读写,并且有金额字段,也只是用于小金额的应用领域。其次,使用磁卡的应用系统需要有可靠的计算机系统和中央数据库的支持。因为磁卡长度有限,因而记录的数据量有限,加上安全考虑,一般磁卡上只是记录一个识别号、主帐号等索引信息,而把金额、交易记录等信息,均保存在金融机构计算机的数据库中,使用时读卡终端读到磁条数据后发送给数据库,数据库根据磁条数据查找对应的用户数据并返回给终端设备。
虽然磁卡缺点明显,但由于普及率非常高,为了节省用户成本,新的IC卡系统通常需要与原有系统兼容,所以射频卡的读写器一般都支持磁卡的ABA信号,尤其是ABA TRACK2信号。
ABA数据传输使用三线制,如下图所示:
三条线分别是CP(卡出现)、DATA(数据)、CLOCK(时钟),有时CP省略,但时钟和数据线必须有。无信号时三条线都是高电平。当刷卡时从磁条触及磁头开始,CP线变低,直到整个磁条滑过磁头,CP恢复为高。磁条上的数据出现在时钟线的下降沿,数据线为高表示“0”,数据线为低表示“1”。
ABA TRACK2用4位二进制表示一个数据,只能表示0-F共16个字符。这16个字符中,A-F用来作为控制符,其中B表示起始符,F表示结束符,所以实际表示的数据只有数字0-9。为了检查每个数据在传输中是否发生错误,每个数据都增加了一位奇校验位,也就是说加上校验位每个字符用5位二进制表示。为了检查所有数据的完整性,把所有数据(包括起始符和结束符)的异或值作为最后一个数据传输,这最后一个数据称为LRC校验符。故实际的传输顺序为:先传输起始符,然后是数据部分,接着是数据结束符,最后是LRC校验符。以下是分别传输数据“0”、“01”和“0123”时的格式:
发送每个字符数据时,先发送数据的低位,然后发送高位,最后发送校验位。同时为了同步,整个的数据在发送前和发送后都附加发送若干个数据“0”,下图是发送数据“5”时的情形:
B 5 F 1
000000000,11010,10101,11111,10000,00000000