該方法來源于PBOC標準。 命令安全報文中的MAC是使用命令的所有元素(包括命令頭和命令數據域中的數據)來產生的。以保證命令連同數據能夠正確完整地傳送,并對發送方進行認證。 按照如下方式使用DEA加密方式產生MAC:
| 終端通過向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。 | | |
圖片1.png (4.31 KB, 下載次數: 41)
下載附件
2022-6-2 10:02 上傳
圖1安全報文中單倍長密鑰MAC計算
圖片2.png (6.66 KB, 下載次數: 42)
下載附件
2022-6-2 10:03 上傳
圖2安全報文中雙倍長密鑰MAC算法 |