银联ISO8583报文解析过程
主密钥:
aabbccddeeff11223344556677889900
1、从签到报文中获取工作密钥,包括MACKEY明文,PINKEY明文
签到:
12-03-31 16:38:09---->[Receive]
02 00 91 60 00 03 00 00 60 31 00 31 54 32 08 00 00 20 00 00 00 C0 00 16 00 00 39 31 32 33 34 35 36 37 36 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 00 11 00 00 00 03 00 30 00 29 53 65 71 75 65 6E 63 65 20 4E 6F 31 36 33 30 38 31 30 33 38 35 4E 4C 32 34 37 35 33 36 00 03 30 31 20 03 11
TDUP:60 00 03 00 00 60
报文头:31 00 31 54 32
数据类型:08 00
位图:00 20 00 00 00 C0 00 16(0000 0000 0010 0000 0000 0000 0000 0000 0000 0000 1100 0000 0000 0000 0001 0110)
11域(受卡方系统跟踪号):00 00 39
41域(受卡机终端标识码):31 32 33 34 35 36 37 36
42域(受卡方标识码):31 32 33 34 35 36 37 38 39 30 31 32 33 34 35
60域(自定义域):00 11 00 00 00 03 00 30
62域(自定义域):00 29 53 65 71 75 65 6E 63 65 20 4E 6F 31 36 33 30 38 31 30 33 38 35 4E 4C 32 34 37 35 33 36
63域(自定义域):00 03 30 31 20
12-03-31 16:38:09---->[Send]
02 01 21 60 00 00 00 03 60 31 00 31 54 32 08 10 00 38 00 01 0A C0 00 14 00 00 39 16 38 09 03 31 08 01 03 10 00 30 34 36 38 37 39 30 38 37 35 36 34 30 30 31 32 33 34 35 36 37 36 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 00 11 00 00 00 03 00 30 00 40 8B 3D 47 86 55 51 F1 FB 54 8F D4 72 5C C5 0A 57 FF EF A8 D9 8B 3D 47 86 55 51 F1 FB 00 00 00 00 00 00 00 00 6F B2 3E AD 03 41
TDUP: 60 00 00 00 03 60
报文头: 31 00 31 54 32
数据类型:08 10
位图: 00 38 00 01 0A C0 00 14 (0000 0000 0011 1000 0000 0000 0000 0001 0000 1010 1100 0000 0000 0000 0001 0100)
11域(受卡方系统跟踪号):00 00 39
12域(受卡方所在地时间):16 38 09
13域( 受卡方所在地日期):03 31
32域(受理方标识码):08 01 03 10 00
37域(检索参考号):31 32 33 34 35 36 37 38 39 30 31 32 33 34 35
39域(应答码): 30 30
41域(受卡机终端标识码): 31 32 33 34 35 36 37 36
42域(受卡方标识码):31 32 33 34 35 36 37 38 39 30 31 32 33 34 35
60域(自定义域):00 11 00 00 00 03 00 30
62域(自定义域):00 40 8B 3D 47 86 55 51 F1 FB 54 8F D4 72 5C C5 0A 57 FF EF A8 D9 8B 3D 47 86 55 51 F1 FB 00 00 00 00 00 00 00 00 6F B2 3E AD
(PIN的16个密文) (checkvalue) (MAC的8个密文) (checkvalue)
PINKEY工作密钥明文:1122334455667788 9900112233445566 将PINKEY工作密钥与0X 00 00 00 00 00 00 00 00进行3DES运算得:FFEFA8D9 607ED326
MACKEY工作密钥明文:1122334455667788 将MACKEY工作密钥与0X 00 00 00 00 00 00 00 00进行3DES运算得:6FB23EAD 0534752B
2、根据上面得到的MACKEY,PINKEY,计算出用户输入的密码,以及计算出这个报文的MAC值。(填写XX 的部分为MAC填写的位置)
12-03-31 16:39:13---->[Receive]
02 01 70 60 00 03 00 00 60 31 00 31 54 32 02 00 30 20 04 C0 30 C0 98 11 00 00 00 00 00 00 00 11 12 00 00 40 02 10 00 12 37 62 21 50 55 00 00 00 01 04 5D 49 12 12 02 86 06 00 00 00 01 04 99 62 21 50 55 00 00 00 01 04 5D 15 61 56 00 00 00 00 00 00 00 03 00 00 00 11 40 00 04 91 21 D0 00 00 00 00 00 0D 00 00 00 00 00 00 D0 00 00 00 28 60 60 00 31 32 33 34 35 36 37 36 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 31 35 36 DA 86 E7 B7 74 2E FA E4 26 00 00 00 00 00 00 00 00 14 22 00 00 03 00 05 01 XX XX XX XX XX XX XX XX 03 57
TDUP:60 00 03 00 00 60
报文头:31 00 31 54 32
数据类型:02 00
位图:30 20 04 C0 30 C0 98 11 (0011 0000 0010 0000 0000 0100 1100 0000 0011 1100 0000 1001 1000 0001 0001)
3域(交易处理码):00 00 00
4域(交易金额):00 00 00 00 11 12
11域(受卡方系统跟踪号):00 00 40
22域(服务点输入方式码):02 10
25域(服务点条件码):00
26域(服务点PIN获取码):12
35域(2磁道数据):37 62 21 50 55 00 00 00 01 04 5D 49 12 12 02 86 06 00 00 00
36域(3磁道数据)::01 04 99 62 21 50 55 00 00 00 01 04 5D 15 61 56 00 00 00 00 00 00 00 03 00 00 00 11 40 00 04 91 21 D0 00 00 00 00 00 0D 00 00 00 00 00 00 D0 00 00 00 28 60 60 00
41域(受卡机终端标识码):31 32 33 34 35 36 37 36
42域(受卡方标识码):31 32 33 34 35 36 37 38 39 30 31 32 33 34 35
49域(交易货币代码): 31 35 36
52域(个人标识码数据): DA 86 E7 B7 74 2E FA E4
53域(安全控制信息):26 00 00 00 00 00 00 00
60域(自定义域):00 14 22 00 00 03 00 05 01
64域(报文鉴别码):XX XX XX XX XX XX XX XX
MAC值的运算过程:3130303844454137 (数据类型到63域进行MACKEY的DES运算)
02 00 30 20 04 C0 30 C0 XOR 98 11 00 00 00 00 00 00 得:9A11302004C030C0
9A11302004C030C0 XOR 00 11 12 00 00 40 02 10 得:9A002220048032D0
9A002220048032D0 XOR 00 12 37 62 21 50 55 00 得:9A12154225D067D0
9A12154225D067D0 XOR 00 00 01 04 5D 49 12 12 得:9A121446789975C2
9A121446789975C2 XOR 02 86 06 00 00 00 01 04 得:98941246789974C6
98941246789974C6 XOR 99 62 21 50 55 00 00 00 得:01F633162D9974C6
01F633162D9974C6 XOR 01 04 5D 15 61 56 00 00 得:00F26E034CCF74C6
00F26E034CCF74C6 XOR 00 00 00 00 00 03 00 00 得:00F26E034CCC74C6
00F26E034CCC74C6 XOR 00 11 40 00 04 91 21 D0 得:00E32E03485D5516
00E32E03485D5516 XOR 00 00 00 00 00 0D 00 00 得:00E32E0348505516
00E32E0348505516 XOR 00 00 00 00 D0 00 00 00 得:00E32E0398505516
00E32E0398505516 XOR 28 60 60 00 31 32 33 34 得:28834E03A9626622
28834E03A9626622 XOR 35 36 37 36 31 32 33 34 得:1DB5793598505516
1DB5793598505516 XOR 35 36 37 38 39 30 31 32 得:28834E0DA1606424
28834E0DA1606424 XOR 33 34 35 31 35 36 DA 86 得:1BB77B3C9456BEA2
1BB77B3C9456BEA2 XOR E7 B7 74 2E FA E4 26 00 得:FC000F126EB298A2
FC000F126EB298A2 XOR 00 00 00 00 00 00 00 14 得:FC000F126EB298B6
FC000F126EB298B6 XOR 22 00 00 03 00 05 01 00 得:DE000F116EB799B6
结果转换成十六个HEXDECIMAL:4445303030463131 3645423739394236
取前8个用MACKEY对其进行加密得:E3B1ABE3EDB7E10C
将D7C67DC434FECBC1与后八个字节3036344535363432异或得:E7F0498101C8FFF3
得到的结果进行单倍长mac加密得:63502A0570BCE23F,转换为十六个HEXDECIMAL:3633353032413035 3730424345323346,取前8个字节为MAC值,即:3633353032413035
用户输入的密码:
流程:
1:获取PAN:卡号右边起第2位取出12位,则为:55 00 00 00 01 04
2:用于PIN加密的PAN为:00 00 55 00 00 00 01 04
3: PINBLOCK:06 11 22 33 FF FF FF FF (123456为用户输入PIN)
4:2和3异或得到:06117733FFFFFEFB
5:用PINKEY明文对4进行3DES加密,得到52域;(PINKEY 明文:1122334455667788 9900112233445566)
52域(个人标识码数据): DA 86 E7 B7 74 2E FA E4
53域(安全控制信息):26 00 00 00 00 00 00 00 (2表示为带主账号加密)
个人账号为:62 21 50 55 00 00 00 01 04 5
即:磁卡上的PAN为:55 00 00 00 01 04
则用于PIN加密的主账号为:0x00 0x00 0x55 0x00 0x00 0x00 0x01 0x04,与PINBLOCK异或的结果为:
DA 86 E7 B7 74 2E FA E4(PINKEY加密得密文),06117733FFFFFEFB(明文),则PINBLOCK为:06112233FFFFFFFF
用户输入的密码为:112233
12-03-31 16:39:14---->[Send]
02 01 73 60 00 00 00 03 60 31 00 31 54 32 02 10 70 3A 00 81 0E D0 8C 11 19 62 21 50 55 00 00 00 01 04 50 00 00 00 00 00 00 00 11 12 00 00 40 16 39 13 03 31 03 31 00 08 01 03 10 00 30 34 36 38 37 39 30 38 37 35 36 34 31 32 33 35 36 34 30 30 31 32 33 34 35 36 37 36 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 22 38 31 35 36 38 31 35 36 38 31 35 31 31 35 36 38 31 35 36 38 31 30 31 35 36 26 00 00 00 00 00 00 00 00 20 30 32 31 30 31 35 36 43 30 30 30 30 30 31 30 30 30 30 30 30 00 14 22 00 00 03 00 05 01 XX XX XX XX XX XX XX XX 03 FC
TDUP:60 00 00 00 03 60
报文头:31 00 31 54 32
数据类型:02 10
位图:70 3A 00 81 0E D0 8C 11 (0111 0000 0011 1010 0000 0000 1000 0001 0000 1110 1101 0000 1000 1100 0001 0001)
2域:(主账号)19 62 21 50 55 00 00 00 01 04 50
3域:(交易处理码) 00 00 00
4域:(交易金额)00 00 00 00 11 12
11域:(受卡方系统跟踪号)00 00 40
12域:(受卡方所在地时间) 16 39 13
13域:(受卡方所在地日期)03 31
15域:(清算日期)03 31
25域:(服务点条件码)00
32域:(受理方标识码)08 01 03 10 00
37域:(检索参考号)30 34 36 38 37 39 30 38 37 35 36 34
38域:(授权标识应答码)31 32 33 35 36 34
39域:(应答码)30 30
41域:(受卡机终端标识码)31 32 33 34 35 36 37 36
42域:(受卡方标识码)31 32 33 34 35 36 37 38 39 30 31 32 33 34 35
44域:(附加响应数据)22 38 31 35 36 38 31 35 36 38 31 35 31 31 35 36 38 31 35 36 38 31 30
49域:(交易货币代码)31 35 36
53域:( 安全控制信息)26 00 00 00 00 00 00 00
54域:(余额)00 20 30 32 31 30 31 35 36 43 30 30 30 30 30 31 30 30 30 30 30 30
60域:(自定义域)00 14 22 00 00 03 00 05 01
64域:(报文鉴别码)XX XX XX XX XX XX XX XX
MAC值:3035333637383245
3、解下面报文,详细写出各个域的内容,并说明这个报文的交易类型。
12-03-31 16:39:44---->[Receive]
02 01 16 60 00 03 00 00 60 31 00 31 54 32 02 00 70 20 04 80 0C C0 80 19 19 62 21 50 55 00 00 00 01 04 50 20 00 00 00 00 00 00 11 12 00 00 41 01 20 00 30 34 36 38 37 39 30 38 37 35 36 34 31 32 33 35 36 34 31 32 33 34 35 36 37 36 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 31 35 36 00 14 23 00 00 03 00 05 00 00 12 00 00 03 00 00 40 38 42 41 45 41 30 32 42 03 AB
TDUP:60 00 03 00 00
报文头:60 31 00 31 54 32 60:磁条卡金融支付 31:2010年银联POS规范版本 0:正常交易状态 0:无处理要求 31 54 32:2010年银联POS规范版本
数据类型:02 00 金融类请求
位图:70 20 04 80 0C C0 80 19 具体存在哪些域(0111 0000 0010 0000 0000 0100 1000 0000 0000 1100 1100 0000 1000 0000 0001 1001)
【2】(主账号):19 62 21 50 55 00 00 00 01 04 50 主账号:6221505500000001045
【3】(交易处理码):20 00 00 20:退款 00 00:默认
【4】(交易金额):00 00 00 00 11 12 交易金额:11.12元
【11】(受卡方系统跟踪号):00 00 41 POS为每一笔交易产生的顺序编号(1-999999)
【22】(服务点输入方式码):01 20 01:手工 2:交易中不保护PIN
【25】(服务点条件码):00 正常提交,与联网联合规范取值关系一致
【37】(检索参考号):30 34 36 38 37 39 30 38 37 35 36 34 POS中心为交易分配的流水号,在应答报文中下传给POS终端作为对账参考号,并用于事后查证。
【38】(授权标识应答码):31 32 33 35 36 34 在预授权交易中,发卡方将在成功的应答消息中返回一个有效的授权号,以供后续交易使用。
【41】(受卡机终端标识码):31 32 33 34 35 36 37 36 该标识码在POS中心的网络中唯一标识一个终端,不能重复。
【42】(受卡方标识码):31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 受卡方的标识码,即商户代码。
【49】(交易货币代码):31 35 36 156:人民币的货币代码
【60】(自定义域):00 14 23 00 00 03 00 05 00 00 14:数据长度 23:消费撤销/冲正 00 00 03:批次号 00 0:网络管理信息码 5:可接触式界面读取IC卡
1:上一笔交易不是IC卡交易或是一笔成功的IC卡交易 1:支持部分扣款和返回余额标志
【61】 (原始信息域):00 12 00 00 03 00 00 40 0012:长度 00 00 03:原始交易批次号 00 00 40:原始交易POS流水号
【64】(报文鉴别码):38 42 41 45 41 30 32 42 报文的MAC值
12-03-31 16:39:45---->[Send]
02 01 43 60 00 00 00 03 60 31 00 31 54 32 02 10 70 3A 00 81 0E D0 80 11 20 62 21 50 55 00 00 00 01 04 50 20 00 00 00 00 00 00 11 12 00 00 41 16 39 45 03 31 03 31 00 08 01 03 10 00 30 34 36 38 37 39 30 38 37 35 36 34 31 32 33 35 36 34 30 30 31 32 33 34 35 36 37 36 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 22 38 31 35 36 38 31 35 36 38 31 35 31 31 35 36 38 31 35 36 38 31 30 31 35 36 00 14 23 00 00 03 00 05 00 39 32 32 43 41 31 44 34 03 F9
TDUP:60 00 00 00 03
报文头:60 31 00 31 54 32 60:磁条卡金融支付 31:2010年银联POS规范版本 0:正常交易状态 0:无处理要求 31 54 32:2010年银联POS规范版本
数据类型:02 10 金融类应答
位图:70 3A 00 81 0E D0 80 11 具体存在哪些域 (0010 0000 0011 1010 0000 0000 1000 0001 0000 1110 1101 0000 1000 0000 0001 0001)
【2】(主账号):20 62 21 50 55 00 00 00 01 04 50 账号:62 21 50 55 00 00 00 01 04 50
【3】(交易处理码):20 00 00 20:退款 00 00:默认
【4】(交易金额):00 00 00 00 11 12 交易金额:11.12元
【11】(受卡方系统跟踪号):00 00 41 POS为每一笔交易产生的顺序编号(1-999999)
【12】(受卡方所在地时间):16 39 45 受卡方所在地时间:16时39分45秒
【13】(受卡方所在地日期):03 31 受卡方所在地日期:3月31日
【15】(清算日期):03 31 清算日期:3月31日
【25】(服务点条件码):00 正常提交,与联网联合规范取值关系一致
【32】(受理方标识码):08 01 03 10 00 受理方标识码
【37】(检索参考号):30 34 36 38 37 39 30 38 37 35 36 34 POS中心为交易分配的流水号,在应答报文中下传给POS终端作为对账参考号,并用于事后查证。
【38】(授权标识应答码):31 32 33 35 36 34 该标识码在POS中心的网络中唯一标识一个终端,不能重复。
【39】(应答码):30 30
【41】(受卡机终端标识码):31 32 33 34 35 36 37 36 该标识码在POS中心的网络中唯一标识一个终端,不能重复。
【42】(受卡方标识码):31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 商户代码
【44】(附加响应数据):22 38 31 35 36 38 31 35 36 38 31 35 31 31 35 36 38 31 35 36 38 31 30 表示表示发卡行标识码和商户结算行标识码
【49】(交易货币代码):31 35 36 156:人民币的货币代码
【60】(自定义域):00 14 23 00 00 03 00 05 00 00 14:数据长度 23:消费撤销/冲正 00 00 03:批次号 00 0:网络管理信息码 5:可接触式界面读取IC卡
1:上一笔交易不是IC卡交易或是一笔成功的IC卡交易 1:支持部分扣款和返回余额标志
银联直联终端测试中,在POS终端签到的应答报文中,62域是如何规定的?
62域长度应为24或40个字节。对于单倍长密钥算法:前12个字节为PIN的工作密钥的密文,后12个字节为MAC的工作密钥的密文。(其中,前8个字 节是密文,后4个字节是checkvalue;用前8个字节解出的明文做key,对8个字节00做单倍长密钥算法,取结果的前四位与checkvalue 的值比较应该是一致的)。
对于双倍长密钥算法:前20个字节为PIN的工作密钥的密文,后20个字节为MAC的工作密钥的密文。(其中,“PIN工作密钥”前16个字节是密文,后 4个字节是checkvalue;用前16个字节解出明文做key,对8个字节00做双倍长密钥算法,取结果的前四位与checkvalue 的值比较应该是一致的;“MAC工作密钥”前8个字节是密文,再8个字节是二进制零,后4个字节是checkvalue;用前8个字节解出明文做key, 对8个字节00做单倍长密钥算法,取结果的前四位与checkvalue 的值比较应该是一致的)。
银联ISO8583报文解析过程的更多相关文章
- ISO8583报文解析
在此只写了一个8583报文的拆包,组包其实也差不多的. 不多说直接上文件, 具体思路过程,在解析类里面写的有. 其中包含了四个文件 8583resp.txt报文 ISO8583medata配置文件 B ...
- [性能测试]:ISO8583报文解析实例
现在我们有ISO8583报文如下(十六进制表示法): 60 00 03 00 00 60 31 00 31 07 30 02 00 30 20 04 C0 20 C0 98 11 00 00 00 0 ...
- 【8583】ISO8583报文解析
ISO8583报文(简称8583包)又称8583报文,是一个国际标准的包格式,最多由128个字段域组成,每个域都有统一的规定,并有定长与变长之分. [报文格式] POS终端上送POS中心的消息报文结构 ...
- (转载)解析ISO8583报文实例
本篇文章参考了中国银联POS终端规范,所以如有不明白的可以去我的资源里面下载. 现在我们有ISO8583报文如下(十六进制表示法): 60 00 03 00 00(前五个字节为TPDU) 60 31 ...
- 解析ISO8583报文实例
http://www.cnblogs.com/1971ruru/archive/2012/12/10/2811549.html 本篇文章参考了中国银联POS终端规范,所以如有不明白的可以去我的资源里面 ...
- ISO8583报文协议
最开始时,金融系统只有IBM这些大的公司来提供设备,象各种主机与终端等.在各个计算机设备之间,需要交换数据.我们知道数据是通过网络来传送的,而在网络上传送的数据都是基于0或1这样的二进制数据,如果没有 ...
- DNS原理总结及其解析过程详解
一.域名系统 1.域名系统概述 域名系统DNS(Domain Name System)是因特网使用的命名系统,用来把便于人们使用的机器名字转换成为IP地址.域名系统其实就是名字系统.为什么不叫&quo ...
- 基于DPI(深度报文解析)的应用识别
一.概述 1.DPI(Deep packet inspection,深度报文解析) 所谓“深度”是和普通的报文分析层次相比较而言的,“普通报文检测”仅分析IP包4 层以下的内容,包括源地址.目的地址. ...
- 轻松掌握ISO8583报文协议
http://www.itpub.net/thread-419521-1-1.html 我刚进入金融行业时,就知道了IS08583报文协议,我想可能我还没进入这个行业都已经听过了,可知ISO8583的 ...
随机推荐
- Zabbix 2.2系列注入+getsehll
Zabbix 是一个开源的企业级性能监控解决方案. 官方网站:http://www.zabbix.com Zabbix 的jsrpc的profileIdx2参数存在insert方式的SQL注入漏洞,攻 ...
- [网络流 24 题] luoguP4016 负载平衡问题
[返回网络流 24 题索引] 题目描述 有成环状的 nnn 堆纸牌,现将一张纸牌移动到其邻堆称为一次操作.求使得所有堆纸牌数相等的最少移动次数. Solution 4016\text{Solution ...
- Cocos2d-x 学习笔记(11.8) DelayTime ReverseTime TargetedAction ActionFloat Blink TintTo TintBy ResizeTo ResizeBy
1. DelayTime 通过create方法create(float d)设置时长,update方法没有任何操作.可以用于动作之间的延迟. 2. ReverseTime create方法create ...
- Cocos2d-x 学习笔记(23) 分辨率与屏幕适配
Cocos2d-x的分辨率可以分为两种:屏幕分辨率和设计分辨率. 屏幕分辨率就是屏幕窗口的大小,单位是像素. 设计分辨率单位是点,一个点可能包括多个像素. 如果把一台显示器自身的分辨率比作屏幕分辨率的 ...
- spring boot 2.x文件路径映射问题汇总
当我们在运行可执行的java jar包的时候,我们肯定改变不了jar里面的内容,因此文件上传路径就成了我们必须考虑的一点问题,我们不能往直接这个jar包里面写文件,那么只能写在jar包外面,但是写到j ...
- vue-cli 3.x 自定义插件并发布到 npm
干货转载——https://www.cnblogs.com/wisewrong/archive/2018/12/28/10186611.html 全是知识点呐 赶紧记下来啊 一.调整项目结构 首先用 ...
- 【Leetcode 做题学算法周刊】第一期
首发于微信公众号<前端成长记>,写于 2019.10.28 背景 本文记录刷题过程中的整个思考过程,以供参考.主要内容涵盖: 题目分析设想 编写代码验证 查阅他人解法 思考总结 目录 1. ...
- 一个html,3D 标签 鼓励自己
效果如图: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w ...
- react中使用redux简易案例讲解
为什么我想要使用redux? 前段时间初步上手了react,最近在使用react的过程中发现对于组件之间通信的需求比较迫切,尤其是在axios异步请求后端数据的时候,这样的需求是特别强烈的!举个例子: ...
- day10作业(函数实现注册''')
在猜年龄的基础上编写登录.注册方法,并且把猜年龄游戏分函数处理,如 登录函数 注册函数 猜年龄函数 选择奖品函数 '''在猜年龄的基础上编写登录.注册方法,并且把猜年龄游戏分函数处理,如 2. 登录函 ...