欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種對雙電子錢包進行操作的方法

文檔序號:6667712閱讀:333來源:國知局
專利名稱:一種對雙電子錢包進行操作的方法
技術領域
本發(fā)明涉及信息安全領域,特別涉及一種在CPU終端對雙電子錢包進行操作的方 法。
背景技術
邏輯加密卡Mifare I(Ml)技術成熟、價格低廉,在傳統(tǒng)的城市交通智能卡應用中 占據(jù)了絕大部分,但Ml卡內(nèi)部沒有獨立的CPU和操作系統(tǒng),完全依靠內(nèi)置硬件邏輯電路實 現(xiàn)安全認證和保護,因此導致Ml卡容易被破解,按交通智能卡“一卡多用、多卡互通”的發(fā)展趨勢,Ml卡內(nèi)電子錢包的資金存量必將越來越高,因此Ml的安全隱患已引起高度的關注。CPU卡內(nèi)具有中央處理器(CPU)、隨機存儲器(RAM)、程序存儲器(ROM)、數(shù)據(jù)存儲 器(EEPROM)以及片內(nèi)操作系統(tǒng),其安全性大幅優(yōu)于Ml卡,但高昂的價格嚴重制約了其推廣 應用,近來隨著非接觸CPU卡的推出,其價格接近Ml卡,技術也日趨成熟,這使全面推廣應 用CPU卡取代Ml卡成為可能。現(xiàn)在技術中存在一種包含有Ml和CPU兩部分的CPU卡,但是這種CPU卡在內(nèi)部處 理流程上兩部分是完全獨立的,沒有同步機制來對這兩部分中的雙電子錢包進行同步,因 此這樣就造成了在使用Ml終端或CPU終端消費時,雙電子錢包的余額不一致的問題。

發(fā)明內(nèi)容
為了解決現(xiàn)有技術中的不足,本發(fā)明提供了一種在CPU終端對雙電子錢包進行操作的方法,所述方法包括CPU卡進入終端的非接觸式感應區(qū)內(nèi),所述CPU卡上電并初始化;獲取第一電子錢包的余額;獲取第二電子錢包的余額;比較所述第一電子錢包和所述第二電子錢包的余額的大??;若所述第一電子錢包的余額小于所述第二電子錢包的余額,則將所述第二電子錢包的余額設置為與所述第一電子錢包的余額一致,并進行尋卡操作;若所述第二電子錢包的余額小于所述第一電子錢包的余額,則將所述第一電子錢包的余額設置為與所述第二電子錢包的余額一致,并進行尋卡操作;若所述第一電子錢包的余額與所述第二電子錢包的余額相等,則直接進行尋卡操作。本發(fā)明的有益效果在于本發(fā)明提供的一種在CPU卡內(nèi)對雙電子錢包進行操作方法,該方法提供了一種同步機制,實現(xiàn)了雙電子錢包真正的同步;該方法采用CPU終端進 行充值,提高了原有的通過Ml終端充值的安全性;并且本發(fā)明提供的方法在不改變Ml消費終端的前提下,仍然可以使用原有的Ml卡進行消費,這樣有利于消費的統(tǒng)一。


圖1為本實施例提供的一種在CPU卡內(nèi)對雙電子錢包進行操作的方法的流程圖。
具體實施例方式為使本發(fā)明的目的、技術方案和優(yōu)點更加清楚,下面將結合附圖對本發(fā)明實施方 式做進一步地詳細描述。本發(fā)明使用了一種雙界面CPU卡,該雙界面CPU卡具體為帶有ISO 14443接口和 Mifare 1 (簡稱Ml)的非接觸式CPU卡,如SLE66CL80PEM、P5ra012等,并且通過該非接觸式 CPU卡,本發(fā)明實現(xiàn)了雙電子錢包應用,具體地,使用該非接觸式CPU卡中的ISO 14443接口 實現(xiàn)的是符合銀行標準(如PB0C2.0標準)的電子錢包,即CPU電子錢包,而使用該非接觸 式CPU卡中的Mifare 1實現(xiàn)的是基于邏輯加密芯片標準(如Mifare標準)的金融應用, 即Ml電子錢包,兩種錢包在硬件上相互獨立,但CPU電子錢包應用可以訪問Ml電子錢包。本實施例提供了一種在CPU終端對CPU卡內(nèi)的CPU電子錢包和Ml電子錢包進行 操作的方法,在本實施例中,帶有CPU電子錢包和Ml電子錢包的CPU卡為非接觸式CPU卡, CPU終端為非接觸式終端,具體實現(xiàn)步驟如下步驟101 =CPU卡進入終端的非接觸式感應區(qū)內(nèi),CPU卡上電并初始化;步驟102 判斷自身是否已進行了個人化,即判斷內(nèi)部的個人化標志位是否為 OxAA,若是,則執(zhí)行步驟103,若否,則執(zhí)行步驟109 ;在本實施例中,個人化標志位是發(fā)卡系統(tǒng)與CPU卡預先約定的,當發(fā)卡系統(tǒng)已對 CPU卡進行個人化時,則發(fā)卡系統(tǒng)在CPU卡中設置一個個人化標志位,并將該個人化標志位 設置為預先約定的值,在本實施例中發(fā)卡系統(tǒng)與CPU卡預先約定的值具體為OxAA,是自定 義的,即當個人化標志位是OxAA時,則表示CPU卡已進行了個人化,否則表示CPU卡未進行 個人化,并且發(fā)卡系統(tǒng)和CPU卡也可以預先約定任意其他的值作為標識,如0x01,即當個人 化標志位是0x01時,則表示CPU卡已進行了個人化,否則表示CPU卡未進行個人化;
或者,在本實施例中發(fā)卡系統(tǒng)與CPU卡預先約定,若發(fā)卡系統(tǒng)已對CPU卡進行個人 化時,則發(fā)卡系統(tǒng)在CPU卡中創(chuàng)建一個文件系統(tǒng)的主目錄MF,當CPU卡判斷內(nèi)部已存在文件 系統(tǒng)的主目錄MF時,則表示CPU卡已進行了個人化,當CPU卡判斷內(nèi)部不存在文件系統(tǒng)的 主目錄MF時,則表示CPU卡未進行個人化;或者,發(fā)卡系統(tǒng)與CPU卡預先約定,若發(fā)卡系統(tǒng)已對CPU卡進行個人化時,則發(fā)卡 系統(tǒng)在CPU卡中的文件系統(tǒng)的主目錄MF下創(chuàng)建一個標識文件,當CPU卡判斷內(nèi)部已存在標 識文件時,則表示CPU卡已進行了個人化,當CPU卡判斷內(nèi)部不存在標識文件時,則表示CPU 卡未進行個人化。步驟103 獲取Ml的扇區(qū)密鑰;在本實施例中,預先約定存儲Ml電子錢包的余額的扇區(qū)號和塊號,并根據(jù)該預先 約定的扇區(qū)號來獲取Ml的扇區(qū)密鑰,其中獲取Ml的扇區(qū)密鑰的方法具體為調(diào)用API接口 函數(shù) extern WORD GetMifareSectorPassword (BYTE^secPwdBuf, BYTE blockNo)來獲取 Ml 的扇區(qū)密鑰。步驟104 獲取Ml電子錢包的余額;在本實施例中,CPU卡根據(jù)步驟103中獲得的Ml的扇區(qū)密鑰,以及預先約定的存儲Ml電子錢包的余額的塊號來獲取Ml電子錢包的余額,其中獲取Ml電子錢包的余額的方法具體為調(diào)用 API 接 口函數(shù) extern BYTEGetMifarePurseBalance (BYTE^balanceBuf)來 獲取Ml電子錢包的余額。步驟105 獲取CPU電子錢包的余額;在本實施例中,獲取CPU電子錢包的余額的方法具體為查找應用文件ADF的地址;根據(jù)應用文件ADF查找ADF下的CPU電子錢包文件的地址;根據(jù)查找得到的CPU電子錢包文件的地址和預先設定的CPU電子錢包的余額的偏 移量來計算用于存儲CPU電子錢包的余額的地址;根據(jù)計算得到的用于存儲CPU電子錢包的余額的地址來讀取CPU電子錢包的余 額;或者,預先約定CPU卡內(nèi)有一塊存儲空間用于存儲CPU電子錢包的余額的地址,則從上 述存儲空間中讀取上述地址,再根據(jù)上述地址直接讀取CPU電子錢包的余額。步驟106 對Ml電子錢包和CPU電子錢包進行同步,即比較Ml電子錢包的余額與 CPU電子錢包的余額的大小,若Ml電子錢包的余額小于CPU電子錢包的余額,則執(zhí)行步驟 107,若CPU電子錢包的余額小于Ml電子錢包的余額,則執(zhí)行步驟108,若Ml電子錢包的余 額與CPU電子錢包的余額相等,則執(zhí)行步驟109 ;步驟107 將CPU電子錢包的余額設置為與Ml電子錢包的余額一致,然后執(zhí)行步 驟 109 ;在本實施例步驟107中,將CPU電子錢包的余額設置為與Ml電子錢包的余額一致 的方法,具體為查找應用文件ADF的地址;根據(jù)應用文件ADF查找ADF下的CPU電子錢包文件的地址;根據(jù)查找得到的CPU電子錢包文件的地址和預先設定的CPU電子錢包的余額的偏 移量來計算用于存儲CPU電子錢包的余額的地址;將上述地址所指向的存儲區(qū)中的數(shù)據(jù)清空,然后將Ml電子錢包的余額寫入上述 地址所指向的存儲區(qū)中,作為CPU電子錢包的新的余額;或者,從預先約定的存儲空間中讀取CPU電子錢包的余額的地址;將上述地址所指向的存儲區(qū)中的數(shù)據(jù)清空,然后將Ml電子錢包的余額寫入上述 地址所指向的存儲區(qū)中,作為CPU電子錢包的新的余額;進一步地,將CPU電子錢包的余額設置為與Ml電子錢包的余額一致,還包括更新 CPU電子錢包的交易明細,具體方法為讀取CPU電子錢包的最后一條交易明細的具體時間;將Ml電子錢包的每條交易明細的時間與上述讀取得到的時間進行比較;將Ml電子錢包的交易明細的時間在上述讀取得到的時間之后的所有交易明細追 加到CPU電子錢包的交易明細中;其中,交易明細具體為交易金額、交易類型標識、終端機編號、交易日期和交易時間等;進一步地,更新CPU電子錢包的交易明細之后,還包括根據(jù)追加到CPU電子錢包的交易明細中的Ml電子錢包的交易明細的條數(shù),相應地 將CPU電子錢包的脫機交易序號加上相應的值,其中該相應的值與上述條數(shù)相同,如追加 到CPU電子錢包的交易明細中的Ml電子錢包的交易明細的條數(shù)為3,則相應地將CPU電子 錢包的脫機交易序號加3。步驟108 將Ml電子錢包的余額設置為與CPU電子錢包的余額一致,然后執(zhí)行步 驟 109 ;在本實施例步驟108中,將Ml電子錢包的余額設置為與CPU電子錢包的余額一致 的方法具體為根據(jù)預先約定的扇區(qū)號,調(diào)用API接口函數(shù)extern WORDGetMifareSectorPasswo rd(BYTE*secPwdBuf, BYTE blockNo)來獲取 Ml 的扇區(qū)密鑰;調(diào)用 API 接 口 函數(shù) extern BYTE SetMifarePurseBalance (BYTE^balanceBuf),并 利用獲得的Ml的扇區(qū)密鑰來設置Ml電子錢包的余額,即將Ml電子錢包的余額設置為與 CPU電子錢包的余額一致;其中,將Ml電子錢包的余額設置為與CPU電子錢包的余額一致,還包括更新Ml 電子錢包的交易明細,具體方法為讀取Ml電子錢包的最后一條交易明細的具體時間;將CPU電子錢包的每條交易明細的時間與上述讀取得到的時間進行比較;將CPU電子錢包的交易明細的時間在上述讀取得到的時間之后的所有交易明細 追加到Ml電子錢包的交易明細中;其中,交易明細具體為交易金額、交易類型標識、終端機編號、交易日期和交易時 間等;進一步地,更新Ml電子錢包的交易明細之后,還包括根據(jù)追加到Ml電子錢包的交易明細中的CPU電子錢包的交易明細的條數(shù),相應地 將Ml電子錢包的脫機交易序號加上相應的值,其中該相應的值與上述條數(shù)相同,如追加到 Ml電子錢包的交易明細中的CPU電子錢包的交易明細的條數(shù)為1,則相應地將Ml電子錢包 的脫機交易序號加1。步驟109 判斷是否接收到尋卡的命令,若否,則繼續(xù)等待接收命令并進行判斷,若是,則執(zhí)行步驟110;步驟110 接收喚醒命令WUPA和請求命令REQA ;步驟111 返回應答命令ATQA,再進行防沖撞處理ANTIC0L,然后接收選擇命令SELECT ;步驟112 發(fā)送選擇確認 SAK(MIFARE enabled);步驟113 接收到非接觸式的數(shù)據(jù)幀CL (contactless) Frame ;步驟114 判斷是否有選擇應答請求命令RATS Ccommand,若否,則執(zhí)行步驟115,若是,則執(zhí)行步驟116;步驟115 執(zhí)行Ml錢包應用操作,直到掉電或是CPU卡離開終端的非接觸式感應 區(qū);
步驟116 等待接收應用命令,當接收到的是圈存初始化命令INITIALIZEFOR LOAD時,則執(zhí)行步驟117,當接收到的是消費初始化命令INITIALIZE F0RPURCHASE時,則執(zhí) 行步驟132 ;在本實施例中,圈存初始化命令INITIALIZE FOR LOAD用于初始化圈存交易。步驟117 讀取INITIALIZE FOR LOAD命令中包含的數(shù)據(jù)并保存;在本實施例中,INITIALIZE FOR LOAD命令中包含的數(shù)據(jù)具體為密鑰索引號、交易金額和終端機編號。步驟118 檢查自身是否支持INITIALIZE FOR LOAD命令中包含的密鑰索引號,若 不支持,則執(zhí)行步驟119,若支持,則執(zhí)行步驟120 ;步驟119 返回狀態(tài)碼0x9403給終端,并終止執(zhí)行圈存初始化操作,然后返回到步 驟 116 ;步驟120 生成一個偽隨機數(shù)和一個過程密鑰,并利用該過程密鑰計算得到第一 報文鑒別碼MACl ;在本實施例中,過程密鑰是由密鑰DLK分散得到的;利用過程密鑰計算得到第一報文鑒別碼MACl的方法具體為將交易前的CPU電子錢包的余額、交易金額、交易類型標識和終端機編號順序鏈 接,再利用過程密鑰對鏈接后的數(shù)據(jù)進行加密,得到的加密后的數(shù)據(jù)的前四個字節(jié)即為 MACl。步驟121 將INITIALIZE FOR LOAD響應報文返回給終端;其中,INITIALIZEFOR LOAD 響應報文由 Data+swl+sw2 組成;只有當INITIALIZE FOR LOAD響應報文中的狀態(tài)碼swl和sw2為‘9000,時,則 INITIALIZE FOR LOAD命令執(zhí)行成功,INITIALIZE FOR LOAD響應報文數(shù)據(jù)域Data中包含 的數(shù)據(jù)有交易前的CPU電子錢包的余額、CPU錢包的聯(lián)機交易序號、密鑰版本號、算法標識、 偽隨機數(shù)和MAC1,若命令執(zhí)行不成功,則返回給終端的INITIALIZE FOR LOAD響應報文中只 含有狀態(tài)碼swl和sw2,且狀態(tài)碼swl和sw2不為‘9000’。步驟122 接收終端發(fā)送的圈存命令CREDIT FOR LOAD,讀取CREDIT FOR LOAD命 令中的數(shù)據(jù)并保存;在本實施例中,圈存命令CREDIT FOR LOAD用于圈存交易;其中,CREDIT FOR LOAD命令中的數(shù)據(jù)具體為交易日期、交易時間和第二報文鑒別 碼 MAC2。步驟123 使用步驟120中生成的過程密鑰來驗證上述MAC2是否有效,若無效,則 執(zhí)行步驟124,若有效,則執(zhí)行步驟125 ;在本實施例中,驗證MAC2是否有效的方法,具體為將交易金額、交易類型標識、終端機編號、交易日期和交易時間順序鏈接,然后使 用步驟120中生成的過程密鑰對鏈接得到的數(shù)據(jù)進行加密,再比較加密后得到的數(shù)據(jù)的前 四個字節(jié)與CREDIT FOR LOAD命令數(shù)據(jù)域中的MAC2是否相同,若不相同,則MAC2無效,若 相同,則MAC2有效。步驟124 返回狀態(tài)碼0x9302給終端,提示MAC2無效,終止執(zhí)行圈存操作,然后返 回到步驟116 ;
步驟125 將CPU電子錢包的聯(lián)機交易序號加1,將交易金額加到CPU電子錢包的 余額上;在本實施例步驟125中,將交易金額加到CPU電子錢包的余額上的方法,具體為查找應用文件ADF的地址;根據(jù)應用文件ADF查找ADF下的CPU電子錢包文件的地址;根據(jù)查找得到的CPU電子錢包文件的地址和預先設定的CPU電子錢包的余額的偏移量來計算用于存儲CPU電子錢包的余額的地址;讀取上述計算得到的用于存儲CPU電子錢包的余額的地址所指向的存儲區(qū)中 數(shù)據(jù),將交易金額與讀取得到的數(shù)據(jù)相加,并用相加得到的數(shù)據(jù)覆蓋上述計算得到的用于存儲CPU電子錢包的余額的地址所指向的存儲區(qū)中的數(shù)據(jù),將此相加得到的數(shù)據(jù)作為CPU 電子錢包新的余額。步驟126 更新CPU電子錢包的交易明細;在本實施例中,需要更新的CPU電子錢包的交易明細具體為交易金額、交易類型標識、終端編號、交易日期和交易時間,具體地,CPU卡將交易金額、交易類型標識、終端編 號、交易日期和交易時間順序鏈接組成一個記錄以便更新。步驟127 獲得Ml的扇區(qū)密鑰;在本實施例中,預先約定存儲Ml電子錢包的余額的扇區(qū)號和塊號,并根據(jù)該預先約定的扇區(qū)號來獲取Ml的扇區(qū)密鑰,其中獲得Ml的扇區(qū)密鑰的方法具體為調(diào)用API接口函數(shù) extern WORD GetMifareSectorPassword (BYTE^secPwdBuf, BYTE blockNo)來獲得Ml的扇區(qū)密鑰;步驟128 將Ml電子錢包的聯(lián)機交易序號加1,并更新Ml電子錢包的余額,即用步 驟125中更新后的CPU電子錢包的余額覆蓋Ml電子錢包的余額;在本實施例中,更新Ml電子錢包的余額的方法具體為調(diào)用API接口函數(shù)extern BYTE SetMifarePurseBalance (BYTE^balanceBuf),并利用獲得的扇區(qū)密鑰設置Ml電子錢 包的余額,即用步驟125中更新后的CPU電子錢包的余額覆蓋Ml電子錢包的余額;步驟129 更新Ml電子錢包的交易明細;具體地,將步驟126中更新的后CPU電子錢包的交易明細追加到Ml電子錢包的交易明細中;交易明細具體為交易金額、交易類型標識、終端機編號、交易日期和交易時間等。步驟130 用DTK左右8個字節(jié)進行異或運算,再利用異或運算得到的結果計算交易驗證碼TAC碼;在本實施例步驟130中,利用異或運算得到的結果計算TAC碼,具體為將交易后的CPU電子錢包的余額或Ml電子錢包的余額、加1前的CPU卡的聯(lián)機交 易序號、交易金額、交易類型標識、終端機編號、交易日期和交易時間順序鏈接,再利用異或運算得到的結果對鏈接得到的數(shù)據(jù)進行加密,得到的加密后的數(shù)據(jù)的前四個字節(jié)即為TAC碼。步驟131 返回CREDIT FOR LOAD命令的響應報文給終端,交易結束,然后返回到步驟116,其中CREDIT FOR LOAD命令的響應報文包含有TAC碼;步驟132 讀取消費初始化命令INITIALIZE FOR PURCHASE中的數(shù)據(jù)并保存;
在本實施例中,消費初始化命令INITIALIZE FOR PURCHASE用于初始化消費交 易;并且INITIALIZE FOR PURCHASE命令中的數(shù)據(jù)具體為密鑰索引號、交易金額和終 端機編號。步驟133 檢查自身是否支持上述INITIALIZE FOR PURCHASE命令中包含的密鑰 索引號,若不支持,則執(zhí)行步驟134,若支持,則執(zhí)行步驟135 ; 步驟134:返回狀態(tài)碼0x9403給終端,并終止執(zhí)行消費初始化操作,然后返回到步 驟 116 ;步驟135 讀取CPU電子錢包的余額,判斷上述INITIALIZE FOR PURCHASE命令中 包含的交易金額的大小是否大于CPU電子錢包的余額的大小,若是,則執(zhí)行步驟136,若否, 則執(zhí)行步驟137 ;在本實施例步驟135中,讀取CPU電子錢包的余額的方法具體為查找應用文件ADF的地址;應用文件ADF根據(jù)查找ADF下的CPU電子錢包文件的地址;根據(jù)查找得到的CPU電子錢包文件的地址和預先設定的CPU電子錢包的余額的偏 移量來計算用于存儲CPU電子錢包的余額的地址;根據(jù)計算得到的用于存儲CPU電子錢包的余額的地址來讀取CPU電子錢包的余額。步驟136 返回狀態(tài)碼0x9401給終端,并終止執(zhí)行消費初始化操作,然后返回到步 驟 116 ;步驟137 生成一個偽隨機數(shù)和一個過程密鑰;在本實施例中,過程密鑰用于CPU電子錢包或Ml電子錢包的消費交易,過程密鑰 是用密鑰DPK分散得到的。步驟138 發(fā)送INITIALIZE FOR PURCHASE命令的響應報文給終端;其中,INITIALIZEFOR PURCHASE 響應報文由 Data+swl+sw2 組成;只有當INITIALIZE FOR PURCHASE命令執(zhí)行成功時,則CPU卡返回給終端的 INITIALIZE FOR PURCHASE 響應報文中的狀態(tài)碼 swl 和 sw2 為 ‘9000,,且 INITIALIZE FOR PURCHASE響應報文數(shù)據(jù)域Da ta中包含的數(shù)據(jù)具體為偽隨機數(shù)和CPU電子錢包的脫機交易 序號,若命令執(zhí)行不成功,則CPU卡返回給終端的INITIALIZE FOR PURCHAS響應報文中只 含有狀態(tài)碼swl和sw2,且狀態(tài)碼swl和sw2不為‘9000’。步驟139 接收終端發(fā)送的消費命令DEBIT FOR PURCHASE WITHDRAW,讀取并保存 DEBIT FOR PURCHASE WITHDRAW 命令中的數(shù)據(jù);其中,DEBIT FOR PURCHASE WITHDRAW命令中的數(shù)據(jù)具體為終端交易序號、終端 的交易日期、終端的交易時間和第三鑒別碼MAC3。步驟140 使用步驟137中生成的過程密鑰來驗證DEBIT FOR PURCHASEffITHDRAff 命令中包含的MAC3是否有效,若無效,則執(zhí)行步驟141,若有效,則執(zhí)行步驟142 ;在本實施例中,驗證DEBIT FOR PURCHASE WITHDRAW命令中包含的MAC3是否有效 的方法,具體為 將交易金額、交易類型標識、終端機編號、終端的交易日期和終端的交易時間順序鏈接,用步驟137中生成的過程密鑰對鏈接得到的數(shù)據(jù)進行加密,再比較得到的加密后的 數(shù)據(jù)的前四個字節(jié)與DEBIT FOR PURCHASE WITHDRAW命令中包含的MAC3是否相同,若不相 同,則MAC3無效,若相同,則MAC3有效。步驟141 返回狀態(tài)碼0x9302給終端,終止交易,然后返回到步驟116 ;步驟142 將CPU電子錢包的脫機交易序號加1,并從CPU電子錢包的余額中扣減交易金額;在本實施例步驟142中,從CPU電子錢包的余額中扣減交易金額的方法,具體為查找應用文件ADF的地址;根據(jù)應用文件ADF查找ADF下的CPU電子錢包文件的地址;根據(jù)查找得到的CPU電子錢包文件的地址和預先設定的CPU電子錢包的余額的偏 移量來計算用于存儲CPU電子錢包的余額的地址;讀取上述計算得到的用于存儲CPU電子錢包的余額的地址所指向的存儲區(qū)中的 數(shù)據(jù),將讀取得到的數(shù)據(jù)減去交易金額,并用相減得到的數(shù)據(jù)覆蓋上述計算得到的用于存 儲CPU電子錢包的余額的地址所指向的存儲區(qū)中的數(shù)據(jù),將此相減得到的數(shù)據(jù)作為CPU電 子錢包新的余額。步驟143 更新CPU電子錢包的交易明細;在本實施例中,需要更新的CPU電子錢包的相關交易明細具體為交易金額、交易 類型標識、終端編號、交易日期和交易時間,具體地,CPU卡將交易金額、交易類型標識、終端 編號、交易日期和交易時間順序鏈接組成一個記錄以便更新。步驟144 獲得Ml的扇區(qū)密鑰;在本實施例中,預先約定存儲Ml電子錢包的余額的扇區(qū)號和塊號,并根據(jù)該預先 約定的扇區(qū)號來獲取Ml的扇區(qū)密鑰,其中獲得Ml的扇區(qū)密鑰的方法具體為調(diào)用API接口 函數(shù) extern WORD GetMifareSectorPassword (BYTE^secPwdBuf, BYTE blockNo)獲得 Ml 的 扇區(qū)密鑰。步驟145 將Ml電子錢包的脫機交易序號加1,并更新Ml電子錢包的余額,即用步 驟142中更新后的CPU電子錢包的余額覆蓋Ml電子錢包的余額;在本實施例中,更新Ml電子錢包的余額的方法具體為調(diào)用API接口函數(shù)extern BYTE SetMifarePurseBalance (BYTE^balanceBuf),并利用步驟314 中獲得的扇區(qū)密鑰設置 Ml電子錢包的余額,即用步驟142中更新后的CPU電子錢包的余額覆蓋Ml電子錢包的余 額;步驟146 更新Ml電子錢包的交易明細;具體地,將步驟143中更新的CPU電子錢包的交易明細追加到Ml電子錢包的交易 明細中;交易明細具體為交易金額、交易類型標識、終端機編號、交易日期和交易時間等。步驟147 生成第四報文鑒別碼MAC4 ;在本實施例中,生成第四報文鑒別碼MAC4方法具體為用步驟137中生成的過程密鑰對交易金額進行加密,得到的加密后的數(shù)據(jù)的前四 個字節(jié)即為第四報文鑒別碼MAC4。步驟148 用DTK左右8個字節(jié)進行異或運算,并利用異或運算得到的結果來計算交易驗證碼TAC碼;在本實施例中,利用異或運算得到的結果來計算TAC碼的方法具體為將交易金額、交易類型標識、終端機編號、終端交易序號、終端的交易日期和終端的交易時間順序鏈接,并用異或運算得到的結果對鏈接得到的數(shù)據(jù)進行加密,得到的加密 后的數(shù)據(jù)的前四個字節(jié)即為TAC碼。步驟149 返回DEBIT FOR PURCHASE WITHDRAW命令的響應報文給終端,交易結束, 然后返回到步驟116。其中,INITIALIZE FOR PURCHASE響應報文中包含的數(shù)據(jù)有MAC2和TAC碼。本實施例提供了一種在CPU終端對CPU卡內(nèi)的CPU電子錢包和Ml電子錢包進行 操作的方法,該方法中對CPU電子錢包和Ml電子錢包進行同步,這樣就保證了 CPU電子錢 包和Ml電子錢包的余額的一致,就解決了用戶使用該CPU卡在Ml終端非法圈存和/或非 法消費時而造成的CPU電子錢包和Ml電子錢包的余額的大小不一致的問題;并且在該方法 中當接收到圈存命令時,則CPU卡在CPU終端對CPU卡內(nèi)的CPU電子錢包和Ml電子錢包進 行圈存,這樣就提高了圈存的安全性;并且在該方法中當接收到消費命令時,則在CPU終端 使用CPU卡內(nèi)的CPU電子錢包和Ml電子錢包進行消費,即從CPU電子錢包的余額中扣減相 應的交易金額的同時也從Ml電子錢包的余額中也扣減相應的交易金額。以上僅為本發(fā)明的較佳實施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則 之內(nèi),所作的任何修改、等同替換、改進等,均應包含在本發(fā)明的保護范圍之內(nèi)。
權利要求
一種對雙電子錢包進行操作的方法,其特征在于,所述方法包括CPU卡進入終端的非接觸式感應區(qū)內(nèi),所述CPU卡上電并初始化;獲取第一電子錢包的余額;獲取第二電子錢包的余額;比較所述第一電子錢包和所述第二電子錢包的余額的大?。蝗羲龅谝浑娮渝X包的余額小于所述第二電子錢包的余額,則將所述第二電子錢包的余額設置為與所述第一電子錢包的余額一致,并進行尋卡操作;若所述第二電子錢包的余額小于所述第一電子錢包的余額,則將所述第一電子錢包的余額設置為與所述第二電子錢包的余額一致,并進行尋卡操作;若所述第一電子錢包的余額與所述第二電子錢包的余額相等,則直接進行尋卡操作。
2.如權利要求1所述的對雙電子錢包進行操作的方法,其特征在于,所述第一電子錢 包為基于邏輯加密芯片標準的金融應用,并預先約定存儲區(qū)在CPU卡的邏輯加密卡區(qū)域中 的扇區(qū)號和塊號,其中,所述存儲區(qū)用于存儲所述第一電子錢包的余額。
3.如權利要求2所述的對雙電子錢包進行操作的方法,其特征在于,所述獲取所述第 一電子錢包的余額的方法,具體為根據(jù)所述存儲第一電子錢包的余額的存儲區(qū)在CPU卡的邏輯加密卡區(qū)域中的扇區(qū)號, 調(diào)用函數(shù)獲取所述第一電子錢包的扇區(qū)密鑰;根據(jù)所述獲取的扇區(qū)密鑰和存儲所述第一電子錢包的余額的存儲區(qū)在CPU卡的邏輯 加密卡區(qū)域中的塊號,調(diào)用函數(shù)獲取所述第一電子錢包的余額。
4.如權利要求1所述的對雙電子錢包進行操作的方法,其特征在于,所述第二電子錢 包為使用ISO 14443接口協(xié)議實現(xiàn)的符合銀行標準的電子錢包。
5.如權利要求2所述的對雙電子錢包進行操作的方法,其特征在于,所述獲取第二電 子錢包的余額的方法,具體為查找應用文件的地址;根據(jù)所述應用文件查找所述應用文件下的第二電子錢包文件的地址; 根據(jù)所述查找得到的第二電子錢包文件的地址和預先設定的第二電子錢包的余額的 偏移量來計算用于存儲所述第二電子錢包的余額的地址;根據(jù)所述計算得到的用于存儲所述第二電子錢包的余額的地址來讀取所述第二電子 錢包的余額; 或者,預先約定所述CPU卡內(nèi)的存儲空間中存儲所述第二電子錢包的余額的地址,從所述預 先約定的存儲空間中讀取用于存儲所述第二電子錢包的余額的地址; 根據(jù)所述讀取得到的地址來讀取所述第二電子錢包的余額。
6.如權利要求1所述的對雙電子錢包進行操作的方法,其特征在于,所述將第二電子 錢包的余額設置為與所述第一電子錢包的余額一致的方法,具體為查找應用文件的地址;根據(jù)所述應用文件查找所述應用文件下的第二電子錢包文件的地址; 根據(jù)所述查找得到的第二電子錢包文件的地址和預先設定的第二電子錢包的余額的 偏移量計算用于存儲所述第二電子錢包的余額的地址;將所述計算得到的用于存儲所述第二電子錢包的余額的地址所指向的存儲區(qū)中的數(shù) 據(jù)清空,并將所述第一電子錢包的余額寫入所述計算得到的用于存儲所述第二電子錢包的 余額的地址所指向的存儲區(qū)中,作為所述第二電子錢包的新的余額;或者,從預先約定的存儲空間中讀取用于存儲所述第二電子錢包的余額的地址;將所述用于存儲第二電子錢包的余額的地址所指向的存儲區(qū)中的數(shù)據(jù)清空,并將第一 電子錢包的余額寫入所述用于存儲第二電子錢包的余額的地址所指向的存儲區(qū)中,作為所 述第二電子錢包的新的余額。
7.如權利要求1所述的對雙電子錢包進行操作的方法,其特征在于,所述將第二電子 錢包的余額設置為與所述第一電子錢包的余額一致后,還包括更新所述第二電子錢包的交易明細;根據(jù)所述更新的第二電子錢包的交易明細的條數(shù)將所述第二電子錢包的聯(lián)機交易序 號加上相應的值,其中所述相應的值與所述條數(shù)相同。
8.如權利要求1所述的對雙電子錢包進行操作的方法,其特征在于,所述將第一電子 錢包的余額設置為與所述第二電子錢包的余額一致的方法,具體為根據(jù)存儲所述第一電子錢包的余額的存儲區(qū)在CPU卡的邏輯加密卡區(qū)域中的扇區(qū)號, 調(diào)用函數(shù)獲取所述第一電子錢包的扇區(qū)密鑰;根據(jù)所述獲取的扇區(qū)密鑰和存儲所述第一電子錢包的余額的存儲區(qū)在CPU卡的邏輯 加密卡區(qū)域中的塊號,調(diào)用函數(shù)設置所述第一電子錢包的余額。
9.如權利要求1所述的對雙電子錢包進行操作的方法,其特征在于,所述將第一電子 錢包的余額設置為與所述第二電子錢包的余額一致之后,還包括更新所述第一電子錢包的交易明細;根據(jù)所述更新的第一電子錢包的交易明細的條數(shù)將所述第一電子錢包的聯(lián)機交易序 號加上相應的值,其中所述相應的值與所述條數(shù)相同。
10.如權利要求1所述的對雙電子錢包進行操作的方法,其特征在于,所述進行尋卡操 作具體為判斷是否接收到尋卡的命令,若否,則繼續(xù)等待接收尋卡的命令,若是,則接收喚醒命 令和請求命令;返回應答命令,進行防沖撞處理,并接收終端發(fā)來的選擇命令;執(zhí)行選擇命令,并發(fā)送確認信息給終端;接收非接觸式的數(shù)據(jù)幀。
11.如權利要求1所述的對雙電子錢包進行操作的方法,其特征在于,所述進行尋卡操 作之后,還包括判斷是否有選擇應答請求命令,若是,則等待接收應用命令,若否,則執(zhí)行第一電子錢 包應用操作。
12.如權利要求11所述的對雙電子錢包進行操作的方法,其特征在于,當接收到的所 述應用命令是圈存初始化命令時,所述方法還包括執(zhí)行圈存初始化操作,返回所述圈存初始化命令的響應報文給終端;接收所述終端發(fā)送的圈存命令,對所述第二電子錢包進行圈存,并更新所述第一電子錢包的余額,返回所述圈存命令的響應報文給終端,圈存交易結束。
13.如權利要求12所述的對雙電子錢包進行操作的方法,其特征在于,所述執(zhí)行圈存 初始化操作的步驟,具體為讀取并保存所述圈存初始化命令中的數(shù)據(jù),其中所述數(shù)據(jù)包括密鑰索引號和交易金額;檢查自身是否支持所述密鑰索引號;若不支持,則返回錯誤信息給終端,終止執(zhí)行圈存初始化操作; 若支持,則生成一個偽隨機數(shù)和一個過程密鑰,并用所述過程密鑰計算得到第一報文 鑒別碼。
14.如權利要求12所述的對雙電子錢包進行操作的方法,其特征在于,所述對第二電 子錢包進行圈存的步驟,具體為讀取并保存所述圈存命令中的數(shù)據(jù),其中,所述數(shù)據(jù)包含第二報文鑒別碼; 使用所述過程密鑰驗證所述第二報文鑒別碼是否有效; 若無效,則返回所述第二報文鑒別碼無效的信息給終端,終止執(zhí)行圈存操作; 若有效,則將所述交易金額加到所述第二電子錢包的余額上。
15.如權利要求14所述的對雙電子錢包進行操作的方法,其特征在于,所述將交易金 額加到所述第二電子錢包的余額上的方法,具體為查找應用文件的地址;根據(jù)所述應用文件查找在所述應用文件下的第二電子錢包文件的地址; 根據(jù)所述查找得到的第二電子錢包文件的地址和預先設定的第二電子錢包的余額的 偏移量計算用于存儲所述第二電子錢包的余額的地址;讀取所述計算得到的用于存儲所述第二電子錢包的余額的地址所指向的存儲區(qū)中的 數(shù)據(jù),將所述交易金額與所述讀取到的數(shù)據(jù)相加,用所述相加得到的數(shù)據(jù)覆蓋所述計算得 到的用于存儲所述第二電子錢包的余額的地址所指向的存儲區(qū)中的數(shù)據(jù),將所述相加得到 的數(shù)據(jù)作為所述第二電子錢包新的余額。
16.如權利要求14所述的對雙電子錢包進行操作的方法,其特征在于,所述將交易金 額加到所述第二電子錢包的余額上后,還包括將所述第二電子錢包的聯(lián)機交易序號加1 ; 更新所述第二電子錢包的交易明細。
17.如權利要求12所述的對雙電子錢包進行操作的方法,其特征在于,所述更新第一 電子錢包的余額,具體為將所述第一電子錢包的余額設置為與所述第二電子錢包的余額相 同,包括根據(jù)所述存儲第一電子錢包的余額的存儲區(qū)在CPU卡的邏輯加密卡區(qū)域中的扇區(qū)號, 調(diào)用函數(shù)獲取所述第一電子錢包的扇區(qū)密鑰;根據(jù)所述存儲第一電子錢包的余額的存儲區(qū)在CPU卡的邏輯加密卡區(qū)域中的塊號,以 及所述扇區(qū)密鑰,調(diào)用函數(shù)設置所述第一電子錢包的余額,即用所述更新后的第二電子錢 包的余額覆蓋所述第一電子錢包的余額。
18.如權利要求12所述的對雙電子錢包進行操作的方法,其特征在于,所述更新第一 電子錢包的余額后,還包括將所述第一電子錢包的聯(lián)機交易序號加1 ; 更新所述第一電子錢包的交易明細。
19.如權利要求11所述的對雙電子錢包進行操作的方法,其特征在于,當接收到的所 述應用命令是消費初始化命令時,所述方法還包括執(zhí)行消費初始化操作,返回所述消費初始化命令的響應報文給終端; 接收所述終端發(fā)送的消費命令,使用所述第二電子錢包進行消費,并更新所述第一電 子錢包的余額,返回所述消費命令的響應報文給終端,消費交易結束。
20.如權利要求19所述的對雙電子錢包進行操作的方法,其特征在于,所述執(zhí)行消費 初始化操作的步驟,具體為讀取并保存所述消費初始化命令中的數(shù)據(jù),其中,所述數(shù)據(jù)包括密鑰索引號和交易金額;檢查自身是否支持所述密鑰索引號;若不支持,則返回錯誤信息給終端,終止執(zhí)行消費初始化操作; 若支持,則讀取所述第二電子錢包的余額,判斷所述數(shù)據(jù)中包含的交易金額是否大于 所述第二電子錢包的余額;若是,則返回錯誤信息給終端,終止執(zhí)行消費初始化操作; 若否,則生成一個偽隨機數(shù)和一個過程密鑰。
21.如權利要求20所述的對雙電子錢包進行操作的方法,其特征在于,讀取所述第二 電子錢包的余額的方法,具體為查找應用文件的地址;根據(jù)所述應用文件查找在所述應用文件下的第二電子錢包文件的地址; 根據(jù)所述查找得到的第二電子錢包文件的地址和預先設定的第二電子錢包的余額的 偏移量計算用于存儲所述第二電子錢包的余額的地址;根據(jù)所述計算得到的用于存儲所述第二電子錢包的余額的地址讀取所述第二電子錢 包的余額。
22.如權利要求19所述的對雙電子錢包進行操作的方法,其特征在于,所述使用第二 電子錢包進行消費的步驟,具體為讀取并保存所述消費交易命令中的數(shù)據(jù),其中,所述數(shù)據(jù)包含第三報文鑒別碼; 使用所述過程密鑰驗證所述第一報文鑒別碼是否有效; 若無效,則返回所述第一報文鑒別碼無效的信息給終端,終止執(zhí)行消費操作; 若有效,則從所述第二電子錢包的余額中扣減所述交易金額。
23.如權利要求22所述的對雙電子錢包進行操作的方法,其特征在于,從所述第二電 子錢包的余額中扣減所述交易金額的方法,具體為查找應用文件的地址;根據(jù)所述應用文件查找在所述應用文件下的第二電子錢包文件的地址; 根據(jù)所述查找得到的第二電子錢包文件的地址和預先設定的第二電子錢包的余額的 偏移量來計算用于存儲所述第二電子錢包的余額的地址;讀取所述計算得到的用于存儲所述第二電子錢包的余額的地址所指向的存儲區(qū)中的 數(shù)據(jù),將所述讀取到的數(shù)據(jù)減去所述交易金額,用相減得到的數(shù)據(jù)覆蓋所述計算得到的用于存儲所述第二電子錢包的余額的地址所指向的存儲區(qū)中的數(shù)據(jù),將所述相減得到的數(shù)據(jù) 作為所述第二電子錢包新的余額。
24.如權利要求22所述的對雙電子錢包進行操作的方法,其特征在于,從所述第二電 子錢包的余額中扣減所述交易金額之后,所述方法還包括將所述第二電子錢包的脫機交易序號加1 ;更新所述第二電子錢包的交易明細。
25.如權利要求19所述的對雙電子錢包進行操作的方法,其特征在于,所述更新第一 電子錢包的余額,具體為將所述第一電子錢包的余額設置為與所述第二電子錢包的余額相 同,包括根據(jù)所述存儲第一電子錢包的余額的存儲區(qū)在CPU卡的邏輯加密卡區(qū)域中的扇區(qū)號, 調(diào)用函數(shù)獲取所述第一電子錢包的扇區(qū)密鑰;根據(jù)所述存儲第一電子錢包的余額的存儲區(qū)在CPU卡的邏輯加密卡區(qū)域中的塊號,以 及所述扇區(qū)密鑰,調(diào)用函數(shù)來設置所述第一電子錢包的余額,即用所述更新后的第二電子 錢包的余額覆蓋所述第一電子錢包的余額。
26.如權利要求19所述的對雙電子錢包進行操作的方法,其特征在于,所述更新所述 第一電子錢包的余額之后,還包括將所述第一電子錢包的脫機交易序號加1 ;更新所述第一電子錢包的交易明細。
全文摘要
本發(fā)明公開了一種對雙電子錢包進行操作的方法,涉及信息安全領域。所述方法包括CPU卡進入終端的非接觸式感應區(qū)內(nèi),上電并初始化,分別獲取第一電子錢包和第二電子錢包的余額,比較第一電子錢包的余額與第二電子錢包的余額的大小,若第一電子錢包的余額小于第二電子錢包的余額,則將第二電子錢包的余額設置為與第一電子錢包的余額一致,并進行尋卡操作;若第二電子錢包的余額小于第一電子錢包的余額,則將第一電子錢包的余額設置為與第二電子錢包的余額一致,并進行尋卡操作;若第一電子錢包的余額與第二電子錢包的余額相等,則進行尋卡操作。
文檔編號G07F7/08GK101799955SQ20091023787
公開日2010年8月11日 申請日期2009年11月20日 優(yōu)先權日2009年11月20日
發(fā)明者于華章, 陸舟 申請人:北京飛天誠信科技有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
温宿县| 延安市| 汕头市| 巧家县| 涞水县| 榆林市| 交口县| 务川| 桑植县| 灯塔市| 枞阳县| 关岭| 宜良县| 麻阳| 河曲县| 广灵县| 广昌县| 清丰县| 老河口市| 偃师市| 惠水县| 兰西县| 永仁县| 云浮市| 江阴市| 元阳县| 阳江市| 新和县| 辽阳县| 鹤山市| 华阴市| 河间市| 秦皇岛市| 祁连县| 金湖县| 新巴尔虎右旗| 寿光市| 旬阳县| 吉木乃县| 游戏| 馆陶县|