本發(fā)明涉及智能卡技術(shù)領(lǐng)域,尤其涉及一種改進(jìn)的Java卡初始化方法和Java卡。
背景技術(shù):
平臺工程下載后的Java卡在首次運(yùn)行時(shí),Java卡需要?jiǎng)?chuàng)建虛擬機(jī)所需的運(yùn)行時(shí)環(huán)境數(shù)據(jù),造成單張Java卡的初始化時(shí)間較長。在Java卡的生產(chǎn)過程中,當(dāng)幾萬張Java卡需要批量進(jìn)行初始化操作時(shí),初始化慢的問題更加突出,嚴(yán)重的影響了Java卡的生產(chǎn)效率。
專利CN 102521094 A公布的初始化技術(shù)方案,通過指令的方式將運(yùn)行時(shí)環(huán)境數(shù)據(jù)下載到Java卡中,指令中的運(yùn)行時(shí)環(huán)境數(shù)據(jù)需要加密,并制作專用的初始化腳本指令流。因此,操作過程比較復(fù)雜。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明提供了一種改進(jìn)的Java卡初始化方法,用以加快Java卡的初始化速度,提高Java卡的生產(chǎn)效率。
本發(fā)明提供了一種改進(jìn)的Java卡初始化方法,其特征在于,包括4個(gè)階段:
階段1,初始化模板數(shù)據(jù)的提取和制作。
階段2,快速初始化Java卡平臺工程制作。
階段3,Java卡平臺工程下載。
階段4,Java卡快速初始化操作。
階段1所述的初始化模板數(shù)據(jù)是通過搭建開發(fā)環(huán)境提取并制作的,具體的,將要進(jìn)行下載的Java平臺工程下載到所述的開發(fā)環(huán)境中,運(yùn)行所述的Java卡平臺工程,模擬正常的Java卡初始化流程,所述的運(yùn)行時(shí)環(huán)境數(shù)據(jù)存儲在所述的開發(fā)環(huán)境NVM區(qū)中。從所述的開發(fā)環(huán)境NVM區(qū)中讀取到創(chuàng)建虛擬機(jī)所需的運(yùn)行時(shí)環(huán)境數(shù)據(jù)。通過對所述的運(yùn)行時(shí)環(huán)境數(shù)據(jù)信息進(jìn)行提取,并制作成所述的初始化模板數(shù)據(jù)。
階段2所述的快速初始化Java卡平臺工程是通過修改現(xiàn)有的Java卡平臺工程,將所述的初始化模板數(shù)據(jù)以常數(shù)組的形式加到平臺工程中。同時(shí),添加快速初始化APDU指令,從而制作了所述的快速初始化Java卡平臺工程。
階段3所述的Java卡平臺工程下載是將所述的快速初始化Java卡平臺工程下載到所述的Java卡程序存儲器中。
階段4所述的Java卡初始化操作具體是執(zhí)行所述的快速初始化APDU指令,將所述的Java卡程序存儲器中所述的初始化模板數(shù)據(jù)整體復(fù)制到Java卡的NVM中。
具體的,階段1所述的初始化模板數(shù)據(jù)包括創(chuàng)建虛擬機(jī)所需的運(yùn)行時(shí)環(huán)境數(shù)據(jù),特殊的,包括但不限于包括Java卡的獨(dú)有信息數(shù)據(jù)。
具體的,提取階段1所述的初始化模板數(shù)據(jù)的開發(fā)環(huán)境包括但不限于仿真開發(fā)工具,仿真Java卡。
具體的,階段2所述的快速初始化APDU指令,可以是現(xiàn)有的Java卡平臺工程已經(jīng)包含的指令,也可以是快速初始化Java卡平臺工程中添加的指令。
具體的,階段3所述的平臺工程的下載和存儲包括行業(yè)所公知的所有下載和存儲方式,優(yōu)選的,包括掩膜的方式、下載到ROM(Read Only Memory只讀存儲器)中的方式、下載到FLASH中的方式、下載到EEPROM中的方式,以及包括運(yùn)行時(shí)將平臺工程加載到RAM中運(yùn)行的方式。
具體的,階段4所述的Java卡初始化操作流程,包括但不限于對所述的初始化模板數(shù)據(jù)整體復(fù)制,以及包括更新Java卡的獨(dú)有信息數(shù)據(jù)。
具體的,階段4所述的初始化模板數(shù)據(jù)整體復(fù)制流程包括但不限于對Java卡NVM區(qū)數(shù)據(jù)的整體擦寫,以及包括對Java卡對應(yīng)地址NVM區(qū)數(shù)據(jù)的部分擦寫。
本發(fā)明還提供了一種Java卡,所述的Java卡包括但不限于如下模塊:
指令接收模塊,用于接收命令。
狀態(tài)檢查模塊,用于檢查Java卡當(dāng)前的狀態(tài)是否由未初始化狀態(tài)切換為初始化狀態(tài)。
指令判斷模塊,用于對所述接收模塊接收到的命令進(jìn)行判斷。
正常初始化操作模塊,用于所述判斷模塊判斷為正常初始化APDU指令時(shí),執(zhí)行正常的初始化操作。
快速初始化操作模塊,用于所述判斷模塊判斷為快速初始化APDU指令時(shí),執(zhí)行快速的初始化操作。
狀態(tài)切換模塊,用于所述的正常初始化操作模塊,或者所述的快速初始化操作模塊執(zhí)行完畢后,切換Java卡的狀態(tài)為己初始化。
本發(fā)明還提供了一種Java卡,所述的Java卡包括但不限于如下模塊:
指令接收模塊,用于接收命令。
狀態(tài)檢查模塊,用于檢查Java卡當(dāng)前的狀態(tài)是否由未初始化狀態(tài)切換為初始化狀態(tài)。
指令判斷模塊,用于對所述接收模塊接收到的命令進(jìn)行判斷。
正常初始化操作模塊,用于所述判斷模塊判斷為正常初始化APDU指令時(shí),執(zhí)行正常的初始化操作。
快速初始化操作模塊,用于所述判斷模塊判斷為快速初始化APDU指令時(shí),執(zhí)行快速的初始化操作。
Java卡獨(dú)有信息更新模塊,用于更新這這張Java卡的獨(dú)有信息。
狀態(tài)切換模塊,用于所述的正常初始化操作模塊,或者所述的快速初始化操作模塊執(zhí)行完畢后,切換Java卡的狀態(tài)為己初始化。
本發(fā)明提供的一種改進(jìn)的Java卡初始化方法和Java卡,通過將初始化模塊數(shù)據(jù)預(yù)下載到Java卡程序存儲器中,可以保證數(shù)據(jù)的安全性,簡化初始化模塊數(shù)據(jù)的下載過程,加速了Java卡的初始化速度,提高了Java卡的生產(chǎn)效率。
附圖說明
圖1為本發(fā)明實(shí)施例1提供的一種改進(jìn)的Java卡初始化方法流程圖;
圖2為本發(fā)明提供的一種Java卡初始化操作需要做的操作流程圖;
圖3為本發(fā)明實(shí)施例2提供的一種Java卡的結(jié)構(gòu)圖;
圖4為本發(fā)明實(shí)施例3提供的另一種Java卡的結(jié)構(gòu)圖;
具體實(shí)施方式
下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
實(shí)施例1
本發(fā)明實(shí)施例1提供了一種改進(jìn)的Java卡初始化方法如圖1所示,具體的:
步驟101,初始化模板數(shù)據(jù)的提取和制作。
步驟102,快速初始化Java卡平臺工程制作。
步驟103,Java卡平臺工程下載。
步驟104,Java卡初始化操作。
步驟101所述的初始化模板數(shù)據(jù)是通過搭建開發(fā)環(huán)境提取并制作的。具體的,將要進(jìn)行下載的Java平臺工程下載到所述的開發(fā)環(huán)境中,運(yùn)行所述的Java卡平臺工程,模擬正常的Java卡初始化流程,所述的運(yùn)行時(shí)環(huán)境數(shù)據(jù)存儲在所述的開發(fā)環(huán)境NVM區(qū)中。從所述的開發(fā)環(huán)境NVM區(qū)中讀取到創(chuàng)建虛擬機(jī)所需的運(yùn)行時(shí)環(huán)境數(shù)據(jù)。通過對所述的運(yùn)行時(shí)環(huán)境數(shù)據(jù)信息進(jìn)行提取,并制作成所述的初始化模板數(shù)據(jù)。
步驟102所述的Java卡初始化快速平臺工程是通過修改現(xiàn)有的Java卡平臺,將所述的初始化模板數(shù)據(jù)以常數(shù)組的形式加到平臺代碼中。同時(shí),添加快速初始化APDU指令。從而,制作了所述的快速初始化Java卡平臺工程。
步驟103所述的Java卡平臺工程下載,是將步驟102所述的快速初始化Java卡平臺工程下載到所述的Java卡的程序存儲器中。
步驟104所述的Java卡初始化操作具體是執(zhí)行所述的快速初始化APDU指令,將所述的Java卡的程序存儲器中所述的初始化模板數(shù)據(jù)整體復(fù)制到Java卡的NVM中。
具體的,步驟101所述的初始化模板數(shù)據(jù)包括創(chuàng)建虛擬機(jī)所需的運(yùn)行時(shí)環(huán)境數(shù)據(jù),特殊的,包括但不限于包括Java卡的獨(dú)有信息數(shù)據(jù)。
具體的,提取步驟101所述的初始化模板數(shù)據(jù)的開發(fā)環(huán)境包括但不限于仿真開發(fā)工具,仿真Java卡。
具體的,步驟102所述的快速初始化APDU指令,可以是現(xiàn)有的Java卡平臺工程已經(jīng)包含的指令,也可以是快速初始化Java卡平臺工程中添加的指令。
具體的,步驟103所述的平臺工程的下載和存儲包括行業(yè)所公知的所有下載和存儲方式,優(yōu)選的,包括掩膜的方式、下載到ROM(Read Only Memory只讀存儲器)中的方式、下載到FLASH中的方式、下載到EEPROM中的方式,以及包括運(yùn)行時(shí)將平臺工程加載到RAM中運(yùn)行的方式。
具體的,步驟104所述的Java卡初始化操作流程,包括但不限于對所述的初始化模板數(shù)據(jù)整體復(fù)制,以及包括更新Java卡的獨(dú)有信息數(shù)據(jù)。
具體的,步驟104所述的初始化模板數(shù)據(jù)整體復(fù)制流程包括但不限于對Java卡NVM區(qū)數(shù)據(jù)的整體擦寫,以及包括對Java卡對應(yīng)地址NVM區(qū)數(shù)據(jù)的部分擦寫。
具體的,步驟104所述的Java卡初始化操作需要做的操作流程如圖2所示。
步驟201,Java卡上電。具體的,所述的Java卡為下載了快速初始化Java卡平臺工程的Java卡。
步驟202,檢查Java卡是否未初始化。所述的Java卡如果處于未初始化狀態(tài),則可以繼續(xù)執(zhí)行初始化指令;所述的Java卡如果處于初始化狀態(tài),則結(jié)束所述的步驟104。
步驟203,判斷接收到的初始化指令是否為正常初始化APUD指令,如果是所述的正常初始化APUD指令,則執(zhí)行步驟204,否則執(zhí)行步驟205。
步驟204,正常的初始化操作過程。具體的,所述的正常的初始化操作過程為逐步創(chuàng)建Java虛擬機(jī)運(yùn)行需要的運(yùn)行時(shí)環(huán)境數(shù)據(jù)。
步驟205,判斷接收到的初始化指令是否為快速初始化APDU指令,如果是所述的快速初始化APDU指令,則執(zhí)行步驟206。否則,結(jié)束所述的步驟104。
步驟206,快速的初始化操作過程。具體的,所述的快速的初始化操作過程為將步驟104所述的Java卡的程序存儲器中所述的初始化模板數(shù)據(jù)整體復(fù)制到Java卡的NVM中。
步驟207,切換Java卡狀態(tài)為己初始化。Java卡狀態(tài)的切換保證Java卡下次上電時(shí)不需要在進(jìn)行重復(fù)初始化操作。
步驟208,結(jié)束。該步驟表示結(jié)束所述的步驟104需要執(zhí)行的操作流程。
實(shí)施例2
本發(fā)明實(shí)施例2還提供了一種Java卡,如圖3所示,所述的Java卡包括但不限于如下模塊:
步驟301,指令接收模塊,用于接收命令。
步驟302,狀態(tài)檢查模塊,用于檢查Java卡當(dāng)前的狀態(tài)是否由未初始化狀態(tài)切換為初始化狀態(tài)。
步驟303,指令判斷模塊,用于對所述接收模塊接收到的命令進(jìn)行判斷。
步驟304,正常初始化操作模塊,用于所述判斷模塊判斷為正常初始化APDU指令時(shí),執(zhí)行正常的初始化操作。
步驟305,快速初始化操作模塊,用于所述判斷模塊判斷為快速初始化APDU指令時(shí),執(zhí)行快速的初始化操作。
步驟306,狀態(tài)切換模塊,用于所述的正常初始化操作模塊,或者所述的快速初始化操作模塊執(zhí)行完畢后,切換Java卡的狀態(tài)為己初始化。
實(shí)施例3
本發(fā)明實(shí)施例3還提供了一種Java卡,如圖4所示,所述的Java卡包括但不限于如下模塊:
步驟401,指令接收模塊,用于接收命令。
步驟402,狀態(tài)檢查模塊,用于檢查Java卡當(dāng)前的狀態(tài)是否由未初始化狀態(tài)切換為初始化狀態(tài)。
步驟403,指令判斷模塊,用于對所述接收模塊接收到的命令進(jìn)行判斷。
步驟404,正常初始化操作模塊,用于所述判斷模塊判斷為正常初始化APDU指令時(shí),執(zhí)行正常的初始化操作。
步驟405,快速初始化操作模塊,用于所述判斷模塊判斷為快速初始化APDU指令時(shí),執(zhí)行快速的初始化操作。
步驟406,Java卡獨(dú)有信息更新模塊,用于更新這這張Java卡的獨(dú)有信息。
步驟407,狀態(tài)切換模塊,用于所述的正常初始化操作模塊,或者所述的快速初始化操作模塊執(zhí)行完畢后,切換Java卡的狀態(tài)為己初始化。