MAC算法总结

来源:互联网 发布:大奖章基金骗局知乎 编辑:程序博客网 时间:2024/06/10 19:04
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)转换成16HEXDECIMAL

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 = eMAKTM311TM312 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 = eMAKTE11 TE12 TE13 TE14 TE15 TE16TE17 TE18

               = EN21 EN22 EN23 EN24 EN25 EN26EN27 EN28

 

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

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

转换成16HEXDECIMAL:

“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 BLOCKMAB)。对MAB,按每8个字节做异或(不管信息中的字符格式),如果最后不满8个字节,则添加“0X00,


0200702404800CC0


8019196217907600


0009914010200000


0000000000010001


2926040120003132


3334353637383930


3132313235363538


3132333436313336


3132333435363738


3930323132343231


3536001423000001


0006010012000001


0001250000000000


最后得到的异或结果为:


A531EE26210C71C4


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


4135333145453236


3231304337314334


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

8AB6D7B0D940E3C0




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


B887E7F3EE71A0F4




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


B44D1225E4D21238



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


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


发现计算正确!









原创粉丝点击