银联标准8583MAC计算简介

近期研究支付相关的内容,遇到一个加密的算法--mac算法,研究了一下,本文以实例一步步分析说明mac计算的步骤,特此记录;

文档按步骤示例说明pos8583银联标准MAC校验过程

本层MacUtils文件夹中的函数是MAC算法成功了的(E:\Project\我的工具包\8583MAC计算\MacUtils)(本地程序目录请忽略);

开始搞起:

实例:

TAK明文密钥:55036372B17543ECB173730768B8D6C4

计算MAC的数据(消息头到63域):

MAB:08300000000002C000153030363730303436343238393733373031373933323330303200110000000137200277319F0605A0000003339F220103DF050832303234313233319F0605A0000003339F220104DF050832303234313233319F0605A0000003339F220102DF050832303231313233319F0605A0000000039F220107DF050832303137313233319F0605A0000000039F220108DF050832303233313233319F0605A0000000039F220109DF050832303233313233319F0605A0000000659F220110DF050832303232313233319F0605A0000000659F220112DF050832303232313233319F0605A0000000659F220114DF050832303232313233319F0605A0000000049F220104DF050832303137313233319F0605A0000000049F220105DF050832303231313233319F0605A0000000049F220106DF05083230323131323331

64域为(MAC):3546453035384442

开始计算:::

  • 对MAB,按每8个字节做异或(不管信息中的字符格式),如果最后不满8个字节,则添加“0X00”。

使用工具直接计算异或后的结果,工具为:如图:

MAB异或后的结果为:12 12 B0 4E 12 27 80 9C

二、对上面结果去空格并转成16进制:31323132423034453132323738303943

使用这个工具可以快速转换:

三、使用上述16进制数的前8个字节用TAK明文进行3DES加密:也就是(3132313242303445和TAK明文密钥:55036372B17543ECB173730768B8D6C4),结果为8B29461A844BA5EC

四、使用加密后的结果8B29461A844BA5EC跟第二步中异或后的16进制后8位3132323738303943进行异或结果为:BA1B742DBC7B9CAF

五、把第四步异或的结果BA1B742DBC7B9CAF再使用TAK明文加密结果为5FE058DB90680D33

六、将5FE058DB90680D33转成16进制35464530353844423930363830443333

七、取转换后数据前8字节为3546453035384442,即为MAC值,转换成字符串形式为MAC:5FE058DB;跟后台返回的一致,mac校验通过;

计算MAC总图:

要计算MAC的数据:

MAB:08300000000002C000153030363730303436343238393733373031373933323330303200110000000137200277319F0605A0000003339F220103DF050832303234313233319F0605A0000003339F220104DF050832303234313233319F0605A0000003339F220102DF050832303231313233319F0605A0000000039F220107DF050832303137313233319F0605A0000000039F220108DF050832303233313233319F0605A0000000039F220109DF050832303233313233319F0605A0000000659F220110DF050832303232313233319F0605A0000000659F220112DF050832303232313233319F0605A0000000659F220114DF050832303232313233319F0605A0000000049F220104DF050832303137313233319F0605A0000000049F220105DF050832303231313233319F0605A0000000049F220106DF05083230323131323331

64域===MAC:3546453035384442

TAK(macKey)明文: 55036372B17543ECB173730768B8D6C4

 

MAB 的mac8字节异或:12 12 B0 4E 12 27 80 9C   去空格==> 1212B04E1227809C   转成16进制==> 3132313242303445 3132323738303943

取前8字节(3132313242303445)与TAK3DES加密的结果为                                                                   

8B29461A844BA5EC

取后8字节域上加密结果异或结果为

BA1B742DBC7B9CAF

上结果再与TAK3DES加密的结果为   

5FE058DB90680D33

上结果转为16进制

35464530353844423930363830443333

取前8字节即为MAC值:3546453035384442 转为字符串形式==> 5FE058DB

跟64域返回结果一致,mac校验通过;

标准银联8583MAC计算解析完毕,如有问题,欢迎打扰,一起学习,进步!博主不同意,请勿转载,谢谢!

 

注:如有问题可以回复,看到第一时间分析解决,码农不易,感觉对您有用,帮助到您,可否打赏一杯可乐,在此谢过诸位,愿诸君终成大神,前程似锦~~~

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值