1.POS终端MAC的算法



POS终端采用ECB的加密方式,简述如下:



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



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



示例:



MAB = M1 M2 M3 M4



其中:       



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



 



按如下规则进行异或运算:



                           MS11MS12 MS13 MS14 MS15 MS16 MS17 MS18



XOR)                         MS21 MS22 MS23 MS24MS25 MS26 MS27 MS28



---------------------------------------------------



TEMP BLOCK1 =       TM11 TM12 TM13 TM14 TM15 TM16 TM17 TM18



 



然后,进行下一步的运算:



TM11TM12 TM13 TM14 TM15 TM16 TM17 TM18



XOR)                         MS31 MS32 MS33 MS34MS35 MS36 MS37 MS38



---------------------------------------------------



TEMP BLOCK2 =       TM21 TM22 TM23 TM24 TM25 TM26 TM27 TM28



 



再进行下一步的运算:



TM21TM22 TM23 TM24 TM25 TM26 TM27 TM28



XOR)                         MS41 MS42 MS43 MS44MS45 MS46 MS47 MS48



---------------------------------------------------



RESULT BLOCK =     TM31 TM32 TM33 TM34 TM35 TM36 TM37 TM38



          



c) 将异或运算后的最后8个字节(RESULT BLOCK)转换成16个HEXDECIMAL:



RESULTBLOCK = TM31 TM32 TM33 TM34 TM35 TM36 TM37 TM38



              = TM311 TM312 TM321 TM322 TM331 TM332 TM341 TM342 ||



                   TM351 TM352 TM361 TM362 TM371 TM372TM381 TM382



 



d) 取前8个字节用MAK加密:



ENCBLOCK1 = eMAK(TM311TM312 TM321 TM322 TM331 TM332 TM341 TM342)



                    = EN11 EN12EN13 EN14 EN15 EN16 EN17 EN18



 



e) 将加密后的结果与后8个字节异或:



EN11 EN12 EN13 EN14 EN15 EN16 EN17 EN18



XOR)     TM351 TM352 TM361 TM362 TM371 TM372 TM381TM382



------------------------------------------------------------



TEMP BLOCK=   TE11 TE12 TE13 TE14 TE15 TE16 TE17 TE18



 



f) 用异或的结果TEMP BLOCK再进行一次单倍长密钥算法运算。



ENC BLOCK2 = eMAK(TE11 TE12 TE13 TE14 TE15 TE16TE17 TE18)



               = EN21 EN22 EN23 EN24 EN25 EN26EN27 EN28



 



g) 将运算后的结果(ENCBLOCK2)转换成16个HEXDECIMAL:



ENC BLOCK2 = EN21 EN22 EN23 EN24 EN25 EN26 EN27 EN28



= EM211 EM212 EM221 EM222 EM231 EM232 EM241 EM242 ||



                    EM251 EM252 EM261 EM262 EM271 EM272 EM281EM282



示例:



ENC RESULT=%H84, %H56, %HB1, %HCD, %H5A,%H3F, %H84, %H84



转换成16个HEXDECIMAL:



“8456B1CD5A3F8484”



h) 取前8个字节作为MAC值。



取”8456B1CD”为MAC值。




2.MAC算法实例操作

用到的计算工具:DES算法工具和Tools.exe


预授权测撤销报文:


00 76 60 00 02 00 00 60 32 00 32 00 03 02 00 70 24 04 80 0C C0 80 19 1962 17 90 76 00 00 09 91 40 10 20 00 00 00 00 00 00 00 01 00 01 29 26 04 01 2000 31 32 33 34 35 36 37 38 39 30 31 32 31 32 35 36 35 38 31 32 33 34 36 31 3336 31 32 33 34 35 36 37 38 39 30 32 31 32 34 32 31 35 36 00 14 23 00 00 01 0006 01 00 12 00 00 01 00 01 25 42 34 34 44 31 32 32 35


将欲发送给POS中心的消息中,从消息类型(MTI)到63域之间的部分构成MAC ELEMEMENT BLOCK(MAB)。对MAB,按每8个字节做异或(不管信息中的字符格式),如果最后不满8个字节,则添加“0X00”,


0200702404800CC0


8019196217907600


0009914010200000


0000000000010001


2926040120003132


3334353637383930


3132313235363538


3132333436313336


3132333435363738


3930323132343231


3536001423000001


0006010012000001


0001250000000000


最后得到的异或结果为:


A531EE26210C71C4


将异或运算后的最后8个字节转换成16个HEXDECIMAL,结果为:


4135333145453236


3231304337314334


取前8个字节用MAK加密,结果为:

8AB6D7B0D940E3C0

MAC算法总结_h5



将加密后的结果与后8个字节异或得到的结果为:


B887E7F3EE71A0F4

MAC算法总结_h5_02



用异或的结果TEMP BLOCK再进行一次单倍长密钥算法运算,结果为:


B44D1225E4D21238


MAC算法总结_数据区_03


将运算后的结果转换成16个HEXDECIMAL,结果如下图:

MAC算法总结_h5_04

取前8个字节作为MAC值:


4234344431323235


对比64报文解析:


00域:  0200


01域:  702404800CC08019


02域:  长度区: 19 数据区:62179076000009914010


03域:  200000


04域:  000000000001


11域:  000129


14域:  2604


22域:  0120


25域:  00


37域:  123456789012


38域:  125658


41域:  12346136


42域:  123456789021242


49域:  156


60域:  长度区: 0014 数据区23000001000601


61域:  长度区: 0012 数据区000001000125


64域:  4234344431323235


发现计算正确!