ISO8583报文格式分析

本文通过一个具体的8583报文实例,详细解析了各字段的含义及数据表示方式,如MTI、bitmap域、账号、处理码等,并介绍了IC卡交易数据的格式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

直接上例子.一段8583报文.

"02 00 70 20 00 00 20 C0 82 00 19 06 20 51 32 00 00 00 02 61 20 60 00 00 00 00 00 02 00 00 00 00 73 37 06 20 51 32 00 00 00 02 61 20 d1 91 12 01 00 00 00 00 00 30 30 30 30 31 31 31 31 31 30 32 32 35 30 31 35 33 31 31 31 31 31 31 01 56 00 44 9f 26 08 92 b6 ae 9a 9b 10 2e d6 9f 27 01 80 9f 10 13 07 01 01 03 a0 a0 10 01 0a 01 00 00 00 10 37 51 3a 22 be"

这是一串实际传输的报文, 上面显示的是这些数据的16进制表示. 你准备好了吗,我要开始分析了.

<02 00> 这个是信息类型(MTI), 是一个四位的数字, 这里为"0200", 传输时用BCD表示即为"02h,00h"(如果用ASCII呢?看看上面的内容). 这个四位数字,每一位都有它的意义, 第一位:8583 version number 第二位:message class 第三位:message sub-class 第四位:transaction originator 就不翻译了,毕竟本来就是老外的东西, 自己理解吧.

<70 20 00 00 20 C0 82 00> bit map域, 指示哪些域存在, 我们用windows自带的计算器计算出它对应的二进制是111000000100000000000000000000000100000110000001000001000000000, 由此可以看出下面几个域存在:2, 3, 4, 11, 35, 41, 42, 49, 55.

<19 06 20 51 32 00 00 00 02 61 20> field 2, 账号, n..19, LLVAR, 一字节表示长度(19), 账号是19位, 前面补0后, 用10字节BCD表示.

<60 00 00> field 3, 处理码, n6, 定长, 用3字节BCD表示

<00 00 00 02 00 00> field 4, 交易金额, n12, 定长, 用6字节BCD表示, 这里的金额是200.00元

<00 00 73> field 11, 流水号, n6, 定长, 用3字节BCD表示.流水号为"000073".

<37 06 20 51 32 00 00 00 02 61 20 d1 91 12 01 00 00 00 00 00> field 35, 二磁道数据, z..35, LLVAR, 一字节表示长度(37), 后面是19字节BCD表示的磁道数据

<30 30 30 30 31 31 31 31> field 41, 终端号, ans8, 定长, ASCII表示, 这里终端号为"00001111"

<31 30 32 32 35 30 31 35 33 31 31 31 31 31 31> field 42, 商户号, ans15, 定长, ASCII表示, 这里商户号为"102250153111111"

<01 56> field 49, 货币代码, n3, 定长, 前面补0后,用两字节BCD表示, 这里货币代码为"156"

<00 44 9f 26 08 92 b6 ae 9a 9b 10 2e d6 9f 27 01 80 9f 10 13 07 01 01 03 a0 a0 10 01 0a 01 00 00 00 10 37 51 3a 22 be> field 55, 这是IC卡交易的相关数据, 最大长度是255, 这一域用的IC卡数据一般在PBOC/EMV规范里 都有自己的定义(包括格式), 所以,一般在报文里的格式跟它们在PBOC/EMV里定义的一致.一般是TLV(tag+lenght+value)表示一个数据.简单介绍一下数据的意义. "00 44":长度, 表示44个字节 "9f 26 08 92 b6 ae 9a 9b 10 2e d6":应用密文(application cryptogram), TLV, b8 "9f 27 01 80":密文信息数据(cryptogram information data), TLV, b1

"9f 10 13 07 01 01 03 a0 a0 10 01 0a 01 00 00 00 10 37 51 3a 22 be": 发卡行应用数据(issuer application data), TLV, 变长,最大32字节,b..32.

转载于:https://www.cnblogs.com/cuifc/p/3382269.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值