多渠道则
(一) 基础知识
1byte=8bit
1byte=2个16进制数
(二) 名词解释
卡序列号(F23):用于区分相同PAN(相同卡号)的不同卡,芯片卡交易时该域需要上传,否则交易不通过。银联会视为作弊卡。
服务点PIN获取码(F26):指服务点设备接受PIN的最大长度。范围06-12,06表示输入6位密码。
受理机构标志码(F32):是已被批准入网,能为ATM机提供取现服务或为商户提供收单服务的入网机构。如各大银行等,收单机构可以有多个,由公司去谈合作。
发送机构标志码(F33):由银联分配给渠道接入机构的机构代码,是已被批准入网,发送一个交易请求或通知报文的机构。如银联分配给我们的机构代码D0****07。
受卡机终端标志码(F41):终端号,和第33域一样由银联分配的。该标志码与42域的组合在代理机构的网络中必须唯一标志一个终端。
受卡方标志码:即商户代码,由受理机构分配,如中信银行、通联都分配了多个用于不同交易的商户给我们(各商户费率不同)
(三) 报文结构
报文长度 |
应用数据(ISO8583) |
N4 |
交易数据(不定长度) |
交易数据 = bitmap(128位)+ 报文域数据
Bitmap:由0和1组成,多渠道一共有128域,所以共有128位0和1
0代表没有,1代表有
(四) 报文域属性和数据格式(以消费报文为例)
================================
[F002] type=[ LLVAR] len=[016] value=[622588****255749]
[F003] type=[ ALPHA] len=[006] value=[190000]
[F004] type=[NUMERIC] len=[012] value=[000000000001]
[F007] type=[ DATE10] len=[010] value=[0603091207]
[F011] type=[NUMERIC] len=[006] value=[800001]
[F012] type=[ TIME] len=[006] value=[091433]
[F013] type=[ DATE4] len=[004] value=[0603]
[F022] type=[ ALPHA] len=[003] value=[021]
[F025] type=[ ALPHA] len=[002] value=[82]
[F026] type=[ ALPHA] len=[002] value=[06]
[F032] type=[ LLVAR] len=[008] value=[03023320]
[F033] type=[ LLVAR] len=[008] value=[D0****77]
[F035] type=[ LLVAR] len=[037] value=[6225885741255749=
00001012964900171056]
[F036] type=[ LLLVAR] len=[104] value=[99622588****255749=
1561560500050000000015171056214000000000=5741255749=000000000=00000000571000000000000]
[F037] type=[ ALPHA] len=[012] value=[150603800001]
[F041] type=[ ALPHA] len=[008] value=[D0000077]
[F042] type=[ ALPHA] len=[015] value=[3023302****9901]
[F043] type=[ ALPHA] len=[040] value=[
]
[F049] type=[ ALPHA] len=[003] value=[156]
[F052] type=[ ALPHA] len=[008] value=[72892A61]
[F053] type=[NUMERIC] len=[016]value=[2600000000000000]
[F060] type=[ LLLVAR] len=[015] value=[000006100502000]
[F128] type=[ ALPHA] len=[008] value=[EF0E332F]
3033383330323030f23804c1b8e0981000000000000000013136363232353838353734313235353734393139303030303030303030303030303030313036303330393132
303738303030303130393134333330363033303231383230363038303330323333323030384430303030303737333736323235383835
3734313235353734393d30303030313031323936343930303137313035363130343939363232353838353734313235353734393d3135
36313536303530303035303030303030303031353137313035363231343030303030303030303d353734313235353734393d30303030
30303030303d303030303030303035373130303030303030303030303031353036303338303030303144303030303037373330323333
3032363031313939303120202020202020202020202020202020202020202020202020202020202020202020202020202020313536728
92a611ad7f44b32363030303030303030303030303030303135303030303036313030353032303030
4546304533333246
黄色背景:报文长度0383
红色背景:消息类型0200
绿色背景:bitmap,转成2进制后:
111100100011100000000100110000011011100011100000100110000001000000000000000
00000000000000000000000000000000000000000000000000001
“1”代表包含该位置的域
“0”代表不包含该位置的域
首位如果为0表示只有64bit,为1表示有128bit
如下解析图:
(五) 密钥简介
1) 密钥的产生
我们与银联
--------------------------------------------------------------------------------------------------------------------
主密钥:银联将分配的主密钥分段分人保管,使用时由2人共同输入加密机,然后加密机会产生用于交易的密文主密钥,长度128bit
PIN和MAC:往银联发送签到报文返回,返回后通过加密机生成用于交易的密文密钥,PIN长度128bit,MAC长度64bit
--------------------------------------------------------------------------------------------------------------------
我们与POS客户端
-------------------------------------------------------------------------------------------------------------------
母主密钥:人工定义,通过加密机生成用于交易的密文母主密钥,长度128bit
主密钥:由密文母主密钥通过加密机分发,长度128bit
PIN和MAC:由分发的主密钥(LMK)通过加密机产生,PIN长度128bit,MAC长度64bit
(六) PIN的加密与解密
1) PIN格式
PIN的格式应符合ISO公布的ANSI X9.8标准中PIN的两种格式之一:
------ANSI X9.8(不带主账号信息)
位置 |
长度 |
说明 |
1 |
1 BYTE |
PIN的长度 |
2 |
7BYTE |
4-12位数字的PIN(每个数字占4个BIT),不足部分右补F |
-----ANSIX9.8(带主账号信息)
PINBLOCK为PIN按位异或主账号(PAN)
其中PIN格式如下表所示:
位置 |
长度 |
说明 |
1 |
1 BYTE |
PIN长度 |
2 |
7 BYTE |
4-12位数字的PIN(每个字符占4个BIT),不足部分右补F |
PAN格式如下表所示:
位置 |
长度 |
说明 |
1 |
2BYTE |
%H0000 |
3 |
6BYTE |
取主账号的右12位(不包括最右边的校验位),主账号不足12位左补0 |
示例:
PIN明文:123456
磁卡上的PAN:1234 56789012 3456 78
截取下的PAN:6789 01234567
则用于PIN加密的PAN为:0x00 0x000x67 0x89 0x01 0x23 0x45 0x67
PIN为:0X06 0X12 0X34 0X56 0XFF 0XFF 0XFF 0XFF
两者异或的PINBLOCK为:0X06 0X12 0X53 0XDF 0XFE 0XDC 0XBA 0X98
2) PIN加密算法
使用双倍长密钥算法,3DES
(七) MAC的加密
MAC BLOCK的获取,根据消息类型不同,所要加密的域也是不同的,使用ANSI-X9.9算法加密。
1) 消费类报文域的选择
2) 转账类报文域的选择
3) MAC域的构成规则
--------------------------MAC字符的选择
对所选择的MAC报文域,应进一步作字符处理。出去一些冗余信息,以提高MAC的质量。处理方法如下:
a) 带长度值的域在计算MAC时应包含其长度值信息;
b) 在域和域之间插入一个空格;
c) 所有小写字母转成大写字母;
d) 除了字母(A-Z),数字(0-9),空格,逗号(,)和点号(.)以外的字符都删去;
e) 删除所有域的起始空格和结尾空格;
f) 多余一个的连续空格,由一个空格代替。
-------------------------MAC BLOCK的构成
数据从报文中选择出来后,经MAC字符选择处理,然后构成MAB,构成MAC的方法是:
将MAC字符选择处理后的数据按64bit划分成64bit的块,一直划分到数据的最后一块,它的位数小于或等于64bit,不满64bit时补二进制0。
(八) 拓展知识
磁道数据格式:
1) 第一磁道
2) 第二磁道
第3磁道
略,详情请百度搜索“磁道数据格式”,网上文章一大堆
看了上面的后,这里才是重点。1磁道和2磁道信息中都包含了服务代码,由此我们可以判断出该卡是磁条卡还是芯片卡。当磁道信息中的服务代码是以“6”或“2”开始时表明该卡是IC卡。