温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,汇文网负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
网站客服:3074922707
ISO8583
解析
自动化
功能
实现
SOFTWARE2023软 件第 44 卷 第 7 期2023 年Vol.44,No.7基金项目:水利技术示范项目资助(SF-202310)作者简介:邰非(1971),男,安徽当涂人,博士研究生,讲师,研究方向:计算机应用。ISO8583 域解析自动化功能的实现邰非 张开骁 王国栋(河海大学理学院,江苏南京 210098)摘要:ISO8583 报文是一个国际标准的包格式,该格式定义了多种字段域,每个字段域有各自的约定格式,并对应特定的功能,字段域分定长和变长两种类型,报文最多可由 128 个字段域组成,可提供复杂的、扩展性强的、安全性能高的数据协议包。ISO8583 协议是金融支付中常用的协议,如 POS 终端机通过银联与银行金融业务进行业务交互。在实际应用中通常采用位图方式去描述与具体业务相绑定的字段域,由于协议字段域较多且内置的逻辑复杂,增加了应用的难度,而本文则实现了一个能够正向、逆向解析位图的通用功能库,对 ISO8583 协议相关域进行可视化展现,同时提供了一系列工具函数,对字段域中不同编码格式进行快速转换,实现各种加解密算法及数字签名,为基于 ISO8583 协议二次开发提供了技术支持。关键词:ISO8583;位图;POS;金融支付中图分类号:TP393 文献标识码:A DOI:10.3969/j.issn.1003-6970.2023.07.010本文著录格式:邰非,张开骁,王国栋.ISO8583域解析自动化功能的实现J.软件,2023,44(07):039-041Implementation of ISO8583 Domain Parsing AutomationTAI Fei,ZHANG Kaixiao,WANG Guodong(Department of Science,Hohai University,Nanjing Jiangsu 210098)【Abstract】:ISO8583 message is an international standard packet format that defines mutiple field fields.Each field has its own format and corresponds to specific functions.There are two types of field:Fixed length and variable length.The message can be composed of 128 fields at most,which can provide complex,scalable and high security data protocol packets.ISO8583 protocol is a commonly used in financial payment.For example,POS terminal machines interact with bank financial business through UnionPay.In practical applications,bitmap is usually used to describe the fields bound to specific services.Due to the large number of fields and complex built-in logic,it increases the difficulty of application.This paper implements a general function library that can parse bitmap forward and backward,visually displays the relevant fields of ISO8583 protocol,and opens a series of tool functions,which can quickly convert different coding formats in the field,realize various encryption and decryption algorithms and digital signatures.It provides technical support for the secondary development based on ISO8583 protocol.【Key words】:ISO8583;bitmap;POS;financial payment基金项目论文0 引言随着软件技术、通信技术的快速发展及带宽不断突破,各行各业将原有传统业务流程移植到互联网已成趋势,尤其是金融交易系统中的支付领域,除传统载体如:自助柜员机、网络 POS 机具不断升级更新外,新的载体也层出不穷,如网银、支付宝、微信及云闪付等。可以说金融支付已融入到日常生活的方方面面了。对于大部分支付形态而言,其业务数据都会经过银联清算中心1,2,这些业务数据具体包括:交易类型、账号、账号类型、密码、交易金额、交易序列号、日期、商户代码、2 磁道数据、3 磁道数据等,数据总量并不多,因此金融领域大都采用 ISO8583 协议来进行传递。该协议一般用于卡清算,如国内的银联、国外的 VISA、Mastercard,对于银联支持的业务而言,数据只有在遵守这个协议前提下才能被银联及银行服务系统所识别和解析,在通过合法性校验之后,完成约定的业务动作。ISO8583 协议内容丰富,提供了多达 128 个字段域去描述相关的业务内容,具有较强的可扩展性和安全性,但也增加了应用的复杂度,一般来说开发者在 ISO8583 协议包前部会增加称为位图的逻辑块,用来描述包中字段域的组成情40软 件第 44 卷 第 7 期SOFTWARE况,为了方便开发者能快速定位与业务相关的字段域,有必要实现一个工具,它能够正向、逆向对位图进行解析,并对 ISO8583 协议相关域进行可视化展现,提供一系列接口函数对域内容不同编码进行快速转换,并进行加解密处理,这是本文所述主要内容。1 技术路线背景1.1 ISO8583 协议简介与应用ISO8583 协议是一种对金融交易卡原始电文-交换电文规范的描述,由国际标准化组织制定,其有 3 部分组成:(1)报文信息、数据元素和代码值。(2)机构识别码的应用和注册信息。(3)电文、数据元素和代码值的维护信息。在实际应用中,比如针对 POS 机具等支付系统3,4,会涉及很多业务内容,具体有:签到、工作密钥、主密钥、MAC 密钥、消费、消费撤销、退货、结算、冲正、补登、预授权等。另外签购单中会出现:批次号、序号、授权号、查询号、凭证号等各种信息。这些信息的填充、反馈、操作、确认都是在基于 ISO8583 协议包中封装完成的,各项业务均以位图方式描述出来。本文我们主要关注于对位图内容的正向与逆向解析,并实现转码工具,以方便程序员在支付领域进行二次开发。关于上述业务的具体含义与流程不在论述范围内。1.2 ISO8583 协议位图与字段域根据中国银联 POS 终端规范3,POS 机具终端上送 POS 中心的消息报文结构如表 1 所示。表 1 POS 消息报文结构Tab.1 POS message structureTPDU 5 字节(压缩)报文头 6 字节(压缩)应用数据TPDU 长度为 10 个字节,用 BCD 码压缩为 5 个字节。报文头长度为 12 字节,用 BCD 码压缩为 6 个字节。应用数据中表示报文长度的为 4 个字节,用 BCD 码压缩为 2 个字节。有 5+6+2=13 字节,位图则位于协议包第14 字节处,格式为定长,最大由 16 个字节组成,共 128位,一般以二进制位为填充单元而以十六进制呈现。在填充时,如果第一位为 0,则表示使用 64 位(即 64 个字段域)基础位图,位图字节长度为 8 个字节,如果第一位为1,表示使用 128 位(即 128 个字段域)扩展位图,启用某个字段域,则将其所对应的位置 1,比如“商户类型”信息使用 18 字段域,则位图第 18 位置 1,依次类推。为了更清楚地描述,我们举一个基础位图的示例:协议包头从第 14 个字节开始的 8 个字节依次为:20 00 38 00 00 00 00 34,则可将 20 分拆为 0010 0000,00分拆为 0000 0000,38 分拆为 0011 1000,34 分拆为0011 0100。最后组装成:0010 0000 0000 0000 0011 1000 0000 0000 0000 0000 0000 0000 0000 0000 0011 0100 共 64 位,从左向右数,第 1 位为 0 表示使用 64位基础位图,为 1 的位数位置序列是 3 19 20 21 59 60 62,说明这个协议包中包含第 3、19、20、59、60、62字段域内容。第 3 字段域通常定义为交易类型,其长度为 6 个字节,代表处理代码和信息码,两者结合可唯一确定交易类型,处理代码和信息码由以下三部分组成:第 1 字节和第 2 字节表示交易动作码,第 3 字节和第4 字节表示付出账户类型,用于借记类,如查询、代收费、转场交易,第 5 字节和第 6 字节表示收入帐户类型,用于代收费、转帐等。该字段域用 BCD 码压缩为定长 3个字节,所以报文的第 22、23、24 字节为第 3 字段域的数据,后续依次 19、20、59、60、62 字段域,由于篇幅原因本文中不在给出相应字段域的含义与长度。2 系统组织框架如图 1 所示给出了系统组织框架,“编码转换模块”和“加解密处理模块”5,6为底层模块,“编码转换模块”涉及到编解 BCD 码,该码是一种二进制数字编码,用4 位二进制来表示 1 位十进制数中的 0 9,以方便二进制和十进制之间的转换,同时减少报文的字节数,达到节省空间的目的。BCD 编码在 ISO8583 协议包字段域中广泛使用,银联标准中第 2、3、4、11、12、13、14 等字段域均使用这种编码方式。ISO8583协议解析辅助系统框架编码转换模块加解密处理模块功能界面模块协议逆向解析模块协议正向解析模块协议定义模块图 1 系统组织框架图Fig.1 System organization framework还有一些字段域如第41、44字段域等,其内容可能包含中文字符,这要清楚这些中文字符的编解码格式,以便能正确地编码和解码,否则会出现乱码现象。在ISO8583协议包中这些字段域会采用ASCII编码方式去处理。“加解密处理模块”5,6主要负责提供加密、解密功能,以 POS 终端机具为例,在金融业务流程签到时,会从后台获取工作密钥的密文和 MAC 密钥的密文。工作密钥是专门用来在交易过程中对刷卡人的卡密码进行加密的,可以用主密钥对工作密钥的密文进行解密,得到密钥明文。主密钥可手工输入或烧制于出产 POS 机中。用主密钥对 MAC 密钥密文解密,得到 MAC 密钥41邰非 张开骁 王国栋:ISO8583 域解析自动化功能的实现明文,用于数据包的校验,发送方对数据包进行 MAC加密,将得到的数据附加到报文,收取方同样进行MAC 计算,得到一个 MAC 数据,两者相对比就可以知道数据包是否被篡改。“协议逆向解析模块”和“协议正向解析模块”将根据“协议定义模块”去解析报文和组织报文,为在“功能界面模块”上显示提供基础数据。“协议定义模块”提供了灵活的可配置的模式,可迅速响应动态调整的报文协议内容,对加、解密算法可以进行选择。3 实现算法描述如图 2 所示给出了 MAC 校验算法的流程图。现说明如下:(1)POS 机具终端发起签到,返回报文中的 62域为 MAC 密文 skey;(2)用主密钥(手工输入或已烧制于 POS 机具)对 MAC 密文进行解密,得到 MAC 明文