智慧卡金融行業應用電子錢包的消費交易流程,開發人員可參考
首先終端和卡片有乙個共同的金鑰叫做消費金鑰: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
qq 87193978
基於PBOC的電子錢包消費交易過程
首先終端和卡片有乙個共同的金鑰叫做消費金鑰 purchkey 假設purchkey 11223344556677888877665544332211 在滿足安全條件的情況下 第一步 終端向卡片傳送消費初始化命令 apdu 80 50 01 02 0b 01 00001000 001122334455...
基於PBOC電子錢包的消費過程詳解
智慧卡金融行業應用電子錢包的消費交易流程,開發人員可參考 首先終端和卡片有乙個共同的金鑰叫做消費金鑰 purchkey 針對每種特定的交易,比如,圈存,消費,都有特定的金鑰與之對應 假設purchkey 11223344556677888877665544332211 應用金鑰一般都是16位元組,寫...
基於pboc的電子錢包的圈存過程
基於pboc 的電子錢包的圈存過程,供智慧卡行業的開發人員參考 一 圈存 首先終端和卡片有乙個共同的金鑰叫做圈存金鑰 loadkey 假設loadkey 11223344556677888877665544332211 在滿足安全條件的情況下 第一步 終端向卡片傳送圈存初始化命令 apdu 80 5...