8583 mac 字符选择 java 实现_8583报文MAC验证实现过程

POS终端在与POS中心进行数据交易之前,需要生产MAC(报文鉴别码),这样POS中心在收到POS终端报文后,可以对报文也进行MAC认证,保证报文的正确性。

这篇文章主要讲解如何利用报文数据生成MAC。主要有以下步骤:(本次主要采用单倍长DES加解密算法)

1.通过解析向POS中心签到后返回的报文中的62域获得MAC的工作密钥的密文skey。

2.利用后台和POS终端规定好的密钥解密,得到MAC的工作密钥明文mkey。

3.将欲发送给POS中心的消息中,从消息类型(MTI)到63域之间的部分构成MACELEMEMENT BLOCK(MAB)。MAB=M1M2M3M4M5M6....Mn

其中:

M1 = MS11 MS12MS13 MS14 MS15 MS16 MS17 MS18

M2 = MS21 MS22MS23 MS24 MS25 MS26 MS27 MS28

M3 = MS31 MS32MS33 MS34 MS35 MS36 MS37 MS38

M4 = MS41 MS42MS43 MS44 MS45 MS46 MS47 MS48

如果最后一个Mn不足8位,需要补0.例如

Mn = MSn1 MSn2 MSn3 MSn4 MSn5 MSn6 00 00

4.将

M1,M2,M3.......Mn按照以下规则做异或运算(xor)

T1 = M1 xor M2

T2 = T1 xor M3

............

T n = T n-1 xor M n+1

5.将Tn转换成16个HEXDECIMAL  (HEX_BLOCK):例如62B6623

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值