剛到公司老大便發我一份文檔《智能卡ISO7816-4規范(中文版)》,然后就讓我研究下IC智能卡數據讀取和支付。身為一直做.NET開發的我對硬件啥的一無所知,各種無頭緒啊,研究了兩天后,稍微了解IC智能卡的文件基本結構和指令后,終於讓我找到了根節點。其它數據的讀取還是毫無頭緒,果斷問度娘,果然之前有點走偏了,我應該研究的是 《中國金融集成電路(IC)卡規范 (PBOC 3.0)》,好了終於走上正軌,在拜讀了一些大神的文章后,終於,身為小小白的我對EMV/PBOC的解析和支付有了一定的了解,但是和大神還差好遠,但是希望能幫助到和我一樣的小白,同事溫故而知新嘛。好了說了這么多的廢話,開始正文。
因為《中國金融集成電路(IC)卡規范》也是以《ISO7816規范》為基礎的,這里就先參照《ISO7816規范》來贅述下文件的基本結構和APDU的報文結構,后續再做讀取卡片數據的具體操作指令。
先上縮略語:
APDU 應用協議數據單元
ATR 復位應答
CLA 類別字節
DIR 目錄
DF 專用文件
EF 基本文件
FCI 文件控制信息
FCP 文件控制參數
FMD 文件管理數據
INS 指令字節
MF 主文件
P1—P2 參數字節
RFU 保留供將來使用
SM 安全報文交換
SW1—SW2 狀態字節
TLV 標記、長度、值
TPDU 傳輸協議數據單元
...
(1)文件結構
——專用文件(DF)。
——基本文件(EF)。
卡內數據的邏輯組織結構由下列專用文件的結構化分級組成。
——在根處的DF稱作主文件(MF)。該MF是必備的。
——其他DF是任選的。
定義了下列兩種類型的EF。
——內部EF——那些EF預期用於存儲由卡所解釋的數據,即,為了管理和控制目的由卡所分析和使用的數據。
——工作的EF——那些EF預期用於不由卡所解釋的數據,即,僅僅由外界待使用的數據。
上圖:

(2)APDU報文組成
APDU由下列內容組成:
——必備的4字節首標(CLA INS P1 P2);
——有條件的可變長度主體。
(首標) [CLA INS P1 P2] [Lc字段][數據字段][Le字段] (主體)
INS代碼:
值 命令名稱
‘0E’ ERASE BINARY
‘20’ VERIFY
‘70’ MANAGE CHANNEL
‘82’ EXTERNAL AUTHENTICATE
‘84’ GET CHALLENGE
‘88’ INTERNAL AUTHENTICATE
‘A4’ SELECT FILE
‘BO’ READ BINARY
‘CO’ GET RESPONSE
‘C2’ ENVELOPE
‘CA’ GET DATA
‘DO’ WRITE BINARY
‘D2’ WRITE RECORD
‘D6’ UPDATE BINARY
‘DA’ PUT DATA
‘DC’ UPDATE RECORD
‘E2’ APPEND RECORD
如有不妥之處歡迎指正。
轉載請注明出處:http://www.cnblogs.com/xinwang/p/4283353.html
