银联多渠道平台报文结构

来源:互联网 发布:源码屋 编辑:程序博客网 时间:2024/05/16 18:26

多渠道则

(一)   基础知识

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卡。

1 0