以下這篇文章並非原著,文檔傳到我這裏,我已經不知道出處了,感謝作者。
TC、ARQC、AAC及ARPC校驗方式
前提:
1. 獲得IC卡AC子密鑰,或者獲得髮卡行AC主密鑰
本例:
MDKAC = C4D689158AD9FB9D23105B91CE046D0E
2. 得到IC卡卡號及卡序列號
本例:
PAN = 6210220110002707355
PAN ser = 01
1.TC、ARQC及AAC的計算方式
取IC卡AC子密鑰
如果已經獲得了IC卡AC子密鑰則略過此步。
用髮卡行主密鑰分散出IC卡AC子密鑰。
方法爲使用髮卡行主密鑰,對PAN的後14位(如果PAN不足14位前面補0)加PAN序列號(共8B)並對此取反連接得到的16字節數據,做3DES加密就得到IC卡AC子密鑰。
如:
用MDKAC對2011000270735501DFEEFFFD8F8CAAFE 做3DES加密得 B8A15DA5F7043C317D9FD8F8DFE2BD75(UDK)
得過程密鑰
用IC卡AC子密鑰,對交易計數器ATC做3DES加密:
1. 在ATC前補6字節0x00,對ATC取反,並在前補6字節0x00,並連接
如:
ATC = 03D3
00000000000003D3000000000000FC2C
2. 用IC卡AC子密鑰對如上數據做3DES加密得過程密鑰:
如:
用UDK對00000000000003D3000000000000FC2C做3DES加密得4A43440B2D932ACDC4E2776ED562EE43 (過程密鑰)
校驗AAC、TC及ARQC
IC卡返回的55域數據爲:
待校驗的密文: 81 A9 DC 93 10 F888 56
授權金額: 000000000000 9F0206
其它金額: 000000000000 9F0306
國家代碼: 0156 9F1A02
終端驗證: 0000000000 9505
貨幣代碼: 0156 5F2A02
交易日期: 000000 9A03
交易類型: 00 9C01
隨機數: 00000444 9F3704
AIP: 7C00 8202
ATC: 03D3 9F3602
CVR: 0380A800 9F1013
連接如上數據得:
00000000000000000000000001560000000000015600000000000004447C0003D30380A800
用過程密鑰對如上數據做MAC運算得到了AAC、TC或ARQC:
AAC、TC或ARQC = 81A9DC9310F88856
與IC返回的密文比較 相等,校驗成功!
2.ARPC的計算方式
取授權應答碼
授權應答碼爲服務器返回的兩字節數據,本例採用“00”
ARC = 0x300x30
ARPC計算過程
1. 在ARC後補6個字節0x00,並和ARQC做異或運算
如:
3030000000000000異或81A9DC9310F88856
得 B199DC9310F88856
2. 使用過程密鑰對異或結果做3DES加密運算就得到ARPC
4A43440B2D932ACDC4E2776ED562EE43 對B199DC9310F88856做3DES加密運算得:84DD63A221F915CA(ARPC)
3. 命令(外部認證)
00 82 00 00 0A +ARPC(8B)+ARC(2B)