第一步 | 終端通過(guò)向IC卡發(fā)GET CHALLENGE命令獲得一個(gè)4字節(jié)隨機(jī)數(shù),后補(bǔ)’00 00 00 00’作為初始值。 |
第二步 | 將5字節(jié)命令頭(CLA,INS,P1,P2,Lc)和命令數(shù)據(jù)域中的明文或密文數(shù)據(jù)連接在一起形成數(shù)據(jù)塊。注意,這里的Lc應(yīng)是數(shù)據(jù)長(zhǎng)度加上將計(jì)算出的MAC的長(zhǎng)度(4字節(jié))后得到的實(shí)際長(zhǎng)度。 |
第三步 | 將該數(shù)據(jù)塊分成8字節(jié)為單位的數(shù)據(jù)塊, 表示為BLOCK1、BLOCK2、BLOCK3、BLOCK4等。最后的數(shù)據(jù)塊有可能是1~8個(gè)字節(jié)。 |
第四步 | 如果最后的數(shù)據(jù)塊的長(zhǎng)度是8字節(jié)的話,則在該數(shù)據(jù)塊之后再加一個(gè)完整的8字節(jié)數(shù)據(jù)塊‘80 00 00 00 00 00 00 00’, 轉(zhuǎn)到第五步。 如果最后的數(shù)據(jù)塊的長(zhǎng)度不足8字節(jié),則在其后加入16進(jìn)制數(shù)‘80’,如果達(dá)到8字節(jié)長(zhǎng)度,則轉(zhuǎn)到第五步;否則接著在其后加入16進(jìn)制數(shù)‘00’直到長(zhǎng)度達(dá)到8字節(jié)。 |
第五步 | 按照?qǐng)D1和圖2所述的算法對(duì)這些數(shù)據(jù)塊使用指定密鑰進(jìn)行加密來(lái)產(chǎn)生MAC。 |
第六步 | 最終取計(jì)算結(jié)果(高4字節(jié))作為MAC。 |
| 歡迎光臨 (http://www.raoushi.com/bbs/) | Powered by Discuz! X3.1 |