• 磁条卡刷卡原理


    本文章转自:http://blog.csdn.net/wolfliuming/article/details/5875625


    磁卡上的数据记录是按照IS07811的标准规定,有三个磁道。一磁道的数据记录密度为210bpi,最多可记录79个字母和数字,每个字符由7位编码.一磁道是只读磁道。二磁道的数据记录密度为75bpi,最多可记录40个数字,每个字符有5位编码,二磁道也是只读磁道。三磁道的数据记录密度是210bpi,最多可以记录107个数字,每一个字符由5位编码,三磁道是读写磁道。在银行系统的运用中。所有的银行磁条卡都运用二磁道。根据各个银行规定可以选择运用三磁道.一磁道暂不使用。
     
    以二磁道为例,每5个bit组成一个byte的数据,p1,c4,c3,c2,c1,其中p1表示奇偶校验位,e1一e4表示数据位,一共可以表示16 种字符.在这些字符当中含有10个阿拉伯数字和6个其他字符。磁道上的数据是逻辑取反的,即磁道上取到的为1的数据,实际表示逻辑0。将取反后得到数据的低四位再加上0X30可以取到相应ASIC码。磁道开始有一些冗余数据,紧接着是起始标志位,再者是数据区,后是结束标志位。在这之后是LRC(纵向冗余校验位),最后又是冗余数据区。二磁道从开始标志位到结束标志位一共最多可以有40个数据。

    冗余数据区:不含有效数据,只是用作磁道数据的同步,由若干的1组成,取反后全为数据0。一般在软件译码时,只有当检测到连续出现5位连续1(即表示逻辑0)的冗余数据时,才认为磁道已经开始。
    开始标志位:磁道上的数据是101O0,取反后是01011。值为0x0B,加上0X30后为字符‘;’。
    数据区:包含主账号,字段分隔符,失效日期,服务代码,附加数据。其译码方式与开始标志位相同。结束标志位值为OxlF。其转化成ASIC码为字符‘?’。
    LRC(纵向冗余校验位):磁道上各字符的异或和。
    由于刷卡方向不定.可能为正向刷卡或者是反向刷卡。所以在判断有效数值时以磁道上第一个0(取反即为1)为标志,这是因为无论是使其标志位0x0B还是OxlF其第一个有效位都是0 (取反即为1)。

    作正向刷卡数据处理,首先,将接收到的数据一起存放在一段内存区内,判断当第一位为0(取反为1)的数据开始作为有效数据每五个bit取反作为一个字节的数据。第一个数据为0x0B且有能够在40个字节的数据之内有OxlF判断为正向数据接收成功。

    反向刷卡有50%的几率,作反向刷卡时,数据处理是从所有磁道上接收的数据的最后一个bit开始往前每5个bit组成一个byte。当第一位为0(取反为逻辑1)的数据开始做每5个bit取反作为一个字节的解码操作,第一个数据为0XOB且在107数据之内有0x1F出现判断为反向数据接收成功。之后将接收成功的数据转化成相应的ASIC码。


  • 相关阅读:
    Apache ab压力测试时出现大量的错误原因分析
    图解linux下的top命令
    [转载]几种切词工具的使用(转)
    大规模中文文本处理中的自动切词和标注技术
    [转载]盘点:94版《三国演义》演员的今昔对比照
    搜索引擎切词详解
    iphone-命令行编译之--xcodebuild
    Appium IOS 自动化测试初探
    手把手教你appium_mac上环境搭建
    Appium-doctor 检测Xcode未安装问题
  • 原文地址:https://www.cnblogs.com/lialong1st/p/7756647.html
Copyright © 2020-2023  润新知