天天看点

MAC算法总结

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算法总结

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

B887E7F3EE71A0F4

MAC算法总结

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

B44D1225E4D21238

MAC算法总结

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

MAC算法总结

取前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

发现计算正确!