磁条卡知识学习与数据解析
一、基本介绍
磁条卡是以液体磁性材料或磁条为信息载体,将液体磁性材料涂覆在卡片上(如存折),或将宽约614mm的磁条压贴在卡片上(如常见的银联卡)。
磁卡上的3个磁道一般都是使用"位"(bit)方式来编码的,根据数据所在的磁道不同,由5个bit或7个bit组成一个字节,每个字节最高位为奇偶校验位,国标GB15120中规定磁卡采用奇校验,即保证每个字节中的"1"的个数为奇数个。磁卡数据中的起始、结束和纵向冗余校验字节本身都有奇偶校验。(奇偶校验与磁道数据解析无关,与刷卡器读磁条卡相关)
二、磁条卡分类
磁条卡按技术可以分为以下两类:
- 高抗磁卡:具有较高的抗消磁性,适用于安全性较高的场合如信用卡及ID卡等。高抗磁条一般为2750,3500和4000 OE(奥斯特),三个磁道皆可写入。
- 低抗磁卡:使用普通抗消磁性磁条,主要用于门票、会员卡及其它普通场合。低抗磁条一般为300和650 OE(奥斯特),只能写入二磁道,一和三磁道无法写入。
备注1:抗磁简单讲,是用来衡量磁条抵抗因受外界磁场影响而造成数据损失的能力,又称抗消磁性。
备注2:低抗磁条卡刷卡机只支持低抗磁卡,高抗磁条卡刷卡机则兼容两者。
备注3:通常,低抗磁条刷卡机无法读取一磁道数据。
三、磁卡使用规范
所有银行磁条卡必须使用第2磁道。第3磁道是否使用由各发卡行自行规定。第1磁道暂不使用,保留将来酌情使用。
金融模块进行处理时,必须同时读入并上送第2、3磁道信息。第2磁道作为交换磁道,各银行在进行识别和信息交换时以第2磁道为准。
四、磁道数据格式说明
1、第一磁道
(1) 简单介绍
第1磁道数据编码最大记录长度为79个字符,可记录数字(0-9)、字母(A-Z)和其他一些符号(如括号、分隔符等)。第1磁道为只读磁道。一般记录了磁卡的使用类型、范围等一些标记性、说明性的信息。例如银行用卡中,第1磁道记录了用户的姓名,卡的有效使用期限以及其他的一些标记信息。
(2) 数据格式说明
序号 | 字段 | 动态(D)/静态(S) | 字段长度 | 备注 |
---|---|---|---|---|
1 | 起始标志 | S | 1 | 标明数据开始,为"%" |
2 | 格式代码 | S | 2 | 标明数据格式类型,为"99" |
3 | 主账号 | S | 13~19 | 标明可处理交易的发卡行和持卡者 |
4 | 字段分隔符 | S | 1 | 标明前一字段的结束,为"^" |
5 | 姓名 | S | 2~26 | 标明持卡者的姓氏、名字、称谓等 |
6 | 字段分隔符 | S | 1 | “^” |
7 | 失效日期 | S | 4 | 表示卡失效的日期 |
8 | 服务代码 | S | 3 | 标明银行卡可使用的服务类型 |
9 | 附加数据 | S | 可变 | 容纳对发卡行有意义的任意数据 |
10 | 结束标志 | S | 1 | 标明磁道上有意义数据的结束,为"?" |
11 | 纵向冗余校验位 | S | 1 | 用于数据校验 |
2、第二磁道
(1) 简单介绍
第2磁道数据编码最大记录长度为40个字符,只可记录数字(0-9)。第2磁道为只读磁道。一般用以记录用户的帐户信息、款项信息等等,当然还有一些银行所要求的特殊信息等。
(2) 数据格式说明
序号 | 字段 | 动态(D)/静态(S) | 字段长度 | 备注 |
---|---|---|---|---|
1 | 起始标志 | S | 1 | 标明数据开始,为";" |
2 | 主账号 | S | 13~19 | 标明可处理交易的发卡行和持卡者 |
3 | 字段分隔符 | S | 1 | 标明前一字段的结束,为"=" |
4 | 失效日期 | S | 4 | 表示卡失效的日期 |
5 | 服务代码 | S | 3 | 标明银行卡可使用的服务类型 |
6 | 附加数据 | S | 可变 | 容纳对发卡行有意义的任意数据 |
7 | 结束标志 | S | 1 | 标明磁道上有意义数据的结束,为"?" |
8 | 纵向冗余校验位 | S | 1 | 用于数据校验 |
3、第三磁道
(1) 简单介绍
第3磁道数据编码最大记录长度为107个字符,只可记录数字(0-9)。第3磁道为读写磁道。一般用以记录用户的帐户信息、款项信息等等,当然还有一些银行所要求的特殊信息等。
(2) 数据格式说明
序号 | 字段 | 动态(D)/静态(S) | 字段长度 | 备注 |
---|---|---|---|---|
1 | 起始标志 | S | 1 | 标明数据开始,为";" |
2 | 格式代码 | S | 2 | 标明数据格式类型,为"99" |
3 | 主账号 | S | 13~19 | 标明可处理交易的发卡行和持卡者 |
4 | 字段分隔符 | S | 1 | 标明前一字段的结束,为"=" |
5 | 国家代码 | S | 3 | 标明可以处理由银行卡产生交易的国家,为"156" |
6 | 货币代码 | S | 3 | 标明结算时使用的货币类型:3位数字 |
7 | 金额指数 | S | 1 | 决定周期授权量与本周期余额两字段的基值 |
8 | 周期授权量 | S | 4 | 表示在一个周期内累积交易不能超过的金额,由发卡机构自定授权量 |
9 | 本周期余额 | D | 4 | 当前周期内的可用金额 |
10 | 周期开始日期 | D | 4 | YDDD形式的4位数字,其中Y表示年度最后一个有效字符,DDD表示年度内天数的顺序号,其范围为001-366 |
11 | 周期长度 | S | 2 | 表示所有交易的累积值不能超过授权量的时间期限 |
12 | 密码重输次数 | D | 1 | 记录允许未成功输入密码的次数 |
13 | 个人授权控制参数 | D | 6 | 提供一种可选择的安全性能 |
14 | 交换控制符 | S | 1 | 标明银行卡适用于交换的范围 |
15 | PAN的TA和SR | S | 2 | 定义主账号(PAN)的账户类型和可提供的服务 |
16 | SAN-1的TA和SR | S | 2 | 定义第一辅助账号(SAN-1)的账户类型和可提供的服务 |
17 | SAN-2的TA和SR | S | 2 | 定义第二辅助账号(SAN-2)的账户类型和可提供的服务 |
18 | 失效日期 | S | 4 | 表示卡失效的日期 |
19 | 卡序列号 | S | 1 | 区别具有相同主账号(PAN)的卡,由发卡机构定义,在最初发卡或卡失效后换卡时赋值。 |
20 | 卡保密号 | D | 1 | 字段分隔符(FS),用于建立磁条所含数据与物理卡的联系 |
21 | SAN-1 | S | 最大12 | 标明第一个可选用的辅助账号 |
22 | 字段分隔符 | S | 1 | “=” |
23 | SAN-2 | S | 最大12 | 标明第二个可选用的辅助账户 |
24 | 字段分隔符 | S | 1 | “=” |
25 | 传递标志 | S | 1 | 表明交换信息是否包含附加数据的内容 |
26 | 加密校验数 | S | 6 | 通过使用加密公式提供一种校验该磁道上数据完整性的方法。 |
27 | 附加数据 | D | 可变 | 容纳对发卡行有意义的任意数据 |
28 | 结束标志 | S | 1 | “?” |
29 | 纵向冗余校验位 | D | 1 | 用于数据校验 |
五、具体字段说明
1、起始标志(STX)
用途:标明数据的开始。
格式:1个字符。
内容:第1磁道为"%",第2、3磁道为";"。
2、格式代码(FC)
用途:标明该磁道的数据格式类型。
格式:2位数字。
内容:“99”。
3、主账号(PAN)
用途:标明可以处理交易的发卡行和持卡人。
格式:13至19个字符。
内容:由发卡行标识代码、自定义位和校验位组成,其中发卡行标识代码(BIN)由6位数字表示,第一位固定为"9",后5位由BIN注册管理机构分配;自定义为由6-12位数字组成;校验位根据校验位前的数字计算得到,通过模10"隔位乘2加"校验数算法计算得到,详见附录1 JRT 0008-2000 银行卡发卡行标识代码及卡号。
4、字段分隔符(FS)
用途:标明前一字段的结束。
格式:1个字符。
内容:第1磁道为"^",第2、3磁道为"="。
5、姓名(NM)
用途:标明持卡者的姓氏、名字、称谓等。
格式:2至26个字符。
内容:由姓氏、姓氏分隔符、名字或首写字母、分隔符(如需要时)、中间名或首写字母、结尾圆点(当其后为称谓时)、称谓组成。最小编码数据应为一个字母字符(如姓氏)加上姓氏分隔符。
6、失效日期(ED)
用途:表示卡失效的日期。
格式:YYMM形式的4位数字,其中YY表示卡失效年度的后2个字符;MM表示年度内月份的顺序号,规定在该月份的最后一天后,卡失效。当YYMM为0000时,表示该卡无失效日期。
7、服务代码(SC)
用途:标明银行卡可使用的服务类型。
格式:3位数字,其中第一位为交换控制符。
内容:交换控制符可在2-9间选用,服务代码的后两位在下列区域中分配:00-49由国际标准化组织分配和发布;50-59由国内标准化相关组织分配和发布;60-99由发卡行酌情使用。目前后两位已分配的服务代码如下图:
8、附加数据
用途:容纳对银行卡发行者有意义的任意数据。
格式:可变。但应保证该磁道字符总数不得超过最大编码长度。
内容:具体内容由发卡行自定。
9、结束标记(ETX)
用途:标明磁道上有意义数据的结束。
格式:1位字符。
内容:"?"。
10、纵向冗余校验符(LRC)
用途:用于对磁道数据进行校验。
格式:1个字符。
内容:LRC字符中的每一位(不包括奇偶校验位)的值,使磁道上所有字符相应位位置上的编码为"1"的总数(包括起始符、数据、结束符和LRC字符)为偶数。详见附录2 GB/T15120.2-2012与附录5 lrc检验的java实现。
11、国家代码
用途:标明可以处理由银行卡产生交易的国家。
格式:3位数字。
内容:“156”(见GB/T/ 2659)。
12、货币代码
用途:标明结算时使用的货币类型。
格式:3位数字。
内容:见GB/T 12406。
13、金额指数
用途:决定周期授权量与本周期余额两字段的基值。
格式:1位数字。
内容:表示周期授权量与本周期余额两字段必须乘以10的一个幂指数的值,以此表示货币金额。
14、周期授权量
用途:表示在一个周期内累积交易不能超过的金额。
格式:4位数字。
内容:由发卡行自定授权量。
15、本周期余额
用途:表示当前周期内的可用金额。
格式:4位数字。
内容:在新的周期开始时,该字段等于周期授权量,消费后逐次递减,余额存本字段。
16、周期开始日期
用途:表示一个新周期开始的日期。
格式:YDDD形式的4位数字,其中Y表示年度最后一个有效字符,DDD表示年度内天数的顺序号,其范围为001-366。
17、周期长度
用途:表示所有交易的累积值不能超过授权量的时间期限。
格式:2位数字。
内容:如下图
18、密码重输次数
用途:记录允许未成功输入密码的次数。
格式:1位数字。
内容:该字段在发卡和正确输入密码时被赋初值,初值由各发卡行自定义;当输入密码不正确时该字段减1。
19、个人标识代码控制参数(PINPARM)
用途:提供一种可选择的安全性能。
格式:6位数字。
内容:保密算法由各发卡行自定。
20、交换控制符
用途:标明银行卡适用于交换的范围。
格式:1位数字。
内容:如下图
21、主账号的账户类型(TA)和服务约束(SR)
用途:定义主账号(PAN)的账户类型和可提供的服务。
格式:2位数字。
内容:第1位数字为账户类型,其中0–主账号(PAN)未在第3磁道上编码
1–储蓄账户
2–现金或支票账户
3–信用卡账户
4–适用于多种账户类型的通用账户
5–付息现金或支票账户
6~8–保留待分配
9–发卡行内部使用,但不能交换第2位数字为服务约束,其中
0–无约束
1–无现金服务
2–无销售点(POS)服务
3–无现金和销售点(POS)服务
4–要求肯定的授权
5~7–保留待分配
8~9–发卡行内部使用
22、第一辅助账号的账户类型和服务约束
用途:同【21】的定义一致,但此字段内容涉及第一辅助账号(SAN-1)中包含的账号。
格式:2位数字。
内容:同【21】。
23、第二辅助账号的账户类型和服务约束
用途:同【21】的定义一致,但此字段内容涉及第二辅助账号(SAN-2)中包含的账号。
格式:2位数字。
内容:同【21】。
24、卡序列号
用途:区别具有相同主账号(PAN)的卡(同时或连续发行)。
格式:1位数字。
内容:由发卡行定义,在最初发卡或卡失效后换卡时赋值。每次增加卡或发新卡时,该字段加1。
25、卡保密号
用途:用于建立磁条所含数据与物理卡的联系。
格式:字段分隔符(FS)。
内容:FS–表示卡保密号字段不在第3磁道上编码。
26、第一辅助账号(SAN-1)
用途:标明第一个可选用的辅助账号。
格式:最大12个字符。
内容:由发卡机构酌情使用。长度为0时,表示不使用第一辅助账号。
27、第二辅助账号(SAN-2)
用途:标明第二个可选用的辅助账号。
格式:最大12个字符。
内容:由发卡机构酌情使用。长度为0时,表示不使用第二辅助账号。
28、传递标志
用途:提供可减少传送交换信息长度的功能。它表明交换信息是否包含附加数据的内容。
格式:1个字符。
内容:0表示包括所有附加数据;1表示不包括附加数据;2~9无效。
29、加密校验数(CCD)
用途:通过使用加密公式提供一种校验该磁道数据上数据完整性的方法。
格式:6个字符。
内容:加密方法由各发卡行自定。
六、磁道数据解析例子
1、第2磁道
例子:
62285600000000276=0000520260408650000
根据第2磁道数据格式,可将上述数据分解成:
(主账号=62285600000000276)
(=)
(失效日期=0000)此卡无失效日期
(服务代码=520)国内使用,必须获得发卡行或发卡行代理的联机授权,服务领域无限制,要求输入PIN。
(附加数据=260408650000)
2、第3磁道
例子:
9962285600000000276=1561560500050000000013341865514000000001=00000000273=000000018=000000026040100018
根据第3磁道数据格式,可将上述数据分解成:
(格式代码=99)
(主账号=62285600000000276)
(=)
(国家代码=156)中国
(货币代码=156)CNY-人民币元
(金额指数=0)
(周期授权量=5000)
(本周期余额=5000)
(周期开始日期=0000)
(周期长度=01)1天
(密码重输次数=3)
(个人授权控制参数=341865)
(交换控制符=5)限制在国内系统内交换
(PAN的TA和SR=14)储蓄账户,需要肯定的授权
(SAN-1的TA和SR=00)无编码
(SAN-1的TA和SR=00)无编码
(失效日期=0000)无失效日期
(卡序列号=1)
(卡保密号为=)
(SAN-1=00000000273)
(=)
(SAN-2=000000018)
(=)
(传递标志=0)包括所有附加信息
(加密校验数=000000)
(附加数据=26040100018)
附录
- JRT 0008-2000 银行卡发卡行标识代码及卡号
- GB/T15120.2-2012
- 关于磁卡的基本常识
- 磁条磁道信息
- lrc检验的java实现
- 中国银联标识磁条卡磁道数据格式测试指南
磁条卡知识学习与数据解析相关推荐
- Python学习 Day43 数据解析-BeautifulSoup 07
BeautifulSoup 解析数据 一.BeautifulSoup概述 1.BeautifulSoup 是一个可以从HTML或XML文档中提取数据的Python库 功能简单强大.容错能力高.文档相对 ...
- linux下json数据解析,JSON数据解析 - iOS学习笔记_Linux编程_Linux公社-Linux系统门户网站...
在之前的<iOS学习--xml数据解析(九)>http://www.linuxidc.com/Linux/2014-02/97020p9.htm 介绍了xml数据解析,这一篇简单介绍一下J ...
- 【大数据】学习大数据前需要掌握的知识
一谈到大数据技术,很多人首先想到的是数学,大概是因为数字在数学体系中稳固的位置吧,这也是理所当然的.大数据时代已经被抄的很热了,这个行业目前已经逐渐成熟,想学习大数据开发的人越来越多.每天我们在互联网 ...
- IC卡与磁条卡的数据区别
银联交易中IC卡和磁条卡在数据组装中的区别 1:IC卡必须要有IC卡数据域[55域] 2:服务点输入方式码[以含PIN为例]:IC卡默认为051,磁条卡默认为021[22域] 3:IC卡有IC卡条件码 ...
- 大数据入门培训之大数据开发基础知识学习
在目前相信大多数IT开发人员对于人工智能+大数据并不陌生,使用的场景也越来越广,日常开发中前端同学也逐渐接触了更多与大数据相关的开发需求.因此对大数据知识也有必要进行一些学习理解,带大家来学习了解一下 ...
- 学习大数据技术,需要具备哪些【数学知识】?你了解了吗?
谈起大数据技术,很多人都觉得是高大上的一门技术,学起来应该是困难重重!其实对于大数据技术而言,难的不是大数据技术本身,而是需要太多的基础知识,比如说:数学知识.英语能力.编程基础等等. 数学,我们从小 ...
- 想学习大数据要掌握些什么知识?
从前几年到现在所谓的大数据时代,移动互联网.物联网.云计算.人工智能.机器人.大数据等前沿信息技术领域,逐个火了一遍,什么是大数据,大数据的技术范畴包括那些,估计很多人都是根据自己所熟悉的领域在盲人摸 ...
- 学习大数据的第23天——Set集合的小练习以及Map相关的知识
学习大数据的第23天--Set集合的小练习以及Map相关的知识 Set的小练习 HashSet集合存储自定义对象并遍历. 如果对象的成员变量值相同即为同一个对象 //创建集合对象 HashSet< ...
- python爬虫学习笔记-网络爬虫的三种数据解析方式
爬虫的分类 1.通用爬虫:通用爬虫是搜索引擎(Baidu.Google.Yahoo等)"抓取系统"的重要组成部分.主要目的是将互联网上的网页下载到本地,形成一个互联网内容的镜像备份 ...
- Android学习之JSON数据解析
在Android应用开发中,常用的数据交换格式有XML和JSON,这两种方式各有各的好处,我们在特定的应用开发中可以选择合适的一种.下面来看一下JOSN数据解析: 例子永远是最好的教程,下面我们来看个 ...
最新文章
- linux定时任务crontab 时间,shell后台定时任务时crontab的用法
- 为什么我们批评C++?又爱又恨的垃圾回收机制
- boost::sort模块实现带有右移函子排序示例的整数排序的测试程序
- 第3章 Python的数据结构、函数和文件
- 嵌入式linux启动根文件系统,嵌入式Linux根文件系统制作和挂载
- python scikit learn 关闭开源_慕课|Python调用scikit-learn实现机器学习(一)
- [K/3Cloud] 调用其他界面时通过Session传递对象参数
- 开放域文本分类技术思考
- OpenVz Centos4 Oracle 10g VE
- 《别闹了,费曼先生》
- imatest白平衡测试结果解析
- mysql查看表被哪个进程锁住_查询mysql 哪些表正在被锁状态
- 趣图:五彩斑斓的黑,找到了
- 用python写一个躲避球十分简单的小游戏
- 网站可行性报告范文_嵩县写可行性研究报告项目报告范文
- 监控显示登录服务器超时,监控连接服务器超时怎么解决
- 【180928】BlackJack游戏源码
- 基于YOLOV3实现交通标志识别(Pytorch实现)
- 计算机英语教程第五版答案解析,计算机专业英语教程(第5版)翻译完整版
- 4.数据分析-Pandas_①
热门文章
- 最好用的开源免费笔记软件IdeaNote
- 短信验证码平台哪家速度快又稳定,推荐下?
- 颠覆思维,你也能懂量子力学
- 固态硬盘是什么接口_PCI-E接口的固态硬盘和SATA接口的有什么区别?
- 3D点云目标检测算法综述
- 使用gca警告: Calling gca() with keyword arguments was deprecated in Matplotlib 3.4.
- MRCP协议学习笔记
- es自建搜索词库_ES——中文分词以及词库扩展
- fmodex.dll已加载,但找不到入口点怎么解决?
- elasticsearch源码:unicast列表解析