HSM KitHSM Kit
中文

ISO 8583 消息解析器:MTI、位图与数据元素

Payment Security# ISO 8583# 消息解析器# 位图# ATM
Last Updated: 2026年5月21日7 min readBy HSM Kit Team
Need to calculate this now?
Use our free online 消息解析器工具 tool.

ISO 8583 是金融交易消息的全球标准。它是卡支付、ATM 交易和银行间通信背后的协议。本指南介绍消息结构、MTI、位图、数据元素,以及如何在实践中解析这些消息。

什么是 ISO 8583?

ISO 8583 定义了在系统之间交换金融交易信息的消息格式。它被以下系统使用:

  • 支付卡网络(Visa、Mastercard)
  • ATM 网络
  • 销售点系统
  • 银行交换系统
  • 支付处理商

为什么 ISO 8583 很重要

每次您使用卡时:

  1. 终端向收单行发送 ISO 8583 消息
  2. 收单行路由到卡网络
  3. 网络发送到发卡行
  4. 发卡行以 ISO 8583 消息响应
  5. 响应流回到终端

这在毫秒内完成,全球每天发生数十亿次。

消息结构

ISO 8583 消息由以下部分组成:

+------------------+
| MTI              |  消息类型指示符(4位数字)
+------------------+
| 位图             |  8 或 16 字节,指示存在的字段
+------------------+
| 数据元素         |  可变数量的字段
+------------------+

消息类型指示符(MTI)

MTI 标识消息类型和版本。

MTI 结构

MTI 是一个 4 位数字:

位置 1:版本
位置 2:消息类别
位置 3:消息功能
位置 4:消息来源

版本代码

代码版本
0ISO 8583:1987
1ISO 8583:1993
2ISO 8583:2003

消息类别

代码类别描述
1授权卡授权请求
2金融金融交易
3文件操作批处理
4冲正交易冲正
5对账结算
8网络管理系统消息

消息功能

代码功能描述
0请求初始请求
1请求响应对请求的响应
2通知通知(不需要响应)
3通知响应对通知的响应
4信息信息性消息
8保留ISO 保留使用

消息来源

代码来源描述
0收单行来自收单银行
1收单行重发收单行消息重发
2发卡行来自发卡银行
3发卡行重发发卡行消息重发

常见 MTI

MTI描述
0100授权请求
0110授权响应
0200金融交易请求
0210金融交易响应
0220金融交易通知
0230金融交易通知响应
0400冲正请求
0410冲正响应
0800网络管理请求
0810网络管理响应

位图

位图指示消息中存在哪些数据元素。

主位图

8 字节(64 位)——每一位代表一个数据元素:

位 1:数据元素 1
位 2:数据元素 2
...
位 64:数据元素 64

如果位设置为 1,则该数据元素存在。

次位图

如果位 1 被设置,则跟随一个次位图:

位 1 被设置 → 次位图存在
次位图覆盖元素 65-128

读取位图

示例位图:723C048000000000

转换为二进制:

7 = 0111
2 = 0010
3 = 0011
C = 1100
...

每个 '1' 表示相应的字段存在。

数据元素

ISO 8583 定义了最多 128 个数据元素。

常见数据元素

字段名称格式长度
2主账号(PAN)LLVAR最多 19
3处理代码N6
4交易金额N12
7传输日期/时间N10
11系统跟踪审计号N6
12本地交易时间N6
13本地交易日期N4
14有效期N4
22POS 输入方式N3
25POS 条件代码N2
35磁道 2 数据LLVAR最多 37
37检索参考号AN12
38授权标识响应码AN6
39响应码AN2
41卡受理终端 IDANS8
42卡受理方 ID 代码ANS15
43卡受理方名称/位置ANS40
52PIN 块B8
53安全相关控制信息N16
55ICC 系统相关数据LLVAR最多 999
64消息认证码B8

数据格式

代码格式描述
N数字仅数字(0-9)
AN字母数字字母和数字
ANS字母数字+特殊字符字母、数字、特殊字符
B二进制原始二进制数据
Z磁道 2磁道 2 数据格式

长度编码

类型编码示例
固定无长度前缀"HELLO" 始终 5 字符
LLVAR2 位长度前缀"05HELLO"
LLLVAR3 位长度前缀"005HELLO"

实际示例

授权请求(0100)

MTI: 0100
位图: 723C048000000000

存在的字段:
- 2: PAN (4123456789012345)
- 3: 处理代码 (000000)
- 4: 金额 (000000010000)
- 7: 日期/时间 (0115103000)
- 11: STAN (123456)
- 14: 有效期 (2512)
- 22: POS 输入方式 (051)
- 41: 终端 ID (TERM0001)
- 42: 商户 ID (MERCH0001)

授权响应(0110)

MTI: 0110
位图: 7230000002000000

存在的字段:
- 2: PAN(回显)
- 3: 处理代码(回显)
- 4: 金额(回显)
- 7: 日期/时间(回显)
- 11: STAN(回显)
- 38: 授权码 (ABC123)
- 39: 响应码 (00)

ATM NDC 格式

NDC(NCR Diebold 兼容)是 ATM 使用的 ISO 8583 子集。

NDC 特定元素

字段NDC 用途
52PIN 块(ISO 9564)
53密钥管理信息
55EMV 芯片数据
61ATM 终端数据
62ATM 金融数据
63ATM 网络数据

Wincor 格式

Wincor(现为 Diebold Nixdorf)ATM 使用类似但不同的格式。

Wincor 差异

  • 某些元素的字段分配不同
  • 字段 60-63 中的专有扩展
  • 不同的消息路由约定

解析 ISO 8583 消息

逐步解析

  1. 读取 MTI(前 4 字节或字符)
  2. 读取位图(接下来的 8 或 16 字节)
  3. 对于位图中每个设置的位:
    • 根据格式读取数据元素
    • 如果是 LLVAR/LLLVAR 则处理长度前缀
  4. 验证所有必需字段都存在

常见解析问题

问题原因解决方案
字段数量错误位图读取错误验证位图解析
消息截断长度计算错误检查 LLVAR/LLLVAR 处理
无效字符格式不匹配验证 N/AN/ANS 格式
二进制数据问题BCD 与二进制确认编码

最佳实践

  1. 始终先解析位图——它决定了哪些字段存在
  2. 处理主位图和次位图——检查位 1
  3. 尊重长度前缀——必须正确解析 LLVAR/LLLVAR
  4. 验证字段格式——数字字段应仅包含数字
  5. 记录原始消息——对调试至关重要

在线体验

使用我们的 消息解析器工具

  • 解析 ISO 8583 消息
  • 提取 MTI 和位图
  • 解码各个数据元素
  • 了解消息结构

该工具支持各种格式,包括 ATM NDC 和 Wincor。

该工具完全在浏览器中运行——数据不会离开您的设备。

Related Tool
消息解析器工具