?

全國服務熱線:18937198643

新聞中心 PRODUCT DISPLAY

基于PBOC的電子錢包的圈存過程

來源: 發布時間:2020-03-05 47745 次瀏覽

基于PBOC的電子錢包的圈存過程,供智能卡行業的開發人員參考

  一. 圈存

  首先終端和卡片有一個共同的密鑰叫做圈存密鑰:LoadKey

  假設LoadKey = 11223344556677888877665544332211

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

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

  Apdu: 80 50 00 01 0B 01 00001000 001122334455

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

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

  00000000 0000 02 00 11223344 2988AE5A

  卡片余額 交易序號 密鑰版本號 算法標識 隨機數 MAC1

  MAC1的計算過程如下:

  1.計算過程密鑰:SessionKey

  InputData = 11223344 0000 8000 (8bytes)

  隨機數 交易序號 填充數據

  LoadKey = 11223344556677888877665544332211

  SessionKey = 3DES_Enypt(InputData, LoadKey) = 9B1D924E05595603

  用LoadKey對InputData 做3DES加密

  2.計算MAC1

  InputData1 = 00000000 00001000 01 001122334455

  卡片余額 交易金額 交易類型 終端機編號

  SessionKey = 9B1D924E05595603

  MAC1 = MAC(InputData1 SessionKey ) = 2988AE5A

  用SessionKey對InputData1做MAC運算

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

  第三步:終端計算MAC2

  InputData2=00001000 01 001122334455 20111221 214822

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

  SessionKey = 9B1D924E05595603

  MAC2 = MAC(InputData2 SessionKey ) = 3A845BF0

  用SessionKey對InputData2做MAC運算

  第四步:終端向卡片發送圈存命令:

  Apdu: 80 52 00 00 0B 20111221 214822 3A845BF0

  CLA INS P1 P2 LC 交易日期 交易時間 MAC2

  第五步:卡片收到圈存命令后,用和終端一樣的方式計算MAC2,并對終端發來圈存命令中的MAC2進行驗證,如果MAC2驗證沒有通過,卡片會返回SW=9302(MAC錯誤),如果MAC2驗證通過,則卡片余額加上交易金額作為卡片新的余額進行余額更新,交易記數器加1,并計算TAC返回給終端,TAC的計算過程如下:

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

  假設TACKey = 00112233445566778899AABBCCDDEEFF

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

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

  InputData3=00001000 0000 00001000 01 001122334455 20111221 214822

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

  TAC = MAC(InputData3, TACSessionKey) = 6314E5F5

  TAC作為圈存命令的返回數據返回給終端,圈存交易到此就結束了,TAC作為清算的時候驗證交易數據真偽和完整性的重要依據,連同交易記錄一同保存在終端。


深度肠交fisting狂叫-毛茸茸的老人bbwwbbww-欧美 偷窥 清纯 综合图区-欧美人与物videos另类