基於PBOC的電子錢包消費交易過程

智能卡金融行業應用電子錢包的消費交易流程,開發人員可參考

  首先終端和卡片有一個共同的密鑰叫做消費密鑰:PurchKey

  假設PurchKey = 11223344556677888877665544332211

  在滿足安全條件的情況下:

  第一步:終端向卡片發送消費初始化命令:

  Apdu: 80 50 01 02 0B 01 00001000 001122334455

  CLA INS P1 P2 LC KeyIndex 交易金額 終端機編號

  卡片返回15個字節的數據如下(不包括9000):

  00000000 0000 000000 01 00 11223344

  卡片餘額 交易序號 透支限額 密鑰版本號 算法標識 隨機數

  MAC1的計算過程如下(終端):

  1.計算過程密鑰:SessionKey

  InputData = 11223344 0000 0001 (8bytes)

  隨機數 卡片脫機交易序號 終端交易序號後四位

  PurchKey = 11223344556677888877665544332211

  SessionKey = 3DESEnypt(InputData, PurchKey) = 003238ABC57659DD

  用LoadKey對InputData 做3DES加密

  2.計算MAC1

  InputData1 = 00001000 06 001122334455 20120229135100

  交易金額 交易類型 終端機編號 日期時間

  SessionKey = 003238ABC57659DD

  MAC1 = MAC(InputData1 SessionKey ) = F15CAB75

  用SessionKey對InputData1做MAC運算

  第二步:終端向卡片發送消費命令:

  Apdu: 80 54 01 00 0F 00000001 20111221214822 3A845BF0

  CLA INS P1 P2 LC 終端交易序號 交易日期時間 MAC1

  卡片用同樣的方法計算MAC1並驗證終端發來的MAC1是否正確,從而確認終端是否合法。如果MAC1驗證沒有通過,卡片會返回MAC錯誤終止交易。如果MAC1驗證通過,進行第三步。

  第三步:卡片修改餘額,脫機交易序號加1並計算MAC2 和TAC,並返回給終端

  計算MAC

  InputData2= 00001000

  交易金額

  SessionKey = 003238ABC57659DD

  MAC2 = MAC(InputData2 SessionKey ) = 56988A13

  用SessionKey對InputData2做MAC運算

  計算TAC

  卡片和終端還有一個共同的密鑰TAC密鑰:TACKey

  假設TACKey = 00112233445566778899AABBCCDDEEFF

  TACSessionKey=XOR( Left(8),Right(8)) =8888888888888888

  TACKey左右8個字節做異或運算

  InputData3=00001000 01 001122334455 00000001 20111221 214822

  交易金額 交易類型 終端機編號 終端交易序號 交易日期 交易時間

  TAC = MAC(InputData3, TACSessionKey) = 3FF7A28A

  MAC2和TAC作爲消費命令的返回數據返回給終端,消費交易到此就結束了,

  TAC作爲清算的時候驗證交易數據真僞和完整性的重要依據,連同交易記錄一同保存在終端。

  曹昆

  2012-03-01

  [email protected]

  QQ 87193978


發佈了2 篇原創文章 · 獲贊 68 · 訪問量 116萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章