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