磁卡磁轨数据格式
标准和概要
1)遵循标准ISO7811;2)磁卡分成3个磁轨:A B C;
3)因为刷卡时的方向有两个, 所以数据也有正向和反向之分, 反向数据在解析时可以先按位颠倒,再按正向方式解析;
4)数据位序是低位在前,高位在后;
5)一般芯片读取的磁卡数据1和0相反的, 解析前需要取反(~);
6)常见的磁卡读取芯片有PA1100;
磁轨A
数据每7位为一个字符,最高位是奇校验位,有效数据6位;//7位磁卡数据对应的字符
final static char[] CS7 =
" !'#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_".toCharArray();
以';'为起始符, '?'为结束符;
磁轨B和C
数据每5位为一个字符,最高位是奇校验位,有效数据4位;//5位磁卡数据对应的字符
final static char[] CS5 = "0123456789:;<=>?".toCharArray();
以';'为起始符, '?'为结束符, '='为分隔符
银联卡B轨道数据格式
序号 | 名称 | 动态/静态 | 字段长度 | 备注 |
1 | 起始标志 | 静态 | 1 | '分号' |
2 | 主账号 | 静态 | 13-19 | |
3 | 字段分隔符 | 静态 | 1 | '=' |
4 | 失效日期 | 静态 | 4 | YYMM |
5 | 服务代码 | 静态 | 3 | |
6 | 附加数据 | 静态 | 可变 | |
7 | 结束标志 | 静态 | 1 | '问号' |
8 | 纵向冗余校验位 | 静态 | 1 | GB/T 15120.2 |
银联卡C轨道格式
序号 | 名称 | 动态/静态 | 字段长度 | 备注 |
1 | 起始标志 | 静态 | 1 | “分号” |
2 | 格式代码 | 静态 | 2 | “99” |
3 | 主账号 | 静态 | 13-19 | |
4 | 字段分隔符 | 静态 | 1 | “=” |
5 | 国家代码 | 静态 | 3 | “156” , 可选 |
6 | 货币代码 | 静态 | 3 | |
7 | 金额指数 | 静态 | 1 | |
8 | 周期授权量 | 静态 | 4 | 发卡行自定 |
9 | 本周期余额 | 动态 | 4 | |
10 | 周期开始日期 | 动态 | 4 | Y动态动态动态 |
11 | 周期长度 | 静态 | 2 | |
12 | 密码重输次数 | 动态 | 1 | |
13 | 个人授权控制参数 | 动态 | 6 | 另行规定 |
14 | 交换控制符 | 静态 | 1 | |
15 | PAN的TA和SR | 静态 | 2 | |
16 | 静态AN-1的TA和SR | 静态 | 2 | |
17 | 静态AN-2的TA和SR | 静态 | 2 | |
18 | 失效日期 | 静态 | 4 | YYMM |
19 | 卡序列号 | 静态 | 1 | |
20 | 卡保密号 | 动态 | 1 | |
21 | 静态AN-1 | 静态 | 最大12 | |
22 | 字段分隔符 | 静态 | 1 | “=” |
23 | 静态AN-2 | 静态 | 最大12 | |
24 | 字段分隔符 | 静态 | 1 | “=” |
25 | 传递标志 | 静态 | 1 | |
26 | 加密校验数 | 静态 | 6 | 另行规定 |
27 | 附加数据 | 动态 | 可变 | |
28 | 结束标志 | 静态 | 1 | “问号” |
29 | 纵向冗余校验位 | 动态 | 1 | GB/T 15120.2 |