一種具有日志功能的動(dòng)態(tài)令牌及其工作方法
【專利摘要】本發(fā)明公開了一種具有日志功能的動(dòng)態(tài)令牌及其工作方法,動(dòng)態(tài)令牌判斷出按鍵中斷標(biāo)志被置位后,掃描鍵盤,獲取第一鍵值,并根據(jù)第一鍵值,對當(dāng)前被按下的按鍵進(jìn)行判斷,如果當(dāng)前被按下的按鍵是第一按鍵,則生成動(dòng)態(tài)口令以及與該動(dòng)態(tài)口令對應(yīng)的日志,將動(dòng)態(tài)口令存儲(chǔ)到顯示數(shù)據(jù)緩沖區(qū),將日志存儲(chǔ)到日志存儲(chǔ)區(qū),開啟按鍵中斷;如果當(dāng)前被按下的按鍵是第二按鍵,或者是第三按鍵和第四按鍵的組合,則從日志存儲(chǔ)區(qū)中讀取日志,并將讀取到的日志存儲(chǔ)到顯示數(shù)據(jù)緩沖區(qū)。通過動(dòng)態(tài)令牌記錄與已完成的身份認(rèn)證相關(guān)的信息,用戶能夠復(fù)核已完成的身份認(rèn)證是否為由自身完成的身份認(rèn)證,提高了使用動(dòng)態(tài)口令的身份認(rèn)證機(jī)制以及動(dòng)態(tài)令牌的安全性。
【專利說明】一種具有日志功能的動(dòng)態(tài)令牌及其工作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及信息安全領(lǐng)域,特別是涉及一種具有日志功能的動(dòng)態(tài)令牌及其工作方法。
【背景技術(shù)】
[0002]動(dòng)態(tài)令牌是一種用于生成動(dòng)態(tài)口令的設(shè)備,廣泛應(yīng)用于網(wǎng)銀、電信運(yùn)營商和電子政務(wù)等應(yīng)用領(lǐng)域。動(dòng)態(tài)令牌所生成的動(dòng)態(tài)口令可用于身份認(rèn)證,能夠有效提高身份認(rèn)證的安全性。
[0003]現(xiàn)有技術(shù)中,動(dòng)態(tài)口令是與時(shí)間相關(guān)的、不可預(yù)測的隨機(jī)數(shù)字組合,每個(gè)動(dòng)態(tài)口令只能使用一次,且動(dòng)態(tài)口令被使用后,無法被再次查看和確認(rèn)。
[0004]發(fā)明人在實(shí)現(xiàn)本發(fā)明的過程中,發(fā)現(xiàn)現(xiàn)有技術(shù)至少存在以下缺陷:
[0005]由于動(dòng)態(tài)口令只能使用一次,動(dòng)態(tài)令牌在顯示動(dòng)態(tài)口令一段時(shí)間(通常是幾十秒鐘)后,自動(dòng)關(guān)機(jī),用戶無法通過動(dòng)態(tài)令牌查看與已完成的身份認(rèn)證相關(guān)的任何信息,無法確認(rèn)已完成的身份認(rèn)證是否為由自身完成的身份認(rèn)證,因此,現(xiàn)有的使用動(dòng)態(tài)口令的身份認(rèn)證機(jī)制存在安全性缺陷。
【發(fā)明內(nèi)容】
[0006]本發(fā)明提供了一種具有日志功能的動(dòng)態(tài)令牌及其工作方法,以解決現(xiàn)有技術(shù)中使用動(dòng)態(tài)口令進(jìn)行身份認(rèn)證的安全性缺陷。
[0007]本發(fā)明提供了一種具有日志功能的動(dòng)態(tài)令牌的工作方法,包括以下步驟:
[0008]31、動(dòng)態(tài)令牌上電,執(zhí)行初始化操作,開啟總中斷和按鍵喚醒功能;
[0009]32、所述動(dòng)態(tài)令牌判斷是否存在置位的中斷標(biāo)志,如果是,則執(zhí)行步驟33;否則,繼續(xù)執(zhí)行步驟32 ;
[0010]33、所述動(dòng)態(tài)令牌對置位的中斷標(biāo)志進(jìn)行判斷,如果是定時(shí)器中斷標(biāo)志,則執(zhí)行步驟34 ;如果是按鍵中斷標(biāo)志,則執(zhí)行步驟35 ;
[0011]34、所述動(dòng)態(tài)令牌將定時(shí)器中斷標(biāo)志復(fù)位,并返回步驟32 ;
[0012]35、所述動(dòng)態(tài)令牌關(guān)閉按鍵中斷,掃描鍵盤,獲取第一鍵值;
[0013]36、所述動(dòng)態(tài)令牌根據(jù)所述第一鍵值,對當(dāng)前被按下的按鍵進(jìn)行判斷,如果當(dāng)前被按下的按鍵是第一按鍵,則執(zhí)行步驟37 ;如果當(dāng)前被按下的按鍵是第二按鍵,或者是第三按鍵和第四按鍵的組合,則執(zhí)行步驟38 ;
[0014]37、所述動(dòng)態(tài)令牌生成動(dòng)態(tài)口令以及與所述動(dòng)態(tài)口令對應(yīng)的日志,將所述動(dòng)態(tài)口令存儲(chǔ)到顯示數(shù)據(jù)緩沖區(qū),將所述日志存儲(chǔ)到日志存儲(chǔ)區(qū),開啟按鍵中斷,并返回步驟32;
[0015]38、所述動(dòng)態(tài)令牌從所述日志存儲(chǔ)區(qū)中讀取日志,將讀取到的日志存儲(chǔ)到所述顯示數(shù)據(jù)緩沖區(qū),開啟按鍵中斷,并返回步驟32。
[0016]本發(fā)明還提供了一種具有日志功能的動(dòng)態(tài)令牌,包括:
[0017]初始化模塊,用于在上電之后,執(zhí)行初始化操作,開啟總中斷和按鍵喚醒功能;
[0018]第一判斷模塊,用于判斷是否存在置位的中斷標(biāo)志;
[0019]第二判斷模塊,用于在所述第一判斷模塊判斷出存在置位的中斷標(biāo)志之后,對置位的中斷標(biāo)志進(jìn)行判斷;
[0020]復(fù)位模塊,用于在所述第二判斷模塊判斷出所述置位的中斷標(biāo)志是定時(shí)器中斷標(biāo)志時(shí),將定時(shí)器中斷標(biāo)志復(fù)位,并觸發(fā)所述第一判斷模塊判斷是否存在置位的中斷標(biāo)志;
[0021]第一獲取模塊,用于在所述第二判斷模塊判斷出所述置位的中斷標(biāo)志是按鍵中斷標(biāo)志時(shí),關(guān)閉按鍵中斷,掃描鍵盤,獲取第一鍵值;
[0022]第三判斷模塊,用于根據(jù)所述第一獲取模塊獲取到的所述第一鍵值,對當(dāng)前被按下的按鍵進(jìn)行判斷;
[0023]第一處理模塊,用于在所述第三判斷模塊判斷出當(dāng)前被按下的按鍵是第一按鍵時(shí),生成動(dòng)態(tài)口令以及與所述動(dòng)態(tài)口令對應(yīng)的日志,將所述動(dòng)態(tài)口令存儲(chǔ)到顯示數(shù)據(jù)緩沖區(qū),將所述日志存儲(chǔ)到日志存儲(chǔ)區(qū),開啟按鍵中斷,并觸發(fā)所述第一判斷模塊判斷是否存在置位的中斷標(biāo)志;
[0024]第二處理模塊,用于在所述第三判斷模塊判斷出當(dāng)前被按下的按鍵是第二按鍵,或者是第三按鍵和第四按鍵的組合時(shí),從所述日志存儲(chǔ)區(qū)中讀取日志,將讀取到的日志存儲(chǔ)到所述顯示數(shù)據(jù)緩沖區(qū),開啟按鍵中斷,并觸發(fā)所述第一判斷模塊判斷是否存在置位的中斷標(biāo)志。
[0025]本發(fā)明達(dá)到的有益效果:動(dòng)態(tài)令牌在生成動(dòng)態(tài)口令后,生成并記錄與該動(dòng)態(tài)口令對應(yīng)的日志供用戶查看,從而記錄與已完成的身份認(rèn)證相關(guān)的信息,使得用戶能夠復(fù)核已完成的身份認(rèn)證是否為由自身完成的身份認(rèn)證,提高了使用動(dòng)態(tài)口令的身份認(rèn)證機(jī)制以及動(dòng)態(tài)令牌的安全性。
【專利附圖】
【附圖說明】
[0026]圖1至14為本發(fā)明實(shí)施例中的一種具有日志功能的動(dòng)態(tài)令牌的工作方法流程圖;
[0027]圖15為本發(fā)明實(shí)施例中的動(dòng)態(tài)令牌存儲(chǔ)新增日志的方法流程圖;
[0028]圖16為本發(fā)明實(shí)施例中的動(dòng)態(tài)令牌讀取日志的方法流程圖;
[0029]圖17為本發(fā)明實(shí)施例中的一種具有日志功能的動(dòng)態(tài)令牌的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0030]下面將結(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ù)的范圍。
[0031]本發(fā)明實(shí)施例提供了一種具有日志功能的動(dòng)態(tài)令牌的工作方法,動(dòng)態(tài)令牌判斷出按鍵中斷標(biāo)志被置位后,關(guān)閉按鍵中斷,掃描鍵盤,獲取第一鍵值,并根據(jù)第一鍵值,對當(dāng)前被按下的按鍵進(jìn)行判斷,如果當(dāng)前被按下的按鍵是第一按鍵,則生成動(dòng)態(tài)口令以及與該動(dòng)態(tài)口令對應(yīng)的日志,將動(dòng)態(tài)口令存儲(chǔ)到顯示數(shù)據(jù)緩沖區(qū),將日志存儲(chǔ)到日志存儲(chǔ)區(qū),開啟按鍵中斷;如果當(dāng)前被按下的按鍵是第三按鍵和第四按鍵的組合,則從日志存儲(chǔ)區(qū)中讀取日志,將讀取到的日志存儲(chǔ)到顯示數(shù)據(jù)緩沖區(qū),開啟按鍵中斷,其中,第一按鍵可以是動(dòng)態(tài)令牌上的確認(rèn)鍵,也可以是動(dòng)態(tài)令牌上的其他按鍵;第三按鍵可以動(dòng)態(tài)令牌上的是數(shù)字鍵,也可以是動(dòng)態(tài)令牌上的其他按鍵;第四按鍵可以是動(dòng)態(tài)令牌上的刪除鍵,也可以是動(dòng)態(tài)令牌上的其他按鍵。
[0032]如圖1至14所示,為本發(fā)明實(shí)施例中的一種具有日志功能的動(dòng)態(tài)令牌的工作方法流程圖,包括以下步驟:
[0033]步驟101,動(dòng)態(tài)令牌上電,執(zhí)行初始化操作。
[0034]步驟102,動(dòng)態(tài)令牌開啟總中斷和按鍵喚醒功能。
[0035]步驟103,動(dòng)態(tài)令牌判斷是否存在置位的中斷標(biāo)志,如果是,則執(zhí)行步驟104 ;否貝0,執(zhí)行步驟252。
[0036]步驟104,動(dòng)態(tài)令牌對置位的中斷標(biāo)志進(jìn)行判斷,如果是定時(shí)器中斷標(biāo)志,則執(zhí)行步驟105 ;如果是按鍵中斷標(biāo)志,則執(zhí)行步驟106 ;如果是其他中斷標(biāo)志,則將置位的中斷標(biāo)志復(fù)位,執(zhí)行相應(yīng)的操作,并返回步驟103。
[0037]需要說明的是,當(dāng)動(dòng)態(tài)令牌中的定時(shí)器溢出時(shí),動(dòng)態(tài)令牌接收到定時(shí)器中斷,通過硬件將定時(shí)器中斷標(biāo)志置位;當(dāng)動(dòng)態(tài)令牌上的按鍵被觸發(fā)時(shí),動(dòng)態(tài)令牌接收到按鍵中斷,通過硬件將按鍵中斷標(biāo)志置位;動(dòng)態(tài)令牌接收到其他中斷時(shí),通過硬件將對應(yīng)的中斷標(biāo)志置位。
[0038]步驟105,動(dòng)態(tài)令牌將定時(shí)器中斷標(biāo)志復(fù)位,并返回步驟103。
[0039]步驟106,動(dòng)態(tài)令牌關(guān)閉按鍵中斷,將長按鍵標(biāo)志復(fù)位,并延時(shí)第一預(yù)設(shè)時(shí)長。
[0040]其中,第一預(yù)設(shè)時(shí)長可以為201118。
[0041]步驟107,動(dòng)態(tài)令牌掃描鍵盤,獲取第一鍵值。
[0042]步驟108,動(dòng)態(tài)令牌判斷第一鍵值是否為空或錯(cuò)誤鍵值,如果是,則開啟按鍵中斷,并返回步驟103 ;否則,執(zhí)行步驟109。
[0043]步驟109,動(dòng)態(tài)令牌延時(shí)第二預(yù)設(shè)時(shí)長,保存第一鍵值,掃描鍵盤,獲取第二鍵值。
[0044]其中,第二預(yù)設(shè)時(shí)長可以為201118。
[0045]步驟110,動(dòng)態(tài)令牌判斷第二鍵值是否與第一鍵值相同,如果是,則執(zhí)行步驟111 ;否則,開啟按鍵中斷,并返回步驟103。
[0046]步驟111,動(dòng)態(tài)令牌根據(jù)第一鍵值,判斷當(dāng)前被按下的按鍵是否為電源鍵,如果是,則執(zhí)行步驟113 ;否則,執(zhí)行步驟112 ;
[0047]步驟112,動(dòng)態(tài)令牌根據(jù)第一鍵值,判斷當(dāng)前被按下的按鍵是否為第三按鍵和第四按鍵的組合,如果是,則執(zhí)行步驟113 ;否則,執(zhí)行步驟125。
[0048]其中,第三按鍵可以為數(shù)字鍵,例如,“1”,第四按鍵可以為刪除鍵。
[0049]步驟113,動(dòng)態(tài)令牌將定時(shí)器的溢出時(shí)間設(shè)置為第三預(yù)設(shè)時(shí)長,將溢出次數(shù)設(shè)置為第一預(yù)設(shè)值。
[0050]其中,第三預(yù)設(shè)時(shí)長可以為1001118。
[0051]步驟114,動(dòng)態(tài)令牌開啟總中斷和定時(shí)器的計(jì)時(shí)功能,將時(shí)鐘源切換至低速時(shí)鐘,進(jìn)入休眠模式。
[0052]步驟115,動(dòng)態(tài)令牌被喚醒后,關(guān)閉定時(shí)器的計(jì)時(shí)功能,將時(shí)鐘源切換至高速時(shí)鐘。
[0053]步驟116,動(dòng)態(tài)令牌判斷定時(shí)器中斷標(biāo)志是否置位,如果是,則執(zhí)行步驟117 ;否貝1],返回步驟114。
[0054]步驟117,動(dòng)態(tài)令牌判斷關(guān)閉總中斷,將定時(shí)器中斷標(biāo)志復(fù)位。
[0055]步驟118,動(dòng)態(tài)令牌掃描鍵盤,獲取第三鍵值。
[0056]步驟119,動(dòng)態(tài)令牌判斷第三鍵值是否為空按鍵,如果是,則執(zhí)行步驟125 ;否則,執(zhí)行步驟120。
[0057]步驟120,動(dòng)態(tài)令牌判斷第三鍵值是否為錯(cuò)誤按鍵,如果是,則開啟按鍵中斷和總中斷,并返回步驟103 ;否則,執(zhí)行步驟121。
[0058]步驟121,動(dòng)態(tài)令牌判斷第三鍵值是否與第一鍵值相同,如果是,則執(zhí)行步驟122 ;否則,開啟按鍵中斷和總中斷,并返回步驟103。
[0059]步驟122,動(dòng)態(tài)令牌對溢出次數(shù)進(jìn)行更新。
[0060]步驟123,動(dòng)態(tài)令牌判斷溢出次數(shù)是否為第二預(yù)設(shè)值,如果是,則執(zhí)行步驟124 ;否貝0,返回步驟114。
[0061]步驟124,動(dòng)態(tài)令牌將長按鍵標(biāo)志置位。
[0062]步驟125,動(dòng)態(tài)令牌根據(jù)第一鍵值,判斷當(dāng)前被按下的按鍵是否為電源鍵,如果是,則執(zhí)行步驟126 ;否則,執(zhí)行步驟134。
[0063]步驟126,動(dòng)態(tài)令牌判斷系統(tǒng)狀態(tài)是否為關(guān)機(jī)狀態(tài),如果是,則執(zhí)行步驟128 ;否貝0,執(zhí)行步驟127。
[0064]步驟127,動(dòng)態(tài)令牌清空按鍵數(shù)據(jù)緩沖區(qū)和顯示數(shù)據(jù)緩沖區(qū),將系統(tǒng)狀態(tài)設(shè)置為關(guān)機(jī)狀態(tài),將日志開機(jī)標(biāo)志復(fù)位,開啟按鍵中斷和總中斷,并返回步驟103。
[0065]步驟128,動(dòng)態(tài)令牌判斷長按鍵標(biāo)志是否置位,如果是,則執(zhí)行步驟129 ;否則,開啟按鍵中斷和總中斷,并返回步驟103。
[0066]需要說明的是,在步驟124中,動(dòng)態(tài)令牌判斷出溢出次數(shù)為第二預(yù)設(shè)值時(shí),將長按鍵標(biāo)志置位。
[0067]步驟129,動(dòng)態(tài)令牌判斷令牌鎖定標(biāo)志是否置位,如果是,則執(zhí)行步驟130 ;否則,執(zhí)行步驟131。
[0068]需要說明的是,在步驟168中,動(dòng)態(tài)令牌判斷出令牌驗(yàn)證錯(cuò)誤次數(shù)為第一預(yù)設(shè)次數(shù)時(shí),將令牌鎖定標(biāo)志置位。
[0069]步驟130,動(dòng)態(tài)令牌將系統(tǒng)狀態(tài)設(shè)置為顯示解鎖挑戰(zhàn)碼狀態(tài),顯示令牌鎖定信息,開啟按鍵中斷和總中斷,并返回步驟103。
[0070]步驟131,動(dòng)態(tài)令牌判斷密碼設(shè)置標(biāo)志是否置位,如果是,則執(zhí)行步驟132 ;否則,執(zhí)行步驟133。
[0071]需要說明的是,在步驟155中,動(dòng)態(tài)令牌設(shè)置密碼成功時(shí),將密碼設(shè)置標(biāo)志置位。
[0072]步驟132,動(dòng)態(tài)令牌將系統(tǒng)狀態(tài)設(shè)置為驗(yàn)證令牌?爪狀態(tài),顯示令牌驗(yàn)證信息,開啟按鍵中斷和總中斷,并返回步驟103。
[0073]步驟133,動(dòng)態(tài)令牌將系統(tǒng)狀態(tài)設(shè)置為第一設(shè)置?IX狀態(tài),顯示第一設(shè)置?IX信息,開啟按鍵中斷和總中斷,并返回步驟103。
[0074]步驟134,動(dòng)態(tài)令牌對系統(tǒng)狀態(tài)進(jìn)行判斷,如果是關(guān)機(jī)狀態(tài),則執(zhí)行步驟135 ;如果是第一設(shè)置狀態(tài),則執(zhí)行步驟141 ;如果是第二設(shè)置?爪狀態(tài),則執(zhí)行步驟148 ;如果是設(shè)置錯(cuò)誤狀態(tài),則執(zhí)行步驟159 ;如果是驗(yàn)證令牌?爪狀態(tài),則執(zhí)行步驟160 ;如果是?爪錯(cuò)誤狀態(tài),則執(zhí)行步驟172 ;如果是顯示解鎖挑戰(zhàn)碼狀態(tài),則執(zhí)行步驟175 ;如果是等待輸入解鎖碼狀態(tài),則執(zhí)行步驟176 ;如果是令牌界面狀態(tài),則執(zhí)行步驟186 ;如果是顯示動(dòng)態(tài)口令狀態(tài),則執(zhí)行步驟213 ;如果是驗(yàn)證日志?爪狀態(tài),則執(zhí)行步驟215 ;如果是日志顯示狀態(tài),則執(zhí)行步驟228。
[0075]步驟135,動(dòng)態(tài)令牌根據(jù)第一鍵值,判斷當(dāng)前被按下的按鍵是否為第三按鍵和第四按鍵的組合,如果是,則執(zhí)行步驟136 ;否則,開啟按鍵中斷和總中斷,并返回步驟103。
[0076]步驟136,動(dòng)態(tài)令牌判斷長按鍵標(biāo)志是否置位,如果是,則執(zhí)行步驟137 ;否則,開啟按鍵中斷和總中斷,并返回步驟103。
[0077]步驟137,動(dòng)態(tài)令牌將日志開機(jī)標(biāo)志置位。
[0078]步驟138,動(dòng)態(tài)令牌判斷日志鎖定標(biāo)志是否置位,如果是,則執(zhí)行步驟139 ;否則,執(zhí)行步驟140。
[0079]需要說明的是,在步驟223中,動(dòng)態(tài)令牌判斷出日志驗(yàn)證錯(cuò)誤次數(shù)為第二預(yù)設(shè)次數(shù)時(shí),將日志鎖定標(biāo)志置位。
[0080]步驟139,動(dòng)態(tài)令牌將系統(tǒng)狀態(tài)設(shè)置為顯示解鎖挑戰(zhàn)碼狀態(tài),顯示日志鎖定信息,開啟按鍵中斷和總中斷,并返回步驟103。
[0081]步驟140,動(dòng)態(tài)令牌將系統(tǒng)狀態(tài)設(shè)置為驗(yàn)證日志?爪狀態(tài),顯示日志驗(yàn)證信息,開啟按鍵中斷和總中斷,并返回步驟103。
[0082]步驟141,動(dòng)態(tài)令牌根據(jù)第一鍵值,對當(dāng)前被按下的按鍵進(jìn)行判斷,如果是數(shù)字鍵,則執(zhí)行步驟142 ;如果是刪除鍵,則執(zhí)行步驟146。
[0083]步驟142,動(dòng)態(tài)令牌將第一鍵值保存到按鍵數(shù)據(jù)緩沖區(qū)中,更新按鍵數(shù)據(jù)長度。
[0084]具體地,動(dòng)態(tài)令牌將按鍵數(shù)據(jù)長度加1,作為更新后的按鍵數(shù)據(jù)長度。
[0085]步驟143,動(dòng)態(tài)令牌判斷按鍵數(shù)據(jù)長度是否小于第一預(yù)設(shè)長度,如果是,則執(zhí)行步驟144;否則,執(zhí)行步驟145。
[0086]其中,第一預(yù)設(shè)長度為的長度。
[0087]步驟144,動(dòng)態(tài)令牌對第一設(shè)置?爪信息進(jìn)行更新顯示,開啟按鍵中斷和總中斷,并返回步驟103。
[0088]步驟145,動(dòng)態(tài)令牌將按鍵數(shù)據(jù)緩沖區(qū)中的數(shù)據(jù)存儲(chǔ)到密碼數(shù)據(jù)緩沖區(qū)中,清空按鍵數(shù)據(jù)緩沖區(qū),將系統(tǒng)狀態(tài)設(shè)置為第二設(shè)置狀態(tài),顯示第二設(shè)置信息,開啟按鍵中斷和總中斷,并返回步驟103。
[0089]步驟146,動(dòng)態(tài)令牌判斷按鍵數(shù)據(jù)長度是否為零,如果是,則開啟按鍵中斷和總中斷,并返回步驟103 ;否則,執(zhí)行步驟147。
[0090]步驟147,動(dòng)態(tài)令牌將按鍵數(shù)據(jù)緩沖區(qū)中最后一次存入的數(shù)據(jù)刪除,更新按鍵數(shù)據(jù)長度,對第一設(shè)置信息進(jìn)行更新顯示,開啟按鍵中斷和總中斷,并返回步驟103。
[0091]具體地,動(dòng)態(tài)令牌將按鍵數(shù)據(jù)長度減1,作為更新后的按鍵數(shù)據(jù)長度。
[0092]步驟148,動(dòng)態(tài)令牌根據(jù)第一鍵值,對當(dāng)前被按下的按鍵進(jìn)行判斷,如果是數(shù)字鍵,則執(zhí)行步驟149 ;如果是刪除鍵,則執(zhí)行步驟157。
[0093]步驟149,動(dòng)態(tài)令牌將第一鍵值保存到按鍵數(shù)據(jù)緩沖區(qū)中,更新按鍵數(shù)據(jù)長度。
[0094]具體地,動(dòng)態(tài)令牌將按鍵數(shù)據(jù)長度加1,作為更新后的按鍵數(shù)據(jù)長度。
[0095]步驟150,動(dòng)態(tài)令牌判斷按鍵數(shù)據(jù)長度是否小于第一預(yù)設(shè)長度,如果是,則執(zhí)行步驟151 ;否則,執(zhí)行步驟152。
[0096]步驟151,動(dòng)態(tài)令牌對第二設(shè)置?爪信息進(jìn)行更新顯示,開啟按鍵中斷和總中斷,并返回步驟103。
[0097]步驟152,動(dòng)態(tài)令牌判斷按鍵數(shù)據(jù)緩沖區(qū)中的數(shù)據(jù)是否與密碼數(shù)據(jù)緩沖區(qū)中的數(shù)據(jù)相同,如果是,則執(zhí)行步驟154 ;否則,執(zhí)行步驟153。
[0098]步驟153,動(dòng)態(tài)令牌清空按鍵數(shù)據(jù)緩沖區(qū)和密碼數(shù)據(jù)緩沖區(qū),將系統(tǒng)狀態(tài)設(shè)置為設(shè)置錯(cuò)誤狀態(tài),顯示設(shè)置錯(cuò)誤信息,開啟按鍵中斷和總中斷,并返回步驟103。
[0099]步驟154,動(dòng)態(tài)令牌判斷日志開機(jī)標(biāo)志是否直似,如果是,則執(zhí)彳了步驟155 ;否則,執(zhí)行步驟156。
[0100]需要說明的是,在步驟137中,動(dòng)態(tài)令牌判斷出當(dāng)前被按下的按鍵為第三按鍵和第四按鍵的組合,且長按鍵標(biāo)志置位時(shí),將日志開機(jī)標(biāo)志置位。
[0101]步驟155,動(dòng)態(tài)令牌將密碼設(shè)置標(biāo)志置位,清空按鍵數(shù)據(jù)緩沖區(qū),將系統(tǒng)狀態(tài)設(shè)置為日志顯示狀態(tài),顯示日志界面信息,開啟按鍵中斷和總中斷,并返回步驟103。
[0102]步驟156,動(dòng)態(tài)令牌將密碼設(shè)置標(biāo)志置位,清空按鍵數(shù)據(jù)緩沖區(qū),將系統(tǒng)狀態(tài)設(shè)置為令牌界面狀態(tài),顯示令牌界面信息,開啟按鍵中斷和總中斷,并返回步驟103。
[0103]步驟157,動(dòng)態(tài)令牌判斷按鍵數(shù)據(jù)長度是否為零,如果是,則開啟按鍵中斷和總中斷,并返回步驟103 ;否則,執(zhí)行步驟158。
[0104]步驟158,動(dòng)態(tài)令牌將按鍵數(shù)據(jù)緩沖區(qū)中最后一次存入的數(shù)據(jù)刪除,更新按鍵數(shù)據(jù)長度,對第二設(shè)置信息進(jìn)行更新顯示,開啟按鍵中斷和總中斷,并返回步驟103。
[0105]具體地,動(dòng)態(tài)令牌將按鍵數(shù)據(jù)長度減1,作為更新后的按鍵數(shù)據(jù)長度。
[0106]步驟159,動(dòng)態(tài)令牌將系統(tǒng)狀態(tài)設(shè)置為第一設(shè)置?IX狀態(tài),顯示第一設(shè)置?IX信息,開啟按鍵中斷和總中斷,并返回步驟103。
[0107]步驟160,動(dòng)態(tài)令牌根據(jù)第一鍵值,對當(dāng)前被按下的按鍵進(jìn)行判斷,如果是數(shù)字鍵,則執(zhí)行步驟161 ;如果是刪除鍵,則執(zhí)行步驟170。
[0108]步驟161,動(dòng)態(tài)令牌將第一鍵值保存到按鍵數(shù)據(jù)緩沖區(qū)中,更新按鍵數(shù)據(jù)長度。
[0109]具體地,動(dòng)態(tài)令牌將按鍵數(shù)據(jù)長度加1,作為更新后的按鍵數(shù)據(jù)長度。
[0110]步驟162,動(dòng)態(tài)令牌判斷按鍵數(shù)據(jù)長度是否小于第一預(yù)設(shè)長度,如果是,則執(zhí)行步驟163 ;否則,執(zhí)行步驟164。
[0111]步驟163,動(dòng)態(tài)令牌對令牌驗(yàn)證信息進(jìn)行更新顯示,開啟按鍵中斷和總中斷,并返回步驟103。
[0112]步驟164,動(dòng)態(tài)令牌判斷按鍵數(shù)據(jù)緩沖區(qū)中的數(shù)據(jù)是否與密碼數(shù)據(jù)緩沖區(qū)中的數(shù)據(jù)相同,如果是,則執(zhí)行步驟165 ;否則,執(zhí)行步驟166。
[0113]步驟165,動(dòng)態(tài)令牌清空按鍵數(shù)據(jù)緩沖區(qū),將令牌驗(yàn)證錯(cuò)誤次數(shù)清零,將系統(tǒng)狀態(tài)設(shè)置為令牌界面狀態(tài),顯示令牌界面信息,開啟按鍵中斷和總中斷,并返回步驟103。
[0114]步驟166,動(dòng)態(tài)令牌清空按鍵數(shù)據(jù)緩沖區(qū),對令牌驗(yàn)證錯(cuò)誤次數(shù)進(jìn)行更新。
[0115]具體地,動(dòng)態(tài)令牌將令牌驗(yàn)證錯(cuò)誤次數(shù)加1,作為更新后的令牌驗(yàn)證錯(cuò)誤次數(shù)。
[0116]步驟167,動(dòng)態(tài)令牌判斷令牌驗(yàn)證錯(cuò)誤次數(shù)是否為第一預(yù)設(shè)次數(shù),如果是,則執(zhí)行步驟168 ;否則,執(zhí)行步驟169。
[0117]步驟168,動(dòng)態(tài)令牌將令牌鎖定標(biāo)志置位,將系統(tǒng)狀態(tài)設(shè)置為顯示解鎖挑戰(zhàn)碼狀態(tài),顯示令牌鎖定信息,開啟按鍵中斷和總中斷,并返回步驟103。
[0118]步驟169,動(dòng)態(tài)令牌將系統(tǒng)狀態(tài)設(shè)置為?爪錯(cuò)誤狀態(tài),顯示?爪錯(cuò)誤信息,開啟按鍵中斷和總中斷,并返回步驟103。
[0119]步驟170,動(dòng)態(tài)令牌判斷按鍵數(shù)據(jù)長度是否為零,如果是,則開啟按鍵中斷和總中斷,并返回步驟103 ;否則,執(zhí)行步驟171。
[0120]步驟171,動(dòng)態(tài)令牌將按鍵數(shù)據(jù)緩沖區(qū)中最后一次存入的數(shù)據(jù)刪除,更新按鍵數(shù)據(jù)長度,對令牌驗(yàn)證信息進(jìn)行更新顯示,開啟按鍵中斷和總中斷,并返回步驟103。
[0121]具體地,動(dòng)態(tài)令牌將按鍵數(shù)據(jù)長度減1,作為更新后的按鍵數(shù)據(jù)長度。
[0122]步驟172,動(dòng)態(tài)令牌判斷日志開機(jī)標(biāo)志是否置位,如果是,則執(zhí)行步驟174 ;否則,執(zhí)行步驟173。
[0123]步驟173,動(dòng)態(tài)令牌將系統(tǒng)狀態(tài)設(shè)置為驗(yàn)證令牌?爪狀態(tài),顯示令牌驗(yàn)證信息,開啟按鍵中斷和總中斷,并返回步驟103。
[0124]步驟174,動(dòng)態(tài)令牌將系統(tǒng)狀態(tài)設(shè)置為驗(yàn)證日志?爪狀態(tài),顯示日志驗(yàn)證信息,開啟按鍵中斷和總中斷,并返回步驟103。
[0125]步驟175,動(dòng)態(tài)令牌生成解鎖挑戰(zhàn)碼,將系統(tǒng)狀態(tài)設(shè)置為等待輸入解鎖碼狀態(tài),顯示解鎖挑戰(zhàn)碼,開啟按鍵中斷和總中斷,并返回步驟103。
[0126]步驟176,動(dòng)態(tài)令牌根據(jù)第一鍵值,對當(dāng)前被按下的按鍵進(jìn)行判斷,如果是數(shù)字鍵,則執(zhí)行步驟177 ;如果是刪除鍵,則執(zhí)行步驟184。
[0127]步驟177,動(dòng)態(tài)令牌將第一鍵值保存到按鍵數(shù)據(jù)緩沖區(qū)中,更新按鍵數(shù)據(jù)長度。
[0128]具體地,動(dòng)態(tài)令牌將按鍵數(shù)據(jù)長度加1,作為更新后的按鍵數(shù)據(jù)長度。
[0129]步驟178,動(dòng)態(tài)令牌判斷按鍵數(shù)據(jù)長度是否小于第二預(yù)設(shè)長度,如果是,則執(zhí)行步驟179 ;否則,執(zhí)行步驟180。
[0130]其中,第二預(yù)設(shè)長度為解鎖碼的長度。
[0131]步驟179,動(dòng)態(tài)令牌顯示解鎖碼輸入信息,開啟按鍵中斷和總中斷,并返回步驟103。
[0132]步驟180,動(dòng)態(tài)令牌根據(jù)解鎖挑戰(zhàn)碼,對按鍵數(shù)據(jù)緩沖區(qū)中的數(shù)據(jù)進(jìn)行驗(yàn)證,如果驗(yàn)證通過,則執(zhí)行步驟181 ;否則,執(zhí)行步驟182。
[0133]步驟181,動(dòng)態(tài)令牌清空按鍵數(shù)據(jù)緩沖區(qū),將令牌鎖定標(biāo)志、日志鎖定標(biāo)志和密碼設(shè)置標(biāo)志復(fù)位,將系統(tǒng)狀態(tài)設(shè)置為第一設(shè)置狀態(tài),顯示第一設(shè)置信息,開啟按鍵中斷和總中斷,并返回步驟103。
[0134]步驟182,動(dòng)態(tài)令牌清空按鍵數(shù)據(jù)緩沖區(qū),將系統(tǒng)狀態(tài)設(shè)置為解鎖碼錯(cuò)誤狀態(tài),顯示解鎖碼錯(cuò)誤信息。
[0135]步驟183,動(dòng)態(tài)令牌延時(shí)第四預(yù)設(shè)時(shí)長,將系統(tǒng)狀態(tài)設(shè)置為關(guān)機(jī)狀態(tài),開啟按鍵中斷和總中斷,并返回步驟103。
[0136]步驟184,動(dòng)態(tài)令牌判斷按鍵數(shù)據(jù)長度是否為零,如果是,則開啟按鍵中斷和總中斷,并返回步驟103 ;否則,執(zhí)行步驟185。
[0137]步驟185,動(dòng)態(tài)令牌將按鍵數(shù)據(jù)緩沖區(qū)中最后一次存入的數(shù)據(jù)刪除,更新按鍵數(shù)據(jù)長度,對解鎖碼輸入信息進(jìn)行更新顯示,開啟按鍵中斷和總中斷,并返回步驟103。
[0138]具體地,動(dòng)態(tài)令牌將按鍵數(shù)據(jù)長度減1,作為更新后的按鍵數(shù)據(jù)長度。
[0139]步驟186,動(dòng)態(tài)令牌根據(jù)第一鍵值,對當(dāng)前被按下的按鍵進(jìn)行判斷,如果是數(shù)字鍵,則執(zhí)行步驟187 ;如果是刪除鍵,則執(zhí)行步驟192 ;如果是左鍵,則執(zhí)行步驟197 ;如果是右鍵,則執(zhí)行步驟201 ;如果是確認(rèn)鍵,則執(zhí)行步驟205。
[0140]步驟187,動(dòng)態(tài)令牌判斷按鍵數(shù)據(jù)長度是否小于第三預(yù)設(shè)長度,如果是,則執(zhí)行步驟188 ;否則,開啟按鍵中斷和總中斷,并返回步驟103。
[0141]其中,第三預(yù)設(shè)長度為挑戰(zhàn)碼的長度。
[0142]步驟188,動(dòng)態(tài)令牌將第一鍵值保存到按鍵數(shù)據(jù)緩沖區(qū)中,更新按鍵數(shù)據(jù)長度。
[0143]具體地,動(dòng)態(tài)令牌將按鍵數(shù)據(jù)長度加1,作為更新后的按鍵數(shù)據(jù)長度。
[0144]步驟189,動(dòng)態(tài)令牌判斷顯示數(shù)據(jù)長度是否小于第四預(yù)設(shè)長度,如果是,則執(zhí)行步驟190 ;否則,執(zhí)行步驟191。
[0145]其中,第四預(yù)設(shè)長度為顯示數(shù)據(jù)緩沖區(qū)的總長度。
[0146]步驟190,動(dòng)態(tài)令牌將第一鍵值保存到顯示數(shù)據(jù)緩沖區(qū)中,更新顯示數(shù)據(jù)長度,開啟按鍵中斷和總中斷,并返回步驟103。
[0147]具體地,動(dòng)態(tài)令牌將顯示數(shù)據(jù)長度加1,作為更新后的顯示數(shù)據(jù)長度。
[0148]步驟191,動(dòng)態(tài)令牌將顯示數(shù)據(jù)緩沖區(qū)中最早一次存入的數(shù)據(jù)刪除,將顯示數(shù)據(jù)緩沖區(qū)中剩余的數(shù)據(jù)前移,將第一鍵值保存到按鍵數(shù)據(jù)緩沖區(qū)中,開啟按鍵中斷和總中斷,并返回步驟103。
[0149]具體地,動(dòng)態(tài)令牌將顯示數(shù)據(jù)緩沖區(qū)中最早一次存入的數(shù)據(jù)刪除后,將顯示數(shù)據(jù)緩沖區(qū)中剩余的數(shù)據(jù)前移至以顯示數(shù)據(jù)緩沖區(qū)的首地址為起始位置的連續(xù)存儲(chǔ)空間,將第一鍵值保存到該連續(xù)存儲(chǔ)空間的末尾。
[0150]步驟192,動(dòng)態(tài)令牌判斷按鍵數(shù)據(jù)長度是否為零,如果是,則開啟按鍵中斷和總中斷,并返回步驟103 ;否則,執(zhí)行步驟193。
[0151]步驟193,動(dòng)態(tài)令牌將按鍵數(shù)據(jù)緩沖區(qū)中最后一次存入的數(shù)據(jù)刪除,更新按鍵數(shù)據(jù)長度。
[0152]步驟194,動(dòng)態(tài)令牌判斷按鍵數(shù)據(jù)長度是否小于第四預(yù)設(shè)長度,如果是,則執(zhí)行步驟195 ;否則,執(zhí)行步驟196。
[0153]步驟195,動(dòng)態(tài)令牌將按鍵數(shù)據(jù)緩沖區(qū)中的數(shù)據(jù)存儲(chǔ)到顯示數(shù)據(jù)緩沖區(qū)中,將顯示數(shù)據(jù)長度設(shè)置為按鍵數(shù)據(jù)長度,開啟按鍵中斷和總中斷,并返回步驟103。
[0154]步驟196,動(dòng)態(tài)令牌從按鍵數(shù)據(jù)緩沖區(qū)中選取最晚存入的、第四預(yù)設(shè)長度的數(shù)據(jù),將選取的數(shù)據(jù)存儲(chǔ)到顯示數(shù)據(jù)緩沖區(qū)中,將顯示數(shù)據(jù)長度設(shè)置為第四預(yù)設(shè)長度,開啟按鍵中斷和總中斷,并返回步驟103。
[0155]步驟197,動(dòng)態(tài)令牌判斷顯示數(shù)據(jù)緩沖區(qū)中是否存在比按鍵數(shù)據(jù)緩沖區(qū)中的數(shù)據(jù)更早存入的未顯示數(shù)據(jù),如果是,則執(zhí)行步驟198 ;否則,開啟按鍵中斷和總中斷,并返回步驟 103。
[0156]步驟198,動(dòng)態(tài)令牌判斷未顯示數(shù)據(jù)的長度是否小于第四預(yù)設(shè)長度,如果是,則執(zhí)行步驟199 ;否則,執(zhí)行步驟200。
[0157]步驟199,動(dòng)態(tài)令牌將未顯示數(shù)據(jù)存儲(chǔ)到顯示數(shù)據(jù)緩沖區(qū)中,將顯示數(shù)據(jù)長度設(shè)置為未顯示數(shù)據(jù)的長度,開啟按鍵中斷和總中斷,并返回步驟103。
[0158]步驟200,動(dòng)態(tài)令牌從未顯示數(shù)據(jù)中選取最晚存入的、第四預(yù)設(shè)長度的數(shù)據(jù),將選取的數(shù)據(jù)存儲(chǔ)到顯示數(shù)據(jù)緩沖區(qū)中,將顯示數(shù)據(jù)長度設(shè)置為第四預(yù)設(shè)長度,開啟按鍵中斷和總中斷,并返回步驟103。
[0159]步驟201,動(dòng)態(tài)令牌判斷顯示數(shù)據(jù)緩沖區(qū)中是否存在比按鍵數(shù)據(jù)緩沖區(qū)中的數(shù)據(jù)更晚存入的未顯示數(shù)據(jù),如果是,則執(zhí)行步驟202 ;否則,開啟按鍵中斷和總中斷,并返回步驟 103。
[0160]步驟202,動(dòng)態(tài)令牌判斷未顯示數(shù)據(jù)的長度是否小于第四預(yù)設(shè)長度,如果是,則執(zhí)行步驟203 ;否則,執(zhí)行步驟204。
[0161]步驟203,動(dòng)態(tài)令牌將未顯示數(shù)據(jù)存儲(chǔ)到顯示數(shù)據(jù)緩沖區(qū)中,將顯示數(shù)據(jù)長度設(shè)置為未顯示數(shù)據(jù)的長度,開啟按鍵中斷和總中斷,并返回步驟103。
[0162]步驟204,動(dòng)態(tài)令牌從未顯示數(shù)據(jù)中選取最早存入的、第四預(yù)設(shè)長度的數(shù)據(jù),將選取的數(shù)據(jù)存儲(chǔ)到顯示數(shù)據(jù)緩沖區(qū)中,將顯示數(shù)據(jù)長度設(shè)置為第四預(yù)設(shè)長度,開啟按鍵中斷和總中斷,并返回步驟103。
[0163]步驟205,動(dòng)態(tài)令牌判斷按鍵數(shù)據(jù)長度是否為零,如果是,則執(zhí)行步驟206 ;否則,執(zhí)行步驟211。
[0164]步驟206,動(dòng)態(tài)令牌根據(jù)時(shí)間因子,生成動(dòng)態(tài)口令以及與該動(dòng)態(tài)口令對應(yīng)的新增日志,將動(dòng)態(tài)口令存儲(chǔ)到顯示數(shù)據(jù)緩沖區(qū)中。
[0165]具體地,動(dòng)態(tài)令牌根據(jù)時(shí)間因子生成時(shí)間型動(dòng)態(tài)口令,為新增日志分配索引,將與時(shí)間因子對應(yīng)的時(shí)間信息的長度作為新增日志的長度,對索引、新增日志的長度以及與時(shí)間因子對應(yīng)的時(shí)間信息進(jìn)行組合,得到新增日志。
[0166]步驟207,動(dòng)態(tài)令牌判斷日志條數(shù)是否為零,如果是,則執(zhí)行步驟208 ;否則,執(zhí)行步驟209。
[0167]步驟208,動(dòng)態(tài)令牌將新增日志存儲(chǔ)到日志存儲(chǔ)區(qū)中,將最前日志索引和最后日志索引均設(shè)置為新增日志中的索引,更新日志條數(shù),將系統(tǒng)狀態(tài)設(shè)置為顯示動(dòng)態(tài)口令狀態(tài),開啟按鍵中斷和總中斷,并返回步驟103。
[0168]具體地,動(dòng)態(tài)令牌將日志條數(shù)加1,作為更新后的日志條數(shù)。
[0169]步驟209,動(dòng)態(tài)令牌判斷新增日志占用的空間是否大于日志存儲(chǔ)區(qū)中的剩余空間,如果是,則執(zhí)行步驟210 ;否則,將新增日志存儲(chǔ)到日志存儲(chǔ)區(qū)中,更新日志條數(shù)和最后日志索引,將系統(tǒng)狀態(tài)設(shè)置為顯示動(dòng)態(tài)口令狀態(tài),開啟按鍵中斷和總中斷,并返回步驟103。
[0170]具體地,動(dòng)態(tài)令牌可以將最后日志索引更新為新增日志中的索引。
[0171]步驟210,動(dòng)態(tài)令牌將日志存儲(chǔ)區(qū)中最早一次存入的日志刪除,將日志存儲(chǔ)區(qū)中剩余的日志前移,更新日志條數(shù)和最前日志索引,并返回步驟209。
[0172]具體地,動(dòng)態(tài)令牌將顯示數(shù)據(jù)緩沖區(qū)中最早一次存入的日志刪除后,將日志存儲(chǔ)區(qū)中剩余的日志前移至以日志存儲(chǔ)區(qū)的首地址為起始位置的連續(xù)存儲(chǔ)空間,將日志條數(shù)減1,作為更新后的日志條數(shù),并將最前日志索引加1。
[0173]步驟211,動(dòng)態(tài)令牌清空顯示數(shù)據(jù)緩沖區(qū),將按鍵數(shù)據(jù)緩沖區(qū)中的數(shù)據(jù)作為挑戰(zhàn)碼,生成動(dòng)態(tài)口令以及與該動(dòng)態(tài)口令對應(yīng)的新增日志。
[0174]具體地,動(dòng)態(tài)令牌根據(jù)時(shí)間因子和挑戰(zhàn)碼生成挑戰(zhàn)型動(dòng)態(tài)口令,為新增日志分配索引,對與挑戰(zhàn)碼對應(yīng)的交易信息進(jìn)行壓縮,得到壓縮交易數(shù)據(jù),獲取與時(shí)間因子對應(yīng)的時(shí)間信息的長度和壓縮交易數(shù)據(jù)的長度之和作為新增日志的長度,對索引、新增日志的長度、與時(shí)間因子對應(yīng)的時(shí)間信息,以及壓縮交易數(shù)據(jù)進(jìn)行組合,得到新增日志。
[0175]步驟212,動(dòng)態(tài)令牌將動(dòng)態(tài)口令存儲(chǔ)到顯示數(shù)據(jù)緩沖區(qū)中,清空按鍵數(shù)據(jù)緩沖區(qū),并返回步驟207。
[0176]步驟213,動(dòng)態(tài)令牌根據(jù)第一鍵值,判斷當(dāng)前被按下的按鍵是否為數(shù)字鍵或刪除鍵,如果是,則清空顯示數(shù)據(jù)緩沖區(qū),并執(zhí)行步驟214 ;否則,開啟按鍵中斷和總中斷,并返回步驟103。
[0177]步驟214,動(dòng)態(tài)令牌將系統(tǒng)狀態(tài)設(shè)置為令牌界面狀態(tài),顯示令牌界面信息,開啟按鍵中斷和總中斷,并返回步驟103。
[0178]步驟215,動(dòng)態(tài)令牌根據(jù)第一鍵值,對當(dāng)前被按下的按鍵進(jìn)行判斷,如果是數(shù)字鍵,則執(zhí)行步驟216 ;如果是刪除鍵,則執(zhí)行步驟226。
[0179]步驟216,動(dòng)態(tài)令牌將第一鍵值保存到按鍵數(shù)據(jù)緩沖區(qū)中,更新按鍵數(shù)據(jù)長度。
[0180]具體地,動(dòng)態(tài)令牌將按鍵數(shù)據(jù)長度加1,作為更新后的按鍵數(shù)據(jù)長度。
[0181]步驟217,動(dòng)態(tài)令牌判斷按鍵數(shù)據(jù)長度是否小于第一預(yù)設(shè)長度,如果是,則執(zhí)行步驟218 ;否則,執(zhí)行步驟219。
[0182]步驟218,動(dòng)態(tài)令牌對日志驗(yàn)證信息進(jìn)行更新顯示,開啟按鍵中斷和總中斷,并返回步驟103。
[0183]步驟219,動(dòng)態(tài)令牌判斷按鍵數(shù)據(jù)緩沖區(qū)中的數(shù)據(jù)是否與密碼數(shù)據(jù)緩沖區(qū)中的數(shù)據(jù)相同,如果是,則執(zhí)行步驟220 ;否則,執(zhí)行步驟221。
[0184]步驟220,動(dòng)態(tài)令牌清空按鍵數(shù)據(jù)緩沖區(qū),將日志驗(yàn)證錯(cuò)誤次數(shù)清零,將系統(tǒng)狀態(tài)設(shè)置為日志顯示狀態(tài),將時(shí)間信息顯示標(biāo)志置位,將當(dāng)前日志索引設(shè)置為最后日志索引,根據(jù)當(dāng)前日志索引從日志存儲(chǔ)區(qū)中讀取對應(yīng)的日志,將讀取到的日志存儲(chǔ)到日志緩沖區(qū)中,將讀取到的日志中的時(shí)間信息存儲(chǔ)到顯示數(shù)據(jù)緩沖區(qū)中,開啟按鍵中斷和總中斷,并返回步驟103。
[0185]本實(shí)施例中,動(dòng)態(tài)令牌根據(jù)當(dāng)前日志索引從日志存儲(chǔ)區(qū)中讀取對應(yīng)的日志,具體包括:動(dòng)態(tài)令牌將讀取指針設(shè)置為日志存儲(chǔ)區(qū)的首地址,根據(jù)讀取指針,從日志存儲(chǔ)區(qū)中讀取對應(yīng)的日志,判斷讀取到的日志中的索引是否與當(dāng)前日志索引相同,如果是,則確定讀取到的日志為與所述當(dāng)前日志索引對應(yīng)的日志;否則,根據(jù)讀取到的日志占用的空間大小更新讀取指針,并繼續(xù)根據(jù)讀取指針,從日志存儲(chǔ)區(qū)中讀取對應(yīng)的日志,直到讀取到的日志中的索引與當(dāng)前日志索引相同。
[0186]步驟221,動(dòng)態(tài)令牌清空按鍵數(shù)據(jù)緩沖區(qū),對日志驗(yàn)證錯(cuò)誤次數(shù)進(jìn)行更新。
[0187]具體地,動(dòng)態(tài)令牌將日志驗(yàn)證錯(cuò)誤次數(shù)加1,作為更新后的日志驗(yàn)證錯(cuò)誤次數(shù)。
[0188]步驟222,動(dòng)態(tài)令牌判斷日志驗(yàn)證錯(cuò)誤次數(shù)是否為第二預(yù)設(shè)次數(shù),如果是,則執(zhí)行步驟223 ;否則,執(zhí)行步驟224。
[0189]步驟223,動(dòng)態(tài)令牌將日志鎖定標(biāo)志置位,將系統(tǒng)狀態(tài)設(shè)置為顯示解鎖挑戰(zhàn)碼狀態(tài),顯示日志鎖定信息,開啟按鍵中斷和總中斷,并返回步驟103。
[0190]步驟224,動(dòng)態(tài)令牌將系統(tǒng)狀態(tài)設(shè)置為?爪錯(cuò)誤狀態(tài),顯示?爪錯(cuò)誤信息。
[0191]步驟225,動(dòng)態(tài)令牌開啟按鍵中斷和總中斷,并返回步驟103。
[0192]步驟226,動(dòng)態(tài)令牌判斷按鍵數(shù)據(jù)長度是否為零,如果是,則開啟按鍵中斷和總中斷,并返回步驟103 ;否則,執(zhí)行步驟227。
[0193]步驟227,動(dòng)態(tài)令牌將按鍵數(shù)據(jù)緩沖區(qū)中最后一次存入的數(shù)據(jù)刪除,更新按鍵數(shù)據(jù)長度,對日志驗(yàn)證信息進(jìn)行更新顯示,開啟按鍵中斷和總中斷,并返回步驟103。
[0194]具體地,動(dòng)態(tài)令牌將按鍵數(shù)據(jù)長度減1,作為更新后的按鍵數(shù)據(jù)長度。
[0195]步驟228,動(dòng)態(tài)令牌判斷時(shí)間信息顯示標(biāo)志是否置位,如果是,則執(zhí)行步驟229 ;否貝0,執(zhí)行步驟240。
[0196]需要說明的是,在步驟220中,動(dòng)態(tài)令牌判斷出按鍵數(shù)據(jù)緩沖區(qū)中的數(shù)據(jù)與密碼數(shù)據(jù)緩沖區(qū)中的數(shù)據(jù)相同時(shí),將時(shí)間信息顯示標(biāo)志置位。
[0197]步驟229,動(dòng)態(tài)令牌根據(jù)第一鍵值,對當(dāng)前被按下的按鍵進(jìn)行判斷,如果是確認(rèn)鍵,則執(zhí)行步驟230 ;如果是左鍵,則執(zhí)行步驟236 ;如果是右鍵,則執(zhí)行步驟238。
[0198]步驟230,動(dòng)態(tài)令牌判斷日志緩沖區(qū)中的日志的長度是否為第五預(yù)設(shè)長度,如果是,則執(zhí)行步驟231 ;否則,執(zhí)行步驟232。
[0199]其中,第五預(yù)設(shè)長度為日志中的時(shí)間信息的長度。
[0200]步驟231,動(dòng)態(tài)令牌顯示空白交易信息,將時(shí)間信息顯示標(biāo)志復(fù)位,開啟按鍵中斷和總中斷,并返回步驟103。
[0201]步驟232,動(dòng)態(tài)令牌將時(shí)間信息顯示標(biāo)志復(fù)位,從日志緩沖區(qū)中的日志中獲取壓縮交易數(shù)據(jù),對所述壓縮交易數(shù)據(jù)進(jìn)行解壓,得到當(dāng)前交易信息。
[0202]步驟233,動(dòng)態(tài)令牌判斷當(dāng)前交易信息的長度是否大于第四預(yù)設(shè)長度,如果是,貝0執(zhí)行步驟234 ;否則,執(zhí)行步驟235。
[0203]步驟234,動(dòng)態(tài)令牌從當(dāng)前交易信息中選取存儲(chǔ)位置最靠前的、第四預(yù)設(shè)長度的數(shù)據(jù)作為當(dāng)前顯示信息,將當(dāng)前顯示信息存儲(chǔ)到顯示數(shù)據(jù)緩沖區(qū)中,點(diǎn)亮顯示屏上的右箭頭,開啟按鍵中斷和總中斷,并返回步驟103。
[0204]步驟235,動(dòng)態(tài)令牌將當(dāng)前交易信息存儲(chǔ)到顯示數(shù)據(jù)緩沖區(qū)中,開啟按鍵中斷和總中斷,并返回步驟103。
[0205]步驟236,動(dòng)態(tài)令牌判斷當(dāng)前日志索引是否等于最前日志索引,如果是,則開啟按鍵中斷和總中斷,并返回步驟103 ;否則,執(zhí)行步驟237。
[0206]步驟237,動(dòng)態(tài)令牌更新當(dāng)前日志索引,根據(jù)當(dāng)前日志索引從日志存儲(chǔ)區(qū)中讀取對應(yīng)的日志,將讀取到的日志中的時(shí)間信息存儲(chǔ)到顯示數(shù)據(jù)緩沖區(qū)中,開啟按鍵中斷和總中斷,并返回步驟103。
[0207]具體地,動(dòng)態(tài)令牌可以將當(dāng)前日志索引減1。
[0208]步驟238,動(dòng)態(tài)令牌判斷當(dāng)前日志索引是否等于最后日志索引,如果是,則開啟按鍵中斷和總中斷,并返回步驟103 ;否則,執(zhí)行步驟239。
[0209]步驟239,動(dòng)態(tài)令牌更新當(dāng)前日志索引,根據(jù)當(dāng)前日志索引從日志存儲(chǔ)區(qū)中讀取對應(yīng)的日志,將讀取到的日志中的時(shí)間信息存儲(chǔ)到顯示數(shù)據(jù)緩沖區(qū)中,開啟按鍵中斷和總中斷,并返回步驟103。
[0210]具體地,動(dòng)態(tài)令牌可以將當(dāng)前日志索引加1。
[0211]步驟240,動(dòng)態(tài)令牌根據(jù)第一鍵值,對當(dāng)前被按下的按鍵進(jìn)行判斷,如果是確認(rèn)鍵,則執(zhí)行步驟241 ;
[0212]如果是左鍵,則執(zhí)行步驟242 ;
[0213]如果是右鍵,則執(zhí)行步驟247。
[0214]步驟241,動(dòng)態(tài)令牌將時(shí)間信息顯示標(biāo)志置位,從日志緩沖區(qū)中的日志中讀取時(shí)間信息,將讀取到的時(shí)間信息存儲(chǔ)到顯示數(shù)據(jù)緩沖區(qū)中,開啟按鍵中斷和總中斷,并返回步驟103。
[0215]步驟242,動(dòng)態(tài)令牌判斷顯示屏上的左箭頭是否被點(diǎn)亮,如果是,執(zhí)行步驟243 ;否貝0,開啟按鍵中斷和總中斷,并返回步驟103。
[0216]步驟243,動(dòng)態(tài)令牌從當(dāng)前交易信息中讀取與當(dāng)前顯示信息相鄰,且存儲(chǔ)位置更靠前的數(shù)據(jù)作為未顯示數(shù)據(jù)。
[0217]步驟244,動(dòng)態(tài)令牌判斷未顯示數(shù)據(jù)的長度是否大于第四預(yù)設(shè)長度,如果是,則執(zhí)行步驟245 ;否則,執(zhí)行步驟246。
[0218]步驟245,動(dòng)態(tài)令牌從未顯示數(shù)據(jù)中選取存儲(chǔ)位置最靠后的、第四預(yù)設(shè)長度的數(shù)據(jù)作為當(dāng)前顯示信息,將當(dāng)前顯示信息存儲(chǔ)到顯示數(shù)據(jù)緩沖區(qū)中,點(diǎn)亮顯示屏上的右箭頭,開啟按鍵中斷和總中斷,并返回步驟103。
[0219]步驟246,動(dòng)態(tài)令牌將未顯示數(shù)據(jù)存儲(chǔ)到顯示數(shù)據(jù)緩沖區(qū)中,點(diǎn)亮顯示屏上的右箭頭,熄滅顯示屏上的左箭頭,開啟按鍵中斷和總中斷,并返回步驟103。
[0220]步驟247,動(dòng)態(tài)令牌判斷顯示屏上的右箭頭是否被點(diǎn)亮,如果是,執(zhí)行步驟248 ;否貝0,開啟按鍵中斷和總中斷,并返回步驟103。
[0221]步驟248,動(dòng)態(tài)令牌從當(dāng)前交易信息中讀取與當(dāng)前顯示信息相鄰,且存儲(chǔ)位置更靠后的數(shù)據(jù)作為未顯示數(shù)據(jù)。
[0222]步驟249,動(dòng)態(tài)令牌判斷未顯示數(shù)據(jù)的長度是否大于第四預(yù)設(shè)長度,如果是,則執(zhí)行步驟250 ;否則,執(zhí)行步驟251。
[0223]步驟250,動(dòng)態(tài)令牌從未顯示數(shù)據(jù)中選取存儲(chǔ)位置最靠前的、第四預(yù)設(shè)長度的數(shù)據(jù)作為當(dāng)前顯示信息,將當(dāng)前顯示信息存儲(chǔ)到顯示數(shù)據(jù)緩沖區(qū)中,點(diǎn)亮顯示屏上的左箭頭,開啟按鍵中斷和總中斷,并返回步驟103。
[0224]步驟251,動(dòng)態(tài)令牌將未顯示數(shù)據(jù)存儲(chǔ)到顯示數(shù)據(jù)緩沖區(qū)中,點(diǎn)亮顯示屏上的左箭頭,熄滅顯示屏上的右箭頭,開啟按鍵中斷和總中斷,并返回步驟103。
[0225]步驟252,動(dòng)態(tài)令牌開啟總中斷,將時(shí)鐘源切換至低速時(shí)鐘,進(jìn)入休眠模式。
[0226]步驟253,動(dòng)態(tài)令牌被喚醒后,將時(shí)鐘源切換至高速時(shí)鐘,并返回步驟103。
[0227]本發(fā)明實(shí)施例中的動(dòng)態(tài)令牌在生成動(dòng)態(tài)口令后,生成并記錄與該動(dòng)態(tài)口令對應(yīng)的日志供用戶查看,從而記錄與已完成的身份認(rèn)證相關(guān)的信息,使得用戶能夠復(fù)核已完成的身份認(rèn)證是否為由自身完成的身份認(rèn)證,提高了使用動(dòng)態(tài)口令的身份認(rèn)證機(jī)制以及動(dòng)態(tài)令牌的安全性。
[0228]需要說明的是,在本發(fā)明的其他實(shí)施方式中,動(dòng)態(tài)令牌根據(jù)第一鍵值,對當(dāng)前被按下的按鍵進(jìn)行判斷,如果當(dāng)前被按下的按鍵是第一按鍵,則生成動(dòng)態(tài)口令以及與該動(dòng)態(tài)口令對應(yīng)的日志,將動(dòng)態(tài)口令存儲(chǔ)到顯示數(shù)據(jù)緩沖區(qū),將日志存儲(chǔ)到日志存儲(chǔ)區(qū),開啟按鍵中斷;如果當(dāng)前被按下的按鍵是第二按鍵,則從日志存儲(chǔ)區(qū)中讀取日志,將讀取到的日志存儲(chǔ)到顯示數(shù)據(jù)緩沖區(qū),開啟按鍵中斷,同樣可以達(dá)到本發(fā)明的發(fā)明目的。
[0229]另外,在本發(fā)明的其他實(shí)施方式中,動(dòng)態(tài)令牌根據(jù)第一鍵值,判斷出當(dāng)前被按下的按鍵是第二按鍵,或者是第三按鍵和第四按鍵的組合之后,還可以開啟按鍵中斷,并在判斷出置位的中斷標(biāo)志是按鍵中斷標(biāo)志后,關(guān)閉按鍵中斷,掃描鍵盤,根據(jù)掃描得到的鍵值判斷出當(dāng)前被按下的按鍵為第五按鍵后,從日志存儲(chǔ)區(qū)中讀取日志,將讀取到的日志存儲(chǔ)到所述顯示數(shù)據(jù)緩沖區(qū),開啟按鍵中斷,同樣可以達(dá)到本發(fā)明的發(fā)明目的。
[0230]此外,在本發(fā)明的其他實(shí)施方式中,動(dòng)態(tài)令牌還可以采用循環(huán)隊(duì)列的方式將新增日志存儲(chǔ)到日志存儲(chǔ)區(qū),如圖15所示,包括以下步驟:
[0231〕 步驟301,動(dòng)態(tài)令牌判斷新增日志占用的空間是否大于日志存儲(chǔ)區(qū)中的剩余空間,如果是,則執(zhí)行步驟302 ;否則,執(zhí)行步驟304。
[0232]步驟302,動(dòng)態(tài)令牌根據(jù)最前記錄指針,從日志存儲(chǔ)區(qū)中讀取對應(yīng)的日志,根據(jù)讀取到的日志占用的空間,更新最前記錄指針和日志存儲(chǔ)區(qū)中的剩余空間。
[0233]具體地,動(dòng)態(tài)令牌可以將最前記錄指針和日志存儲(chǔ)區(qū)中的剩余空間分別與讀取到的日志占用的空間大小相加,將得到的結(jié)果分別作為更新后的最前記錄指針和日志存儲(chǔ)區(qū)中的剩余空間。
[0234]步驟303,動(dòng)態(tài)令牌根據(jù)最前記錄指針,從日志存儲(chǔ)區(qū)中讀取對應(yīng)的日志,將讀取到的日志的索引作為最前日志索引,更新日志條數(shù),并返回步驟301。
[0235]具體地,動(dòng)態(tài)令牌可以將日志條數(shù)減1。
[0236]步驟304,動(dòng)態(tài)令牌判斷日志條數(shù)是否為零,如果是,則執(zhí)行步驟306 ;否則,執(zhí)行步驟305。
[0237]步驟305,動(dòng)態(tài)令牌根據(jù)最后記錄指針,從日志存儲(chǔ)區(qū)中讀取對應(yīng)的日志,根據(jù)讀取到的日志占用的空間,更新最后記錄指針,并執(zhí)行步驟306。
[0238]具體地,動(dòng)態(tài)令牌可以將最后記錄指針與讀取到的日志占用的空間大小相加,將得到的結(jié)果作為更新后的最后記錄指針。
[0239]步驟306,動(dòng)態(tài)令牌將臨時(shí)計(jì)數(shù)器的計(jì)數(shù)值設(shè)置為零,將臨時(shí)指針的取值設(shè)置為最后記錄指針的取值,將當(dāng)前日志字節(jié)設(shè)置為新增日志的首字節(jié)。
[0240]步驟307,動(dòng)態(tài)令牌判斷臨時(shí)指針的取值是否小于日志存儲(chǔ)區(qū)的空間大小,如果是,則執(zhí)行步驟308 ;否則,將臨時(shí)指針的取值置為零,并執(zhí)行步驟308。
[0241]步驟308,動(dòng)態(tài)令牌將當(dāng)前日志字節(jié)存儲(chǔ)到臨時(shí)指針對應(yīng)的位置,更新臨時(shí)指針和臨時(shí)計(jì)數(shù)器的計(jì)數(shù)值,將當(dāng)前日志字節(jié)的下一字節(jié)作為更新后的當(dāng)前日志字節(jié)。
[0242]具體地,動(dòng)態(tài)令牌可以將臨時(shí)指針加1,將臨時(shí)計(jì)數(shù)器的計(jì)數(shù)值加1。
[0243]步驟309,動(dòng)態(tài)令牌判斷臨時(shí)計(jì)數(shù)器的計(jì)數(shù)值是否小于新增日志占用的空間大小,如果是,則返回步驟307 ;否則,執(zhí)行步驟310。
[0244]步驟310,動(dòng)態(tài)令牌將最后日志索引設(shè)置為新增日志的索引,更新日志條數(shù),并根據(jù)新增日志占用的空間大小,更新日志存儲(chǔ)區(qū)中的剩余空間。
[0245]具體地,動(dòng)態(tài)令牌可以將日志條數(shù)加1,將日志存儲(chǔ)區(qū)中的剩余空間減去新增日志占用的空間大小,作為更新后的日志存儲(chǔ)區(qū)中的剩余空間。
[0246]基于上述日志存儲(chǔ)方式,動(dòng)態(tài)令牌根據(jù)當(dāng)前日志索引從日志存儲(chǔ)區(qū)中讀取對應(yīng)的日志的流程,如圖16所示,包括以下步驟:
[0247]步驟401,動(dòng)態(tài)令牌將臨時(shí)指針的取值設(shè)置為最前記錄指針的取值。
[0248]步驟402,動(dòng)態(tài)令牌根據(jù)所述臨時(shí)指針,從日志存儲(chǔ)區(qū)中讀取對應(yīng)的索引,獲取與該索引對應(yīng)的日志所占用的空間大小。
[0249]步驟403,動(dòng)態(tài)令牌判斷讀取到的索引是否與當(dāng)前日志索引相同,如果是,則執(zhí)行步驟406 ;否則,執(zhí)行步驟404。
[0250]步驟404,動(dòng)態(tài)令牌根據(jù)日志所占用的空間大小更新臨時(shí)指針。
[0251]具體地,動(dòng)態(tài)令牌可以將臨時(shí)指針與日志所占用的空間大小相加,將得到的結(jié)果作為更新后的臨時(shí)指針。
[0252]步驟405,動(dòng)態(tài)令牌判斷臨時(shí)指針的取值是否小于日志存儲(chǔ)區(qū)的空間大小,如果是,則返回步驟402 ;否則,根據(jù)日志存儲(chǔ)區(qū)的空間大小更新臨時(shí)指針,并返回步驟402。
[0253]具體地,動(dòng)態(tài)令牌可以將臨時(shí)指針減去日志存儲(chǔ)區(qū)的空間大小,將得到的結(jié)果作為更新后的臨時(shí)指針。
[0254]步驟406,動(dòng)態(tài)令牌將臨時(shí)計(jì)數(shù)器的計(jì)數(shù)值設(shè)置為日志所占用的空間大小。
[0255]步驟407,動(dòng)態(tài)令牌根據(jù)臨時(shí)指針,從日志存儲(chǔ)區(qū)中讀取一個(gè)字節(jié)的數(shù)據(jù),并更新臨時(shí)指針和臨時(shí)計(jì)數(shù)器的計(jì)數(shù)值。
[0256]具體地,動(dòng)態(tài)令牌可以將臨時(shí)指針加1,將臨時(shí)計(jì)數(shù)器的計(jì)數(shù)值減1。
[0257]步驟408,動(dòng)態(tài)令牌判斷臨時(shí)指針的取值是否小于日志存儲(chǔ)區(qū)的空間大小,如果是,則執(zhí)行步驟409 ;否則,根據(jù)日志存儲(chǔ)區(qū)的空間大小更新臨時(shí)指針,并執(zhí)行步驟409。
[0258]具體地,動(dòng)態(tài)令牌可以將臨時(shí)指針減去日志存儲(chǔ)區(qū)的空間大小,將得到的結(jié)果作為更新后的臨時(shí)指針。
[0259]步驟409,動(dòng)態(tài)令牌判斷臨時(shí)計(jì)數(shù)器的計(jì)數(shù)值是否大于零,如果是,則返回步驟407;否則,確定從日志存儲(chǔ)區(qū)中讀取與當(dāng)前日志索引對應(yīng)的日志完畢。
[0260]基于上述工作方法流程,本發(fā)明實(shí)施例還提供了一種具有日志功能的動(dòng)態(tài)令牌,如圖17所示,包括:
[0261]初始化模塊501,用于在上電之后,執(zhí)行初始化操作,開啟總中斷和按鍵喚醒功倉泛;
[0262]第一判斷模塊502,用于判斷是否存在置位的中斷標(biāo)志;
[0263]第二判斷模塊503,用于在第一判斷模塊502判斷出存在置位的中斷標(biāo)志之后,對置位的中斷標(biāo)志進(jìn)行判斷;
[0264]復(fù)位模塊504,用于在第二判斷模塊503判斷出置位的中斷標(biāo)志是定時(shí)器中斷標(biāo)志時(shí),將定時(shí)器中斷標(biāo)志復(fù)位,并觸發(fā)第一判斷模塊502判斷是否存在置位的中斷標(biāo)志;
[0265]第一獲取模塊505,用于在第二判斷模塊503判斷出置位的中斷標(biāo)志是按鍵中斷標(biāo)志時(shí),關(guān)閉按鍵中斷,掃描鍵盤,獲取第一鍵值;
[0266]第三判斷模塊506,用于根據(jù)第一獲取模塊505獲取到的第一鍵值,對當(dāng)前被按下的按鍵進(jìn)行判斷;
[0267]第一處理模塊507,用于在第三判斷模塊506判斷出當(dāng)前被按下的按鍵是第一按鍵時(shí),生成動(dòng)態(tài)口令以及與動(dòng)態(tài)口令對應(yīng)的日志,將動(dòng)態(tài)口令存儲(chǔ)到顯示數(shù)據(jù)緩沖區(qū),將日志存儲(chǔ)到日志存儲(chǔ)區(qū),開啟按鍵中斷,并觸發(fā)第一判斷模塊502判斷是否存在置位的中斷標(biāo)志;
[0268]第二處理模塊508,用于在第三判斷模塊506判斷出當(dāng)前被按下的按鍵是第二按鍵,或者是第三按鍵和第四按鍵的組合時(shí),從日志存儲(chǔ)區(qū)中讀取日志,將讀取到的日志存儲(chǔ)到顯示數(shù)據(jù)緩沖區(qū),開啟按鍵中斷,并觸發(fā)第一判斷模塊502判斷是否存在置位的中斷標(biāo)
0
[0269]具體地,上述第二處理模塊508,具體用于在第三判斷模塊506判斷出當(dāng)前被按下的按鍵是第二按鍵,或者是第三按鍵和第四按鍵的組合之后,執(zhí)行以下操作:
[0270]了1、開啟按鍵中斷,判斷是否存在置位的中斷標(biāo)志,如果是,則執(zhí)行步驟12 ;否則,繼續(xù)執(zhí)行步驟丁1 ;
[0271]12、判斷出置位的中斷標(biāo)志是按鍵中斷標(biāo)志后,關(guān)閉按鍵中斷,掃描鍵盤;
[0272]13、根據(jù)掃描得到的鍵值判斷出當(dāng)前被按下的按鍵為第五按鍵后,從日志存儲(chǔ)區(qū)中讀取日志,將讀取到的日志存儲(chǔ)到顯示數(shù)據(jù)緩沖區(qū),開啟按鍵中斷,并觸發(fā)第一判斷模塊502判斷是否存在置位的中斷標(biāo)志。
[0273]其中,上述第一按鍵可以為確認(rèn)鍵,相應(yīng)地,上述動(dòng)態(tài)令牌,還包括:
[0274]第三處理模塊,用于在第三判斷模塊506判斷出當(dāng)前被按下的按鍵是數(shù)字鍵時(shí),判斷按鍵數(shù)據(jù)長度是否小于第三預(yù)設(shè)長度,如果是,則將第一鍵值保存到按鍵數(shù)據(jù)緩沖區(qū)和顯示數(shù)據(jù)緩沖區(qū)中,更新按鍵數(shù)據(jù)長度,開啟按鍵中斷,并觸發(fā)第一判斷模塊502判斷是否存在置位的中斷標(biāo)志;否則,開啟按鍵中斷,并觸發(fā)第一判斷模塊502判斷是否存在置位的中斷標(biāo)志;在第三判斷模塊506判斷出當(dāng)前被按下的按鍵是刪除鍵時(shí),判斷按鍵數(shù)據(jù)長度是否為零,如果是,則開啟按鍵中斷,并觸發(fā)第一判斷模塊502判斷是否存在置位的中斷標(biāo)志;否則,將按鍵數(shù)據(jù)緩沖區(qū)中最后一次存入的數(shù)據(jù)刪除,更新按鍵數(shù)據(jù)長度,將顯示數(shù)據(jù)緩沖區(qū)中最后一次存入的數(shù)據(jù)刪除,開啟按鍵中斷,并觸發(fā)第一判斷模塊502判斷是否存在置位的中斷標(biāo)志;
[0275]上述第一處理模塊507,包括:
[0276]第一判斷子模塊,用于在第三判斷模塊506判斷出當(dāng)前被按下的按鍵是確認(rèn)鍵時(shí),判斷按鍵數(shù)據(jù)長度是否為零;
[0277]第一生成子模塊,用于在第一判斷子模塊判斷出按鍵數(shù)據(jù)長度為零時(shí),根據(jù)時(shí)間因子,生成動(dòng)態(tài)口令以及與動(dòng)態(tài)口令對應(yīng)的新增日志;
[0278]具體地,上述第一生成子模塊,具體用于在第一判斷子模塊判斷出按鍵數(shù)據(jù)長度為零時(shí),根據(jù)時(shí)間因子生成時(shí)間型動(dòng)態(tài)口令,為新增日志分配索引,將與時(shí)間因子對應(yīng)的時(shí)間信息的長度作為新增日志的長度,對索弓丨、新增日志的長度以及與時(shí)間因子對應(yīng)的時(shí)間信息進(jìn)行組合,得到新增日志。
[0279]第二生成子模塊,用于在第一判斷子模塊判斷出按鍵數(shù)據(jù)長度不為零時(shí),將按鍵數(shù)據(jù)緩沖區(qū)中的數(shù)據(jù)作為挑戰(zhàn)碼,生成動(dòng)態(tài)口令以及與動(dòng)態(tài)口令對應(yīng)的新增日志;
[0280]具體地,上述第二生成子模塊,具體用于在第一判斷子模塊判斷出按鍵數(shù)據(jù)長度不為零時(shí),根據(jù)時(shí)間因子和挑戰(zhàn)碼,生成挑戰(zhàn)型動(dòng)態(tài)口令,為新增日志分配索引,對與挑戰(zhàn)碼對應(yīng)的交易信息進(jìn)行壓縮,得到壓縮交易數(shù)據(jù),獲取與時(shí)間因子對應(yīng)的時(shí)間信息的長度和壓縮交易數(shù)據(jù)的長度之和作為新增日志的長度,對索引、新增日志的長度、與時(shí)間因子對應(yīng)的時(shí)間信息,以及壓縮交易數(shù)據(jù)進(jìn)行組合,得到新增日志。
[0281]第一存儲(chǔ)子模塊,用于將第一生成子模塊和第二生成子模塊生成的動(dòng)態(tài)口令存儲(chǔ)到顯示數(shù)據(jù)緩沖區(qū)中;
[0282]第二存儲(chǔ)子模塊,用于將第一生成子模塊和第二生成子模塊生成的新增日志存儲(chǔ)到日志存儲(chǔ)區(qū);
[0283]開啟子模塊,用于在第一生成子模塊或第二生成子模塊生成動(dòng)態(tài)口令和新增日志后,開啟按鍵中斷,并觸發(fā)第一判斷模塊502判斷是否存在置位的中斷標(biāo)志。
[0284]具體地,上述第二存儲(chǔ)子模塊,具體用于判斷日志條數(shù)是否為零,如果是,則將新增日志存儲(chǔ)到日志存儲(chǔ)區(qū)中,將最前日志索引和最后日志索引均設(shè)置為新增日志中的索弓丨,更新日志條數(shù);否則,將新增日志存儲(chǔ)到日志存儲(chǔ)區(qū)中,將最后日志索引設(shè)置為新增日志中的索引,更新日志條數(shù)。
[0285]進(jìn)一步地,上述第二處理模塊508,具體用于將當(dāng)前日志索引設(shè)置為最后日志索弓丨,根據(jù)當(dāng)前日志索引從日志存儲(chǔ)區(qū)中讀取對應(yīng)的日志,將讀取到的日志存儲(chǔ)到日志緩沖區(qū)中,將讀取到的日志中的時(shí)間信息存儲(chǔ)到顯示數(shù)據(jù)緩沖區(qū)中,開啟按鍵中斷,并觸發(fā)第一判斷模塊502判斷是否存在置位的中斷標(biāo)志。
[0286]相應(yīng)地,上述動(dòng)態(tài)令牌,還包括:
[0287]第四處理模塊,用于在第二處理模塊508觸發(fā)第一判斷模塊502判斷出存在置位的中斷標(biāo)志,且第三判斷模塊506判斷出當(dāng)前被按下的按鍵是左鍵時(shí),判斷當(dāng)前日志索引是否等于最前日志索引,如果是,則開啟按鍵中斷,并觸發(fā)第一判斷模塊502判斷是否存在置位的中斷標(biāo)志;否則,更新當(dāng)前日志索引,根據(jù)當(dāng)前日志索引從日志存儲(chǔ)區(qū)中讀取對應(yīng)的日志,將讀取到的日志中的時(shí)間信息存儲(chǔ)到顯示數(shù)據(jù)緩沖區(qū)中,開啟按鍵中斷,并觸發(fā)第一判斷模塊502判斷是否存在置位的中斷標(biāo)志;
[0288]第五處理模塊,用于在第二處理模塊508觸發(fā)第一判斷模塊502判斷出存在置位的中斷標(biāo)志,且第三判斷模塊506判斷出當(dāng)前被按下的按鍵是右鍵時(shí),判斷當(dāng)前日志索引是否等于最后日志索引,如果是,則開啟按鍵中斷,并觸發(fā)第一判斷模塊502判斷是否存在置位的中斷標(biāo)志;否則,更新當(dāng)前日志索引,根據(jù)當(dāng)前日志索引從日志存儲(chǔ)區(qū)中讀取對應(yīng)的日志,將讀取到的日志中的時(shí)間信息存儲(chǔ)到顯示數(shù)據(jù)緩沖區(qū)中,開啟按鍵中斷,并觸發(fā)第一判斷模塊502判斷是否存在置位的中斷標(biāo)志。
[0289]進(jìn)一步地,上述動(dòng)態(tài)令牌,還包括:
[0290]第四判斷模塊,用于判斷時(shí)間信息顯示標(biāo)志是否置位;
[0291]相應(yīng)地,上述第四處理模塊,具體用于在第四判斷模塊判斷出時(shí)間信息顯示標(biāo)志置位、第二處理模塊508觸發(fā)第一判斷模塊502判斷出存在置位的中斷標(biāo)志,且第三判斷模塊506判斷出當(dāng)前被按下的按鍵是左鍵時(shí),判斷當(dāng)前日志索引是否等于最前日志索引,如果是,則開啟按鍵中斷,并觸發(fā)第一判斷模塊502判斷是否存在置位的中斷標(biāo)志;否則,更新當(dāng)前日志索引,根據(jù)當(dāng)前日志索引從日志存儲(chǔ)區(qū)中讀取對應(yīng)的日志,將讀取到的日志中的時(shí)間信息存儲(chǔ)到顯示數(shù)據(jù)緩沖區(qū)中,開啟按鍵中斷,并觸發(fā)第一判斷模塊502判斷是否存在置位的中斷標(biāo)志;
[0292]第五處理模塊,具體用于在第四判斷模塊判斷出時(shí)間信息顯示標(biāo)志置位、第二處理模塊508觸發(fā)第一判斷模塊502判斷出存在置位的中斷標(biāo)志,且第三判斷模塊506判斷出當(dāng)前被按下的按鍵是右鍵時(shí),判斷當(dāng)前日志索引是否等于最后日志索引,如果是,則開啟按鍵中斷,并觸發(fā)第一判斷模塊502判斷是否存在置位的中斷標(biāo)志;否則,更新當(dāng)前日志索弓丨,根據(jù)當(dāng)前日志索引從日志存儲(chǔ)區(qū)中讀取對應(yīng)的日志,將讀取到的日志中的時(shí)間信息存儲(chǔ)到顯示數(shù)據(jù)緩沖區(qū)中,開啟按鍵中斷,并觸發(fā)第一判斷模塊502判斷是否存在置位的中斷標(biāo)志;
[0293]上述動(dòng)態(tài)令牌,還包括:
[0294]第六處理模塊,具體用于在在第四判斷模塊判斷出時(shí)間信息顯示標(biāo)志置位、第二處理模塊508觸發(fā)第一判斷模塊502判斷出存在置位的中斷標(biāo)志,且第三判斷模塊506判斷出當(dāng)前被按下的按鍵是確認(rèn)鍵時(shí),執(zhí)行以下操作:
[0295]61、判斷日志緩沖區(qū)中的日志的長度是否為第五預(yù)設(shè)長度,如果是,則執(zhí)行步驟尺2 ;否則,執(zhí)行步驟尺3 ;
[0296]82、顯示空白交易信息,將時(shí)間信息顯示標(biāo)志復(fù)位,開啟按鍵中斷,并觸發(fā)第一判斷模塊502判斷是否存在置位的中斷標(biāo)志;
[0297]63、將時(shí)間信息顯示標(biāo)志復(fù)位,從日志緩沖區(qū)中的日志中獲取壓縮交易數(shù)據(jù),對壓縮交易數(shù)據(jù)進(jìn)行解壓,判斷解壓得到的當(dāng)前交易信息的長度是否大于第四預(yù)設(shè)長度,如果是,則執(zhí)行步驟財(cái);否則,執(zhí)行步驟尺5 ;
[0298]財(cái)、從當(dāng)前交易信息中選取存儲(chǔ)位置最靠前的、第四預(yù)設(shè)長度的數(shù)據(jù)作為當(dāng)前顯示信息,將當(dāng)前顯示信息存儲(chǔ)到顯示數(shù)據(jù)緩沖區(qū)中,點(diǎn)亮顯示屏上的右箭頭,開啟按鍵中斷,并觸發(fā)第一判斷模塊502判斷是否存在置位的中斷標(biāo)志;
[0299]85、將當(dāng)前交易信息存儲(chǔ)到顯示數(shù)據(jù)緩沖區(qū)中,開啟按鍵中斷,并觸發(fā)第一判斷模塊502判斷是否存在置位的中斷標(biāo)志。
[0300]需要說明的是,在本發(fā)明的另一種實(shí)施方式中,上述第二處理模塊508,具體用于在第三判斷模塊506判斷出當(dāng)前被按下的按鍵是第二按鍵,或者是第三按鍵和第四按鍵的組合時(shí),將當(dāng)前日志索引設(shè)置為最后日志索引,根據(jù)當(dāng)前日志索引從日志存儲(chǔ)區(qū)中讀取對應(yīng)的日志,對讀取到的日志中的壓縮交易數(shù)據(jù)進(jìn)行解壓,將解壓得到的當(dāng)前交易信息存儲(chǔ)到日志緩沖區(qū)中,判斷當(dāng)前交易信息是否大于第四預(yù)設(shè)長度,如果是,則從當(dāng)前交易信息中選取存儲(chǔ)位置最靠前的、第四預(yù)設(shè)長度的數(shù)據(jù)作為當(dāng)前顯示信息,將當(dāng)前顯示信息存儲(chǔ)到顯示數(shù)據(jù)緩沖區(qū)中,點(diǎn)亮顯示屏上的右箭頭,開啟按鍵中斷,并觸發(fā)第一判斷模塊502判斷是否存在置位的中斷標(biāo)志;否則,將當(dāng)前交易信息存儲(chǔ)到顯示數(shù)據(jù)緩沖區(qū)中,開啟按鍵中斷,并觸發(fā)第一判斷模塊502判斷是否存在置位的中斷標(biāo)志。
[0301]相應(yīng)地,上述動(dòng)態(tài)令牌,還包括:
[0302]第七處理模塊,用于在第二處理模塊508觸發(fā)第一判斷模塊502判斷出存在置位的中斷標(biāo)志,且第三判斷模塊506判斷出當(dāng)前被按下的按鍵是左鍵時(shí),判斷顯示屏上的左箭頭是否被點(diǎn)亮,如果沒有被點(diǎn)亮,則開啟按鍵中斷,并觸發(fā)第一判斷模塊502判斷是否存在置位的中斷標(biāo)志;如果被點(diǎn)亮,則從當(dāng)前交易信息中讀取與當(dāng)前顯示信息相鄰,且存儲(chǔ)位置更靠前的數(shù)據(jù)作為未顯示數(shù)據(jù),判斷未顯示數(shù)據(jù)的長度是否大于第四預(yù)設(shè)長度,如果是,則從未顯示數(shù)據(jù)中選取存儲(chǔ)位置最靠后的、第四預(yù)設(shè)長度的數(shù)據(jù)作為當(dāng)前顯示信息,將當(dāng)前顯示信息存儲(chǔ)到顯示數(shù)據(jù)緩沖區(qū)中,點(diǎn)亮顯示屏上的右箭頭,開啟按鍵中斷,并觸發(fā)第一判斷模塊502判斷是否存在置位的中斷標(biāo)志;否則,將未顯示數(shù)據(jù)存儲(chǔ)到顯示數(shù)據(jù)緩沖區(qū)中,點(diǎn)亮顯示屏上的右箭頭,熄滅顯示屏上的左箭頭,開啟按鍵中斷,并觸發(fā)第一判斷模塊502判斷是否存在置位的中斷標(biāo)志;
[0303]第八處理模塊,用于在第二處理模塊508觸發(fā)第一判斷模塊502判斷出存在置位的中斷標(biāo)志,且第三判斷模塊506判斷出當(dāng)前被按下的按鍵是右鍵時(shí),判斷顯示屏上的右箭頭是否被點(diǎn)亮,如果沒有被點(diǎn)亮,則開啟按鍵中斷,并觸發(fā)第一判斷模塊502判斷是否存在置位的中斷標(biāo)志;如果被點(diǎn)亮,則從當(dāng)前交易信息中讀取與當(dāng)前顯示信息相鄰,且存儲(chǔ)位置更靠后的數(shù)據(jù)作為未顯示數(shù)據(jù),判斷未顯示數(shù)據(jù)的長度是否大于第四預(yù)設(shè)長度,如果是,則從未顯示數(shù)據(jù)中選取存儲(chǔ)位置最靠前的、第四預(yù)設(shè)長度的數(shù)據(jù)作為當(dāng)前顯示信息,將當(dāng)前顯示信息存儲(chǔ)到顯示數(shù)據(jù)緩沖區(qū)中,點(diǎn)亮顯示屏上的左箭頭,開啟按鍵中斷,并觸發(fā)第一判斷模塊502判斷是否存在置位的中斷標(biāo)志;否則,將未顯示數(shù)據(jù)存儲(chǔ)到顯示數(shù)據(jù)緩沖區(qū)中,點(diǎn)亮顯示屏上的左箭頭,熄滅顯示屏上的右箭頭,開啟按鍵中斷,并觸發(fā)第一判斷模塊502判斷是否存在置位的中斷標(biāo)志。
[0304]第五判斷模塊,用于判斷時(shí)間信息顯示標(biāo)志是否置位;
[0305]第七處理模塊,具體用于在第五判斷模塊判斷出時(shí)間信息顯示標(biāo)志復(fù)位、第二處理模塊508觸發(fā)第一判斷模塊502判斷出存在置位的中斷標(biāo)志,且第三判斷模塊506判斷出當(dāng)前被按下的按鍵是左鍵時(shí),判斷顯示屏上的左箭頭是否被點(diǎn)亮,如果沒有被點(diǎn)亮,則開啟按鍵中斷,并觸發(fā)第一判斷模塊502判斷是否存在置位的中斷標(biāo)志;如果被點(diǎn)亮,則從當(dāng)前交易信息中讀取與當(dāng)前顯示信息相鄰,且存儲(chǔ)位置更靠前的數(shù)據(jù)作為未顯示數(shù)據(jù),判斷未顯示數(shù)據(jù)的長度是否大于第四預(yù)設(shè)長度,如果是,則從未顯示數(shù)據(jù)中選取存儲(chǔ)位置最靠后的、第四預(yù)設(shè)長度的數(shù)據(jù)作為當(dāng)前顯示信息,將當(dāng)前顯示信息存儲(chǔ)到顯示數(shù)據(jù)緩沖區(qū)中,點(diǎn)亮顯示屏上的右箭頭,開啟按鍵中斷,并觸發(fā)第一判斷模塊502判斷是否存在置位的中斷標(biāo)志;否則,將未顯示數(shù)據(jù)存儲(chǔ)到顯示數(shù)據(jù)緩沖區(qū)中,點(diǎn)亮顯示屏上的右箭頭,熄滅顯示屏上的左箭頭,開啟按鍵中斷,并觸發(fā)第一判斷模塊502判斷是否存在置位的中斷標(biāo)志;
[0306]相應(yīng)地,上述第八處理模塊,具體用于在第五判斷模塊判斷出時(shí)間信息顯示標(biāo)志復(fù)位、第二處理模塊508觸發(fā)第一判斷模塊502判斷出存在置位的中斷標(biāo)志,且第三判斷模塊506判斷出當(dāng)前被按下的按鍵是右鍵時(shí),判斷顯示屏上的右箭頭是否被點(diǎn)亮,如果沒有被點(diǎn)亮,則開啟按鍵中斷,并觸發(fā)第一判斷模塊502判斷是否存在置位的中斷標(biāo)志;如果被點(diǎn)亮,則從當(dāng)前交易信息中讀取與當(dāng)前顯示信息相鄰,且存儲(chǔ)位置更靠后的數(shù)據(jù)作為未顯示數(shù)據(jù),判斷未顯示數(shù)據(jù)的長度是否大于第四預(yù)設(shè)長度,如果是,則從未顯示數(shù)據(jù)中選取存儲(chǔ)位置最靠前的、第四預(yù)設(shè)長度的數(shù)據(jù)作為當(dāng)前顯示信息,將當(dāng)前顯示信息存儲(chǔ)到顯示數(shù)據(jù)緩沖區(qū)中,點(diǎn)亮顯示屏上的左箭頭,開啟按鍵中斷,并觸發(fā)第一判斷模塊502判斷是否存在置位的中斷標(biāo)志;否則,將未顯示數(shù)據(jù)存儲(chǔ)到顯示數(shù)據(jù)緩沖區(qū)中,點(diǎn)亮顯示屏上的左箭頭,熄滅顯示屏上的右箭頭,開啟按鍵中斷,并觸發(fā)第一判斷模塊502判斷是否存在置位的中斷標(biāo)志;
[0307]上述動(dòng)態(tài)令牌,還包括:
[0308]第九處理模塊,具體用于在在第四判斷模塊判斷出時(shí)間信息顯示標(biāo)志復(fù)位、第二處理模塊508觸發(fā)第一判斷模塊502判斷出存在置位的中斷標(biāo)志,且第三判斷模塊506判斷出當(dāng)前被按下的按鍵是確認(rèn)鍵時(shí),將時(shí)間信息顯示標(biāo)志置位,從日志緩沖區(qū)中的日志中讀取時(shí)間信息,將讀取到的時(shí)間信息存儲(chǔ)到顯示數(shù)據(jù)緩沖區(qū)中,開啟按鍵中斷,并觸發(fā)第一判斷模塊502判斷是否存在置位的中斷標(biāo)志。
[0309]進(jìn)一步地,上述第二存儲(chǔ)子模塊,具體用于執(zhí)行以下操作:
[0310]?1、判斷日志條數(shù)是否為零,如果是,則將新增日志存儲(chǔ)到日志存儲(chǔ)區(qū)中,將最前日志索引和最后日志索引均設(shè)置為新增日志中的索引,更新日志條數(shù);否則,執(zhí)行步驟?2 ;
[0311]?2、判斷新增日志占用的空間是否大于日志存儲(chǔ)區(qū)中的剩余空間,如果是,則執(zhí)行步驟?3 ;否則,將新增日志存儲(chǔ)到日志存儲(chǔ)區(qū)中,更新日志條數(shù)和最后日志索引;
[0312]?3、將日志存儲(chǔ)區(qū)中最早一次存入的日志刪除,將日志存儲(chǔ)區(qū)中剩余的日志前移,更新日志條數(shù)和最前日志索引,并返回步驟?2。
[0313]上述第二處理模塊508,具體用于執(zhí)行以下操作:
[0314]?。?、將當(dāng)前日志索引設(shè)置為最后日志索引,將讀取指針設(shè)置為日志存儲(chǔ)區(qū)的首地址;
[0315]??!2、根據(jù)讀取指針,從日志存儲(chǔ)區(qū)中讀取對應(yīng)的日志,判斷讀取到的日志中的索引是否與當(dāng)前日志索引相同,如果是,則將讀取到的日志存儲(chǔ)到顯示數(shù)據(jù)緩沖區(qū),開啟按鍵中斷,并觸發(fā)第一判斷模塊502判斷是否存在置位的中斷標(biāo)志;否則,執(zhí)行步驟!13 ;
[0316]!!3、根據(jù)讀取到的日志占用的空間大小更新讀取指針,并返回步驟!12。
[0317]需要說明的是,在本發(fā)明的另一種實(shí)施方式中,上述第二存儲(chǔ)子模塊,具體用于執(zhí)行以下操作:
[0318]以、判斷新增日志占用的空間是否大于日志存儲(chǔ)區(qū)中的剩余空間,如果是,則執(zhí)行步驟62;否則,執(zhí)行步驟64;
[0319]似、根據(jù)最前記錄指針,從日志存儲(chǔ)區(qū)中讀取對應(yīng)的日志,根據(jù)讀取到的日志占用的空間,更新最前記錄指針和日志存儲(chǔ)區(qū)中的剩余空間;
[0320]63、根據(jù)最前記錄指針,從日志存儲(chǔ)區(qū)中讀取對應(yīng)的日志,將讀取到的日志的索引作為最前日志索引,更新日志條數(shù),并返回步驟;
[0321](?、判斷日志條數(shù)是否為零,如果是,則執(zhí)行步驟⑶;否則,執(zhí)行步驟⑶;
[0322](?、根據(jù)最后記錄指針,從日志存儲(chǔ)區(qū)中讀取對應(yīng)的日志,根據(jù)讀取到的日志占用的空間,更新最后記錄指針,并執(zhí)行步驟⑶;
[0323]⑶、將臨時(shí)計(jì)數(shù)器的計(jì)數(shù)值設(shè)置為零,將臨時(shí)指針的取值設(shè)置為最后記錄指針的取值,將當(dāng)前日志字節(jié)設(shè)置為新增日志的首字節(jié);
[0324]67、判斷臨時(shí)指針的取值是否小于日志存儲(chǔ)區(qū)的空間大小,如果是,則執(zhí)行步驟68 ;否則,將臨時(shí)指針的取值置為零,并執(zhí)行步驟(? ;
[0325](?、將當(dāng)前日志字節(jié)存儲(chǔ)到臨時(shí)指針對應(yīng)的位置,更新臨時(shí)指針和臨時(shí)計(jì)數(shù)器的計(jì)數(shù)值,將當(dāng)前日志字節(jié)的下一字節(jié)作為更新后的當(dāng)前日志字節(jié);
[0326]⑶、判斷臨時(shí)計(jì)數(shù)器的計(jì)數(shù)值是否小于新增日志占用的空間大小,如果是,則返回步驟以;否則,執(zhí)行步驟以0 ;
[0327]以0、將最后日志索引設(shè)置為新增日志的索引,更新日志條數(shù),并根據(jù)新增日志占用的空間大小,更新日志存儲(chǔ)區(qū)中的剩余空間。
[0328]其中,上述第二處理模塊508根據(jù)當(dāng)前日志索引從日志存儲(chǔ)區(qū)中讀取對應(yīng)的日志,具體為,第二處理模塊508執(zhí)行以下操作:
[0329]1(1、將當(dāng)前日志索引設(shè)置為最后日志索引,將臨時(shí)指針的取值設(shè)置為最前記錄指針的取值;
[0330]1(2、根據(jù)臨時(shí)指針,從日志存儲(chǔ)區(qū)中讀取對應(yīng)的索引,獲取與索引對應(yīng)的日志所占用的空間大小,判斷索引是否與當(dāng)前日志索引相同,如果是,則執(zhí)行步驟1(4;否則,執(zhí)行步驟 1(3 ;
[0331]1(3、根據(jù)日志所占用的空間大小更新臨時(shí)指針,判斷臨時(shí)指針的取值是否小于日志存儲(chǔ)區(qū)的空間大小,如果是,則返回步驟1(2 ;否則,根據(jù)日志存儲(chǔ)區(qū)的空間大小更新臨時(shí)指針,并返回步驟1(2;
[0332]1(4、將臨時(shí)計(jì)數(shù)器的計(jì)數(shù)值設(shè)置為日志所占用的空間大小;
[0333]1(5、根據(jù)臨時(shí)指針,從日志存儲(chǔ)區(qū)中讀取一個(gè)字節(jié)的數(shù)據(jù),并更新臨時(shí)指針和臨時(shí)計(jì)數(shù)器的計(jì)數(shù)值;
[0334]1(6、判斷臨時(shí)指針的取值是否小于日志存儲(chǔ)區(qū)的空間大小,如果是,則執(zhí)行步驟1(7 ;否則,根據(jù)日志存儲(chǔ)區(qū)的空間大小更新臨時(shí)指針,并執(zhí)行步驟1(7 ;
[0335]1(7、判斷臨時(shí)計(jì)數(shù)器的計(jì)數(shù)值是否大于零,如果是,則返回步驟1(5 ;否則,將讀取到的數(shù)據(jù)存儲(chǔ)到日志緩沖區(qū)中,將讀取到的日志中的時(shí)間信息存儲(chǔ)到顯示數(shù)據(jù)緩沖區(qū)中,開啟按鍵中斷,并觸發(fā)第一判斷模塊502判斷是否存在置位的中斷標(biāo)志。
[0336]進(jìn)一步地,上述動(dòng)態(tài)令牌,還包括:
[0337]第二獲取模塊,用于在第一獲取模塊505獲取到第一鍵值之后,獲取按鍵時(shí)長;
[0338]第六判斷模塊,用于在第三判斷模塊506判斷出當(dāng)前被按下的按鍵是第二按鍵,或者是第三按鍵和第四按鍵的組合之后,判斷第二獲取模塊獲取到的按鍵時(shí)長是否小于第一預(yù)設(shè)時(shí)長;
[0339]第十處理模塊,用于在第六判斷模塊判斷出按鍵時(shí)長小于第一預(yù)設(shè)時(shí)長時(shí),根據(jù)當(dāng)前被按下的按鍵執(zhí)行相應(yīng)的操作,開啟按鍵中斷,并觸發(fā)第一判斷模塊502判斷是否存在置位的中斷標(biāo)志;
[0340]第二處理模塊508,具體用于在第六判斷模塊判斷出按鍵時(shí)長不小于第一預(yù)設(shè)時(shí)長時(shí),從日志存儲(chǔ)區(qū)中讀取日志,將讀取到的日志存儲(chǔ)到顯示數(shù)據(jù)緩沖區(qū),開啟按鍵中斷,并觸發(fā)第一判斷模塊502判斷是否存在置位的中斷標(biāo)志。
[0341]其中,上述第一預(yù)設(shè)時(shí)長為第一預(yù)設(shè)值和第二預(yù)設(shè)值之間的差值與第三預(yù)設(shè)時(shí)長的乘積;
[0342]相應(yīng)地,上述復(fù)位模塊504,還用于在第二判斷模塊503判斷出置位的中斷標(biāo)志為按鍵中斷標(biāo)志時(shí),將長按鍵標(biāo)志復(fù)位;
[0343]上述第二獲取模塊,具體用于在第一獲取模塊505獲取到第一鍵值之后,執(zhí)行以下操作:
[0344]39、延時(shí)第二預(yù)設(shè)時(shí)長,保存第一鍵值,掃描鍵盤,獲取第二鍵值;
[0345]310、判斷第二鍵值是否與第一鍵值相同,如果是,則執(zhí)行步驟311 ;否則,開啟按鍵中斷,并觸發(fā)第一判斷模塊502判斷是否存在置位的中斷標(biāo)志;
[0346]311、將定時(shí)器的溢出時(shí)間設(shè)置為第三預(yù)設(shè)時(shí)長,將溢出次數(shù)設(shè)置為第一預(yù)設(shè)值;
[0347]312、開啟總中斷和定時(shí)器的計(jì)時(shí)功能,將時(shí)鐘源切換至低速時(shí)鐘,進(jìn)入休眠模式;
[0348]313、被喚醒后,關(guān)閉定時(shí)器的計(jì)時(shí)功能,將時(shí)鐘源切換至高速時(shí)鐘;
[0349]314、判斷定時(shí)器中斷標(biāo)志是否被置位,如果是,則執(zhí)行步驟315 ;否則,返回步驟812 ;
[0350]315、判斷關(guān)閉總中斷,將定時(shí)器中斷標(biāo)志復(fù)位;
[0351]316、掃描鍵盤,獲取第三鍵值,判斷第三鍵值是否與第一鍵值相同,如果是,則執(zhí)行步驟517 ;否則,開啟按鍵中斷和總中斷,并觸發(fā)第一判斷模塊502判斷是否存在置位的中斷標(biāo)志;
[0352]317、對溢出次數(shù)進(jìn)行更新,判斷溢出次數(shù)是否為第二預(yù)設(shè)值,如果是,則將長按鍵標(biāo)志置位;否則,返回步驟312 ;
[0353]第六判斷模塊,具體用于在第三判斷模塊506判斷出當(dāng)前被按下的按鍵是第二按鍵,或者是第三按鍵和第四按鍵的組合后,判斷長按鍵標(biāo)志是否置位,如果是,則確定按鍵時(shí)長不小于第一預(yù)設(shè)時(shí)長;否則,確定按鍵時(shí)長小于第一預(yù)設(shè)時(shí)長。
[0354]進(jìn)一步地,上述動(dòng)態(tài)令牌,還包括:
[0355]第七判斷模塊,用于對系統(tǒng)狀態(tài)進(jìn)行判斷;
[0356]第十一處理模塊,用于在第三判斷模塊506判斷出當(dāng)前被按下的按鍵是電源鍵,且第七判斷模塊判斷出系統(tǒng)狀態(tài)不是關(guān)機(jī)狀態(tài)時(shí),將系統(tǒng)狀態(tài)設(shè)置為關(guān)機(jī)狀態(tài),開啟按鍵中斷,并觸發(fā)第一判斷模塊502判斷是否存在置位的中斷標(biāo)志;在第三判斷模塊506判斷出當(dāng)前被按下的按鍵是電源鍵,且第七判斷模塊判斷出系統(tǒng)狀態(tài)是關(guān)機(jī)狀態(tài)時(shí),更新系統(tǒng)狀態(tài);
[0357]上述第二處理模塊508,包括:
[0358]更新子模塊,用于在第七判斷模塊判斷出系統(tǒng)狀態(tài)為關(guān)機(jī)狀態(tài),且第三判斷模塊506判斷出當(dāng)前被按下的按鍵是第二按鍵,或者是第三按鍵和第四按鍵的組合時(shí),更新系統(tǒng)狀態(tài);
[0359]處理子模塊,用于在第七判斷模塊判斷出系統(tǒng)狀態(tài)為關(guān)機(jī)狀態(tài),且第三判斷模塊506判斷出當(dāng)前被按下的按鍵是第二按鍵,或者是第三按鍵和第四按鍵的組合時(shí),從日志存儲(chǔ)區(qū)中讀取日志,將讀取到的日志存儲(chǔ)到顯示數(shù)據(jù)緩沖區(qū),開啟按鍵中斷,并觸發(fā)第一判斷模塊502判斷是否存在置位的中斷標(biāo)志。
[0360]其中,上述第十一處理模塊更新系統(tǒng)狀態(tài),具體為:
[0361]第十一處理模塊將系統(tǒng)狀態(tài)設(shè)置為驗(yàn)證令牌?爪狀態(tài);
[0362]上述動(dòng)態(tài)令牌,還包括:
[0363]第十二處理模塊,用于在第七判斷模塊判斷出系統(tǒng)狀態(tài)為驗(yàn)證令牌?爪狀態(tài),且第三判斷模塊506判斷出當(dāng)前被按下的按鍵是數(shù)字鍵時(shí),執(zhí)行以下操作:
[0364]82、將第一鍵值保存到按鍵數(shù)據(jù)緩沖區(qū)中,更新按鍵數(shù)據(jù)長度;
[0365]83、判斷按鍵數(shù)據(jù)長度是否小于第一預(yù)設(shè)長度,如果是,則開啟按鍵中斷,并觸發(fā)第一判斷模塊502判斷是否存在置位的中斷標(biāo)志;否則,執(zhí)行步驟84 ;
[0366]84、判斷按鍵數(shù)據(jù)緩沖區(qū)中的數(shù)據(jù)是否與密碼數(shù)據(jù)緩沖區(qū)中的數(shù)據(jù)相同,如果是,則執(zhí)行步驟85 ;否則,執(zhí)行步驟86 ;
[0367]85、清空按鍵數(shù)據(jù)緩沖區(qū),將令牌驗(yàn)證錯(cuò)誤次數(shù)清零,將系統(tǒng)狀態(tài)設(shè)置為令牌界面狀態(tài),開啟按鍵中斷,并觸發(fā)第一判斷模塊502判斷是否存在置位的中斷標(biāo)志;
[0368]86、清空按鍵數(shù)據(jù)緩沖區(qū),對令牌驗(yàn)證錯(cuò)誤次數(shù)進(jìn)行更新;
[0369]87、判斷令牌驗(yàn)證錯(cuò)誤次數(shù)是否為第一預(yù)設(shè)次數(shù),如果是,則執(zhí)行步驟88 ;否則,執(zhí)行步驟89 ;
[0370]88、將系統(tǒng)狀態(tài)設(shè)置為顯示解鎖挑戰(zhàn)碼狀態(tài),開啟按鍵中斷,并觸發(fā)第一判斷模塊502判斷是否存在置位的中斷標(biāo)志;
[0371]89、將系統(tǒng)狀態(tài)設(shè)置為?爪錯(cuò)誤狀態(tài),開啟按鍵中斷,并觸發(fā)第一判斷模塊502判斷是否存在置位的中斷標(biāo)志;
[0372]第十三處理模塊,用于在第七判斷模塊判斷出系統(tǒng)狀態(tài)為驗(yàn)證令牌?爪狀態(tài),且第三判斷模塊506判斷出當(dāng)前被按下的按鍵是刪除鍵時(shí),判斷按鍵數(shù)據(jù)長度是否為零,如果是,則開啟按鍵中斷,并觸發(fā)第一判斷模塊502判斷是否存在置位的中斷標(biāo)志;
[0373]否則,將按鍵數(shù)據(jù)緩沖區(qū)中最后一次存入的數(shù)據(jù)刪除,更新按鍵數(shù)據(jù)長度,開啟按鍵中斷,并觸發(fā)第一判斷模塊502判斷是否存在置位的中斷標(biāo)志。
[0374]具體地,上述更新子模塊,具體用于在第七判斷模塊判斷出系統(tǒng)狀態(tài)為關(guān)機(jī)狀態(tài),且第三判斷模塊506判斷出當(dāng)前被按下的按鍵是第二按鍵,或者是第三按鍵和第四按鍵的組合時(shí),將系統(tǒng)狀態(tài)設(shè)置為驗(yàn)證日志狀態(tài);
[0375]相應(yīng)地,上述動(dòng)態(tài)令牌,還包括:
[0376]第十四處理模塊,用于在第七判斷模塊判斷出系統(tǒng)狀態(tài)為驗(yàn)證日志?爪狀態(tài),且第三判斷模塊506判斷出當(dāng)前被按下的按鍵是數(shù)字鍵時(shí),執(zhí)行以下操作:
[0377]02、將第一鍵值保存到按鍵數(shù)據(jù)緩沖區(qū)中,更新按鍵數(shù)據(jù)長度;
[0378]03、判斷按鍵數(shù)據(jù)長度是否小于第一預(yù)設(shè)長度,如果是,則開啟按鍵中斷,并觸發(fā)第一判斷模塊502判斷是否存在置位的中斷標(biāo)志;否則,執(zhí)行步驟04 ;
[0379]04、判斷按鍵數(shù)據(jù)緩沖區(qū)中的數(shù)據(jù)是否與密碼數(shù)據(jù)緩沖區(qū)中的數(shù)據(jù)相同,如果是,則執(zhí)行步驟⑶;否則,執(zhí)行步驟⑶;
[0380]⑶、清空按鍵數(shù)據(jù)緩沖區(qū),將日志驗(yàn)證錯(cuò)誤次數(shù)清零,將系統(tǒng)狀態(tài)設(shè)置為日志顯示狀態(tài),開啟按鍵中斷,并觸發(fā)第一判斷模塊502判斷是否存在置位的中斷標(biāo)志;
[0381]⑶、清空按鍵數(shù)據(jù)緩沖區(qū),對日志驗(yàn)證錯(cuò)誤次數(shù)進(jìn)行更新;
[0382]07、判斷日志驗(yàn)證錯(cuò)誤次數(shù)是否為第二預(yù)設(shè)次數(shù),如果是,則執(zhí)行步驟⑶;否則,執(zhí)行步驟⑶;
[0383]⑶、將系統(tǒng)狀態(tài)設(shè)置為顯示解鎖挑戰(zhàn)碼狀態(tài),開啟按鍵中斷,并觸發(fā)第一判斷模塊502判斷是否存在置位的中斷標(biāo)志;
[0384]⑶、將系統(tǒng)狀態(tài)設(shè)置為?爪錯(cuò)誤狀態(tài),開啟按鍵中斷,并觸發(fā)第一判斷模塊502判斷是否存在置位的中斷標(biāo)志;
[0385]第十五處理模塊,用于在第七判斷模塊判斷出系統(tǒng)狀態(tài)為驗(yàn)證日志?爪狀態(tài),且第三判斷模塊506判斷出當(dāng)前被按下的按鍵是刪除鍵時(shí),判斷按鍵數(shù)據(jù)長度是否為零,如果是,則開啟按鍵中斷,并觸發(fā)第一判斷模塊502判斷是否存在置位的中斷標(biāo)志;否則,將按鍵數(shù)據(jù)緩沖區(qū)中最后一次存入的數(shù)據(jù)刪除,更新按鍵數(shù)據(jù)長度,開啟按鍵中斷,并觸發(fā)第一判斷模塊502判斷是否存在置位的中斷標(biāo)志。
[0386]進(jìn)一步地,上述動(dòng)態(tài)令牌,還包括:
[0387]標(biāo)志位管理模塊,用于在第三判斷模塊506判斷出當(dāng)前被按下的按鍵是電源鍵,且第七判斷模塊判斷出系統(tǒng)狀態(tài)不是關(guān)機(jī)狀態(tài)時(shí),將日志開機(jī)標(biāo)志復(fù)位;在第七判斷模塊判斷出系統(tǒng)狀態(tài)為關(guān)機(jī)狀態(tài),且第三判斷模塊506判斷出當(dāng)前被按下的按鍵是第二按鍵,或者是第三按鍵和第四按鍵的組合時(shí),將日志開機(jī)標(biāo)志置位;
[0388]第十六處理模塊,用于在第三判斷模塊506判斷出當(dāng)前被按下的按鍵不是電源鍵,且第七判斷模塊判斷出系統(tǒng)狀態(tài)為錯(cuò)誤狀態(tài)時(shí),判斷日志開機(jī)標(biāo)志是否置位,如果是,則將系統(tǒng)狀態(tài)設(shè)置為驗(yàn)證日志狀態(tài),開啟按鍵中斷,并觸發(fā)第一判斷模塊502判斷是否存在置位的中斷標(biāo)志;否則,將系統(tǒng)狀態(tài)設(shè)置為驗(yàn)證令牌狀態(tài),開啟按鍵中斷,并觸發(fā)第一判斷模塊502判斷是否存在置位的中斷標(biāo)志。
[0389]具體地,上述第十一處理模塊,具體用于在第三判斷模塊506判斷出當(dāng)前被按下的按鍵是電源鍵,且第七判斷模塊判斷出系統(tǒng)狀態(tài)不是關(guān)機(jī)狀態(tài)時(shí),將系統(tǒng)狀態(tài)設(shè)置為關(guān)機(jī)狀態(tài),開啟按鍵中斷,并觸發(fā)第一判斷模塊502判斷是否存在置位的中斷標(biāo)志;在第三判斷模塊506判斷出當(dāng)前被按下的按鍵是電源鍵,且第七判斷模塊判斷出系統(tǒng)狀態(tài)是關(guān)機(jī)狀態(tài)時(shí),判斷令牌鎖定標(biāo)志是否置位,如果是,則將系統(tǒng)狀態(tài)設(shè)置為顯示解鎖挑戰(zhàn)碼狀態(tài),開啟按鍵中斷,并觸發(fā)第一判斷模塊502判斷是否存在置位的中斷標(biāo)志;否則,將系統(tǒng)狀態(tài)設(shè)置為驗(yàn)證令牌狀態(tài);
[0390]上述更新子模塊,具體用于在第七判斷模塊判斷出系統(tǒng)狀態(tài)為關(guān)機(jī)狀態(tài),且第三判斷模塊506判斷出當(dāng)前被按下的按鍵是第二按鍵,或者是第三按鍵和第四按鍵的組合時(shí),判斷日志鎖定標(biāo)志是否置位,如果是,則將系統(tǒng)狀態(tài)設(shè)置為顯示解鎖挑戰(zhàn)碼狀態(tài),開啟按鍵中斷,并觸發(fā)第一判斷模塊502判斷是否存在置位的中斷標(biāo)志;否則,將系統(tǒng)狀態(tài)設(shè)置為驗(yàn)證日志狀態(tài);
[0391]上述第十二處理模塊,還用于在判斷出令牌驗(yàn)證錯(cuò)誤次數(shù)為第一預(yù)設(shè)次數(shù)之后,將令牌鎖定標(biāo)志置位;
[0392]上述第十四處理模塊,還用于在判斷出日志驗(yàn)證錯(cuò)誤次數(shù)為第二預(yù)設(shè)次數(shù)之后,將令牌鎖定標(biāo)志置位;
[0393]上述動(dòng)態(tài)令牌,還包括:
[0394]第十七處理模塊,用于在第七判斷模塊判斷出系統(tǒng)狀態(tài)為顯示解鎖挑戰(zhàn)碼狀態(tài),且第三判斷模塊506判斷出當(dāng)前被按下的按鍵不是電源鍵時(shí),生成解鎖挑戰(zhàn)碼,將系統(tǒng)狀態(tài)設(shè)置為等待輸入解鎖碼狀態(tài),顯示解鎖挑戰(zhàn)碼,開啟按鍵中斷,并觸發(fā)第一判斷模塊502判斷是否存在置位的中斷標(biāo)志;
[0395]第十八處理模塊,用于在第七判斷模塊判斷出系統(tǒng)狀態(tài)為等待輸入解鎖碼狀態(tài),且第三判斷模塊506判斷出當(dāng)前被按下的按鍵是數(shù)字鍵時(shí),執(zhí)行以下操作:
[0396]02、將第一鍵值保存到按鍵數(shù)據(jù)緩沖區(qū)中,更新按鍵數(shù)據(jù)長度,判斷按鍵數(shù)據(jù)長度是否小于第二預(yù)設(shè)長度,如果是,則開啟按鍵中斷,并觸發(fā)第一判斷模塊502判斷是否存在置位的中斷標(biāo)志;否則,執(zhí)行步驟03 ;
[0397]03、根據(jù)解鎖挑戰(zhàn)碼,對按鍵數(shù)據(jù)緩沖區(qū)中的數(shù)據(jù)進(jìn)行驗(yàn)證,如果驗(yàn)證通過,則執(zhí)行步驟04;否則,執(zhí)行步驟05;
[0398]04、清空按鍵數(shù)據(jù)緩沖區(qū),將令牌鎖定標(biāo)志和日志鎖定標(biāo)志復(fù)位,將系統(tǒng)狀態(tài)設(shè)置為第一設(shè)置狀態(tài),開啟按鍵中斷,并觸發(fā)第一判斷模塊502判斷是否存在置位的中斷標(biāo)志;
[0399]05、清空按鍵數(shù)據(jù)緩沖區(qū),將系統(tǒng)狀態(tài)設(shè)置為關(guān)機(jī)狀態(tài),開啟按鍵中斷,并觸發(fā)第一判斷模塊502判斷是否存在置位的中斷標(biāo)志;
[0400]第十九處理模塊,用于在第七判斷模塊判斷出系統(tǒng)狀態(tài)為等待輸入解鎖碼狀態(tài),且第三判斷模塊506判斷出當(dāng)前被按下的按鍵是刪除鍵時(shí),判斷按鍵數(shù)據(jù)長度是否為零,如果是,則開啟按鍵中斷,并觸發(fā)第一判斷模塊502判斷是否存在置位的中斷標(biāo)志;否則,將按鍵數(shù)據(jù)緩沖區(qū)中最后一次存入的數(shù)據(jù)刪除,更新按鍵數(shù)據(jù)長度,開啟按鍵中斷,并觸發(fā)第一判斷模塊502判斷是否存在置位的中斷標(biāo)志。
[0401]具體地,上述第十一處理模塊,具體用于在第三判斷模塊506判斷出當(dāng)前被按下的按鍵是電源鍵,且第七判斷模塊判斷出系統(tǒng)狀態(tài)不是關(guān)機(jī)狀態(tài)時(shí),將系統(tǒng)狀態(tài)設(shè)置為關(guān)機(jī)狀態(tài),開啟按鍵中斷,并觸發(fā)第一判斷模塊502判斷是否存在置位的中斷標(biāo)志;在第三判斷模塊506判斷出當(dāng)前被按下的按鍵是電源鍵,且第七判斷模塊判斷出系統(tǒng)狀態(tài)是關(guān)機(jī)狀態(tài)時(shí),判斷密碼設(shè)置標(biāo)志是否置位,如果是,則將系統(tǒng)狀態(tài)設(shè)置為驗(yàn)證令牌狀態(tài);否則,將系統(tǒng)狀態(tài)設(shè)置為第一設(shè)置狀態(tài),開啟按鍵中斷,并觸發(fā)第一判斷模塊502判斷是否存在置位的中斷標(biāo)志;
[0402]相應(yīng)地,上述動(dòng)態(tài)令牌,還包括:
[0403]第二十處理模塊,用于在第七判斷模塊判斷出系統(tǒng)狀態(tài)為第一設(shè)置?爪狀態(tài),且第三判斷模塊506判斷出當(dāng)前被按下的按鍵是數(shù)字鍵時(shí),將第一鍵值保存到按鍵數(shù)據(jù)緩沖區(qū)中,更新按鍵數(shù)據(jù)長度,判斷按鍵數(shù)據(jù)長度是否小于第一預(yù)設(shè)長度,如果是,則開啟按鍵中斷,并觸發(fā)第一判斷模塊502判斷是否存在置位的中斷標(biāo)志;否則,將按鍵數(shù)據(jù)緩沖區(qū)中的數(shù)據(jù)存儲(chǔ)到密碼數(shù)據(jù)緩沖區(qū)中,清空按鍵數(shù)據(jù)緩沖區(qū),將系統(tǒng)狀態(tài)設(shè)置為第二設(shè)置?爪狀態(tài),開啟按鍵中斷,并觸發(fā)第一判斷模塊502判斷是否存在置位的中斷標(biāo)志;
[0404]第二^^一處理模塊,用于在第七判斷模塊判斷出系統(tǒng)狀態(tài)為第一設(shè)置?爪狀態(tài),且第三判斷模塊506判斷出當(dāng)前被按下的按鍵是刪除鍵時(shí),判斷按鍵數(shù)據(jù)長度是否為零,如果是,則開啟按鍵中斷,并觸發(fā)第一判斷模塊502判斷是否存在置位的中斷標(biāo)志;否則,將按鍵數(shù)據(jù)緩沖區(qū)中最后一次存入的數(shù)據(jù)刪除,更新按鍵數(shù)據(jù)長度,開啟按鍵中斷,并觸發(fā)第一判斷模塊502判斷是否存在置位的中斷標(biāo)志;
[0405]第二十二處理模塊,用于在第七判斷模塊判斷出系統(tǒng)狀態(tài)為第二設(shè)置?爪狀態(tài),且第三判斷模塊506判斷出當(dāng)前被按下的按鍵是數(shù)字鍵時(shí),執(zhí)行以下操作:
[0406]?2、將第一鍵值保存到按鍵數(shù)據(jù)緩沖區(qū)中,更新按鍵數(shù)據(jù)長度,判斷按鍵數(shù)據(jù)長度是否小于第一預(yù)設(shè)長度,如果是,則開啟按鍵中斷,并觸發(fā)第一判斷模塊502判斷是否存在置位的中斷標(biāo)志;否則,執(zhí)行步驟?3 ;
[0407]?3、判斷按鍵數(shù)據(jù)緩沖區(qū)中的數(shù)據(jù)是否與密碼數(shù)據(jù)緩沖區(qū)中的數(shù)據(jù)相同,如果是,則執(zhí)行步驟?5 ;否則,執(zhí)行步驟?4 ;
[0408]?4、清空按鍵數(shù)據(jù)緩沖區(qū)和密碼數(shù)據(jù)緩沖區(qū),將系統(tǒng)狀態(tài)設(shè)置為?爪設(shè)置錯(cuò)誤狀態(tài),開啟按鍵中斷,并觸發(fā)第一判斷模塊502判斷是否存在置位的中斷標(biāo)志;
[0409]?5、判斷日志開機(jī)標(biāo)志是否置位,如果是,則執(zhí)行步驟?6 ;否則,執(zhí)行步驟?7 ;
[0410]?6、將密碼設(shè)置標(biāo)志置位,清空按鍵數(shù)據(jù)緩沖區(qū),將系統(tǒng)狀態(tài)設(shè)置為日志顯示狀態(tài),開啟按鍵中斷,并觸發(fā)第一判斷模塊502判斷是否存在置位的中斷標(biāo)志;
[0411]?7、將密碼設(shè)置標(biāo)志置位,清空按鍵數(shù)據(jù)緩沖區(qū),將系統(tǒng)狀態(tài)設(shè)置為令牌界面狀態(tài),開啟按鍵中斷,并觸發(fā)第一判斷模塊502判斷是否存在置位的中斷標(biāo)志;
[0412]第二十三處理模塊,用于在第七判斷模塊判斷出系統(tǒng)狀態(tài)為第二設(shè)置?爪狀態(tài),且第三判斷模塊506判斷出當(dāng)前被按下的按鍵是刪除鍵時(shí),判斷按鍵數(shù)據(jù)長度是否為零,如果是,則開啟按鍵中斷,并觸發(fā)第一判斷模塊502判斷是否存在置位的中斷標(biāo)志;否則,將按鍵數(shù)據(jù)緩沖區(qū)中最后一次存入的數(shù)據(jù)刪除,更新按鍵數(shù)據(jù)長度,開啟按鍵中斷,并觸發(fā)第一判斷模塊502判斷是否存在置位的中斷標(biāo)志;
[0413]第二十四處理模塊,用于在第三判斷模塊506判斷出當(dāng)前被按下的按鍵不是電源鍵,且第七判斷模塊判斷出系統(tǒng)狀態(tài)為?爪設(shè)置錯(cuò)誤狀態(tài)時(shí),將系統(tǒng)狀態(tài)設(shè)置為第一設(shè)置狀態(tài),開啟按鍵中斷,并觸發(fā)第一判斷模塊502判斷是否存在置位的中斷標(biāo)志;
[0414]第一處理模塊507,具體用于在第三判斷模塊506判斷出當(dāng)前被按下的按鍵是第一按鍵,且第七判斷模塊判斷出系統(tǒng)狀態(tài)為令牌界面狀態(tài)時(shí),生成動(dòng)態(tài)口令以及與動(dòng)態(tài)口令對應(yīng)的日志,將動(dòng)態(tài)口令存儲(chǔ)到顯示數(shù)據(jù)緩沖區(qū),將所述日志存儲(chǔ)到日志存儲(chǔ)區(qū),開啟按鍵中斷,并觸發(fā)第一判斷模塊502判斷是否存在置位的中斷標(biāo)志;
[0415]第二處理模塊508,具體用于在第三判斷模塊506判斷出當(dāng)前被按下的按鍵是第二按鍵,或者是第三按鍵和第四按鍵的組合,且第七判斷模塊判斷出系統(tǒng)狀態(tài)為日志顯示狀態(tài)時(shí),從日志存儲(chǔ)區(qū)中讀取日志,將讀取到的日志存儲(chǔ)到顯示數(shù)據(jù)緩沖區(qū),開啟按鍵中斷,并觸發(fā)第一判斷模塊502判斷是否存在置位的中斷標(biāo)志。
[0416]本發(fā)明實(shí)施例中的動(dòng)態(tài)令牌在生成動(dòng)態(tài)口令后,生成并記錄與該動(dòng)態(tài)口令對應(yīng)的日志供用戶查看,從而記錄與已完成的身份認(rèn)證相關(guān)的信息,使得用戶能夠復(fù)核已完成的身份認(rèn)證是否為由自身完成的身份認(rèn)證,提高了使用動(dòng)態(tài)口令的身份認(rèn)證機(jī)制以及動(dòng)態(tài)令牌的安全性。
[0417]結(jié)合本文中所公開的實(shí)施例描述的方法中的步驟可以直接用硬件、處理器執(zhí)行的軟件模塊,或者二者的結(jié)合來實(shí)施。軟件模塊可以置于隨機(jī)存儲(chǔ)器(狀的、內(nèi)存、只讀存儲(chǔ)器¢01)、電可編程801、電可擦除可編程801、寄存器、硬盤、可移動(dòng)磁盤、03401、或【技術(shù)領(lǐng)域】內(nèi)所公知的任意其它形式的存儲(chǔ)介質(zhì)中。
[0418]以上所述,僅為本發(fā)明的【具體實(shí)施方式】,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本【技術(shù)領(lǐng)域】的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)所述以權(quán)利要求的保護(hù)范圍為準(zhǔn)。
【權(quán)利要求】
1.一種具有日志功能的動(dòng)態(tài)令牌的工作方法,其特征在于,包括以下步驟: 31、動(dòng)態(tài)令牌上電,執(zhí)行初始化操作,開啟總中斷和按鍵喚醒功能; 32、所述動(dòng)態(tài)令牌判斷是否存在置位的中斷標(biāo)志,如果是,則執(zhí)行步驟33;否則,繼續(xù)執(zhí)行步驟52 ; 33、所述動(dòng)態(tài)令牌對置位的中斷標(biāo)志進(jìn)行判斷,如果是定時(shí)器中斷標(biāo)志,則執(zhí)行步驟84 ;如果是按鍵中斷標(biāo)志,則執(zhí)行步驟35 ; 34、所述動(dòng)態(tài)令牌將所述定時(shí)器中斷標(biāo)志復(fù)位,并返回步驟52; 35、所述動(dòng)態(tài)令牌關(guān)閉按鍵中斷,掃描鍵盤,獲取第一鍵值; 36、所述動(dòng)態(tài)令牌根據(jù)所述第一鍵值,對當(dāng)前被按下的按鍵進(jìn)行判斷,如果當(dāng)前被按下的按鍵是第一按鍵,則執(zhí)行步驟37 ;如果當(dāng)前被按下的按鍵是第二按鍵,或者是第三按鍵和第四按鍵的組合,則執(zhí)行步驟38 ; 37、所述動(dòng)態(tài)令牌生成動(dòng)態(tài)口令以及與所述動(dòng)態(tài)口令對應(yīng)的日志,將所述動(dòng)態(tài)口令存儲(chǔ)到顯示數(shù)據(jù)緩沖區(qū),將所述日志存儲(chǔ)到日志存儲(chǔ)區(qū),開啟按鍵中斷,并返回步驟32; 38、所述動(dòng)態(tài)令牌從所述日志存儲(chǔ)區(qū)中讀取日志,將讀取到的日志存儲(chǔ)到所述顯示數(shù)據(jù)緩沖區(qū),開啟按鍵中斷,并返回步驟32。
2.如權(quán)利要求1所述的方法,其特征在于,所述動(dòng)態(tài)令牌根據(jù)所述第一鍵值,判斷出當(dāng)前被按下的按鍵是第二按鍵,或者是第三按鍵和第四按鍵的組合之后,還包括: 丁1、所述動(dòng)態(tài)令牌開啟按鍵中斷,判斷是否存在置位的中斷標(biāo)志,如果是,則執(zhí)行步驟12 ;否則,繼續(xù)執(zhí)行步驟II ; 丁2、所述動(dòng)態(tài)令牌判斷出置位的中斷標(biāo)志是按鍵中斷標(biāo)志后,關(guān)閉按鍵中斷,掃描鍵盤; 丁3、所述動(dòng)態(tài)令牌根據(jù)掃描得到的鍵值判斷出當(dāng)前被按下的按鍵為第五按鍵后,執(zhí)行所述步驟38。
3.如權(quán)利要求1或2所述的方法,其特征在于,所述第一按鍵為確認(rèn)鍵; 所述動(dòng)態(tài)令牌根據(jù)所述第一鍵值,對當(dāng)前被按下的按鍵進(jìn)行判斷之后,還包括: 如果當(dāng)前被按下的按鍵是數(shù)字鍵,所述動(dòng)態(tài)令牌判斷按鍵數(shù)據(jù)長度是否小于第三預(yù)設(shè)長度,如果是,則將所述第一鍵值保存到按鍵數(shù)據(jù)緩沖區(qū)和顯示數(shù)據(jù)緩沖區(qū)中,更新所述按鍵數(shù)據(jù)長度,開啟按鍵中斷,并返回步驟32 ;否則,開啟按鍵中斷,并返回步驟32 ; 如果當(dāng)前被按下的按鍵是刪除鍵,所述動(dòng)態(tài)令牌判斷按鍵數(shù)據(jù)長度是否為零,如果是,則開啟按鍵中斷,并返回步驟32 ;否則,將所述按鍵數(shù)據(jù)緩沖區(qū)中最后一次存入的數(shù)據(jù)刪除,更新所述按鍵數(shù)據(jù)長度,將所述顯示數(shù)據(jù)緩沖區(qū)中最后一次存入的數(shù)據(jù)刪除,開啟按鍵中斷,并返回步驟32; 所述步驟37,具體包括: 所述動(dòng)態(tài)令牌判斷所述按鍵數(shù)據(jù)長度是否為零; 如果所述按鍵數(shù)據(jù)長度為零,所述動(dòng)態(tài)令牌根據(jù)時(shí)間因子,生成動(dòng)態(tài)口令以及與所述動(dòng)態(tài)口令對應(yīng)的新增日志,將所述動(dòng)態(tài)口令存儲(chǔ)到所述顯示數(shù)據(jù)緩沖區(qū)中,將所述新增日志存儲(chǔ)到所述日志存儲(chǔ)區(qū),開啟按鍵中斷,并返回步驟32 ; 如果所述按鍵數(shù)據(jù)長度不為零,所述動(dòng)態(tài)令牌將所述按鍵數(shù)據(jù)緩沖區(qū)中的數(shù)據(jù)作為挑戰(zhàn)碼,生成動(dòng)態(tài)口令以及與所述動(dòng)態(tài)口令對應(yīng)的新增日志,將所述動(dòng)態(tài)口令存儲(chǔ)到所述顯示數(shù)據(jù)緩沖區(qū)中,將所述新增日志存儲(chǔ)到所述日志存儲(chǔ)區(qū),開啟按鍵中斷,并返回步驟32。
4.如權(quán)利要求3所述的方法,其特征在于,所述動(dòng)態(tài)令牌根據(jù)時(shí)間因子,生成動(dòng)態(tài)口令以及與所述動(dòng)態(tài)口令對應(yīng)的新增日志,具體為: 所述動(dòng)態(tài)令牌根據(jù)所述時(shí)間因子生成時(shí)間型動(dòng)態(tài)口令,為新增日志分配索引,將與所述時(shí)間因子對應(yīng)的時(shí)間信息的長度作為所述新增日志的長度,對所述索引、所述新增日志的長度以及與所述時(shí)間因子對應(yīng)的時(shí)間信息進(jìn)行組合,得到所述新增日志。
5.如權(quán)利要求3所述的方法,其特征在于,所述動(dòng)態(tài)令牌將所述按鍵數(shù)據(jù)緩沖區(qū)中的數(shù)據(jù)作為挑戰(zhàn)碼,生成動(dòng)態(tài)口令以及與所述動(dòng)態(tài)口令對應(yīng)的新增日志,具體為: 所述動(dòng)態(tài)令牌根據(jù)所述時(shí)間因子和所述挑戰(zhàn)碼,生成挑戰(zhàn)型動(dòng)態(tài)口令,為新增日志分配索引,對與所述挑戰(zhàn)碼對應(yīng)的交易信息進(jìn)行壓縮,得到壓縮交易數(shù)據(jù),獲取與所述時(shí)間因子對應(yīng)的時(shí)間信息的長度和所述壓縮交易數(shù)據(jù)的長度之和作為所述新增日志的長度,對所述索引、所述新增日志的長度、與所述時(shí)間因子對應(yīng)的時(shí)間信息,以及所述壓縮交易數(shù)據(jù)進(jìn)行組合,得到所述新增日志。
6.如權(quán)利要求3所述的方法,其特征在于,所述動(dòng)態(tài)令牌將所述新增日志存儲(chǔ)到所述日志存儲(chǔ)區(qū),具體包括: 所述動(dòng)態(tài)令牌判斷日志條數(shù)是否為零,如果是,則將所述新增日志存儲(chǔ)到所述日志存儲(chǔ)區(qū)中,將最前日志索引和最后日志索引均設(shè)置為所述新增日志中的索引,更新日志條數(shù);否則,將所述新增日志存儲(chǔ)到所述日志存儲(chǔ)區(qū)中,將最后日志索引設(shè)置為所述新增日志中的索引,更新日志條數(shù)。
7.如權(quán)利要求6所述的方法,其特征在于,所述步驟38,具體為: 所述動(dòng)態(tài)令牌將當(dāng)前日志索引設(shè)置為所述最后日志索引,根據(jù)當(dāng)前日志索引從所述日志存儲(chǔ)區(qū)中讀取對應(yīng)的日志,將讀取到的日志存儲(chǔ)到日志緩沖區(qū)中,將讀取到的日志中的時(shí)間信息存儲(chǔ)到所述顯示數(shù)據(jù)緩沖區(qū)中,開啟按鍵中斷,并返回步驟32。
8.如權(quán)利要求7所述的方法,其特征在于,所述步驟38之后,還包括:01、所述動(dòng)態(tài)令牌判斷出置位的中斷標(biāo)志是按鍵中斷標(biāo)志后,關(guān)閉按鍵中斷,掃描鍵盤; 02、所述動(dòng)態(tài)令牌根據(jù)掃描得到的鍵值,對當(dāng)前被按下的按鍵進(jìn)行判斷,如果是左鍵,則執(zhí)行步驟03 ;如果是右鍵,則執(zhí)行步驟05 ; 03、所述動(dòng)態(tài)令牌判斷當(dāng)前日志索引是否等于所述最前日志索引,如果是,則開啟按鍵中斷,并返回步驟32 ;否則,執(zhí)行步驟04 ; 04、所述動(dòng)態(tài)令牌更新當(dāng)前日志索引,根據(jù)當(dāng)前日志索引從所述日志存儲(chǔ)區(qū)中讀取對應(yīng)的日志,將讀取到的日志中的時(shí)間信息存儲(chǔ)到所述顯示數(shù)據(jù)緩沖區(qū)中,開啟按鍵中斷,并返回步驟32 ; 陰、所述動(dòng)態(tài)令牌判斷當(dāng)前日志索引是否等于所述最后日志索引,如果是,則開啟按鍵中斷,并返回步驟32;否則,更新當(dāng)前日志索引,根據(jù)當(dāng)前日志索引從所述日志存儲(chǔ)區(qū)中讀取對應(yīng)的日志,將讀取到的日志中的時(shí)間信息存儲(chǔ)到所述顯示數(shù)據(jù)緩沖區(qū)中,開啟按鍵中斷,并返回步驟32。
9.如權(quán)利要求8所述的方法,其特征在于,所述步驟02之前,還包括: 所述動(dòng)態(tài)令牌判斷出時(shí)間信息顯示標(biāo)志置位; 所述步驟02中,所述動(dòng)態(tài)令牌根據(jù)掃描得到的鍵值,判斷出當(dāng)前被按下的按鍵為確認(rèn)鍵之后,還包括: 尺1、所述動(dòng)態(tài)令牌判斷所述日志緩沖區(qū)中的日志的長度是否為第五預(yù)設(shè)長度,如果是,則執(zhí)行步驟卩2 ;否則,執(zhí)行步驟尺3 ; 尺2、所述動(dòng)態(tài)令牌顯示空白交易信息,將所述時(shí)間信息顯示標(biāo)志復(fù)位,開啟按鍵中斷,并返回步驟32; 尺3、所述動(dòng)態(tài)令牌將所述時(shí)間信息顯示標(biāo)志復(fù)位,從所述日志緩沖區(qū)中的日志中獲取壓縮交易數(shù)據(jù),對所述壓縮交易數(shù)據(jù)進(jìn)行解壓,判斷解壓得到的當(dāng)前交易信息的長度是否大于第四預(yù)設(shè)長度,如果是,則執(zhí)行步驟財(cái);否則,執(zhí)行步驟尺5 ; 財(cái)、所述動(dòng)態(tài)令牌從所述當(dāng)前交易信息中選取存儲(chǔ)位置最靠前的、第四預(yù)設(shè)長度的數(shù)據(jù)作為當(dāng)前顯示信息,將所述當(dāng)前顯示信息存儲(chǔ)到所述顯示數(shù)據(jù)緩沖區(qū)中,點(diǎn)亮顯示屏上的右箭頭,開啟按鍵中斷,并返回步驟32 ; 尺5、所述動(dòng)態(tài)令牌將所述當(dāng)前交易信息存儲(chǔ)到所述顯示數(shù)據(jù)緩沖區(qū)中,開啟按鍵中斷,并返回步驟32。
10.如權(quán)利要求6所述的方法,其特征在于,所述步驟38,具體為: 所述動(dòng)態(tài)令牌將當(dāng)前日志索引設(shè)置為所述最后日志索引,根據(jù)當(dāng)前日志索引從所述日志存儲(chǔ)區(qū)中讀取對應(yīng)的日志,對讀取到的日志中的壓縮交易數(shù)據(jù)進(jìn)行解壓,將解壓得到的當(dāng)前交易信息存儲(chǔ)到日志緩沖區(qū)中,判斷當(dāng)前交易信息是否大于第四預(yù)設(shè)長度,如果是,貝0從所述當(dāng)前交易信息中選取存儲(chǔ)位置最靠前的、第四預(yù)設(shè)長度的數(shù)據(jù)作為當(dāng)前顯示信息,將所述當(dāng)前顯示信息存儲(chǔ)到所述顯示數(shù)據(jù)緩沖區(qū)中,點(diǎn)亮顯示屏上的右箭頭,開啟按鍵中斷,并返回步驟32 ;否則,將所述當(dāng)前交易信息存儲(chǔ)到所述顯示數(shù)據(jù)緩沖區(qū)中,開啟按鍵中斷,并返回步驟32。
11.如權(quán)利要求10所述的方法,其特征在于,所述步驟38之后,還包括: 11、所述動(dòng)態(tài)令牌判斷出置位的中斷標(biāo)志是按鍵中斷標(biāo)志后,關(guān)閉按鍵中斷,掃描鍵盤; 12、所述動(dòng)態(tài)令牌根據(jù)掃描得到的鍵值,對當(dāng)前被按下的按鍵進(jìn)行判斷,如果是左鍵,則執(zhí)行步驟13 ;如果是右鍵,則執(zhí)行步驟17 ; 13、所述動(dòng)態(tài)令牌判斷顯示屏上的左箭頭是否被點(diǎn)亮,如果是,執(zhí)行步驟14;否則,開啟按鍵中斷,并返回步驟32; 14、所述動(dòng)態(tài)令牌從所述當(dāng)前交易信息中讀取與所述當(dāng)前顯示信息相鄰,且存儲(chǔ)位置更靠前的數(shù)據(jù)作為未顯示數(shù)據(jù),判斷所述未顯示數(shù)據(jù)的長度是否大于第四預(yù)設(shè)長度,如果是,則執(zhí)行步驟15 ;否則,執(zhí)行步驟16 ; 15、所述動(dòng)態(tài)令牌從所述未顯示數(shù)據(jù)中選取存儲(chǔ)位置最靠后的、第四預(yù)設(shè)長度的數(shù)據(jù)作為當(dāng)前顯示信息,將所述當(dāng)前顯示信息存儲(chǔ)到所述顯示數(shù)據(jù)緩沖區(qū)中,點(diǎn)亮顯示屏上的右箭頭,開啟按鍵中斷,并返回步驟32 ; 16、所述動(dòng)態(tài)令牌將所述未顯示數(shù)據(jù)存儲(chǔ)到所述顯示數(shù)據(jù)緩沖區(qū)中,點(diǎn)亮顯示屏上的右箭頭,熄滅顯示屏上的左箭頭,開啟按鍵中斷,并返回步驟32; 17、所述動(dòng)態(tài)令牌判斷顯示屏上的右箭頭是否被點(diǎn)亮,如果是,執(zhí)行步驟18;否則,開啟按鍵中斷,并返回步驟32; 18、所述動(dòng)態(tài)令牌從所述當(dāng)前交易信息中讀取與所述當(dāng)前顯示信息相鄰,且存儲(chǔ)位置更靠后的數(shù)據(jù)作為未顯示數(shù)據(jù),判斷所述未顯示數(shù)據(jù)的長度是否大于第四預(yù)設(shè)長度,如果是,則執(zhí)行步驟細(xì);否則,執(zhí)行步驟110 ; 19、所述動(dòng)態(tài)令牌從所述未顯示數(shù)據(jù)中選取存儲(chǔ)位置最靠前的、第四預(yù)設(shè)長度的數(shù)據(jù)作為當(dāng)前顯示信息,將所述當(dāng)前顯示信息存儲(chǔ)到所述顯示數(shù)據(jù)緩沖區(qū)中,點(diǎn)亮顯示屏上的左箭頭,開啟按鍵中斷,并返回步驟32 ; 110、所述動(dòng)態(tài)令牌將所述未顯示數(shù)據(jù)存儲(chǔ)到所述顯示數(shù)據(jù)緩沖區(qū)中,點(diǎn)亮顯示屏上的左箭頭,熄滅顯示屏上的右箭頭,開啟按鍵中斷,并返回步驟32。
12.如權(quán)利要求11所述的方法,其特征在于,所述步驟12之前,還包括: 所述動(dòng)態(tài)令牌判斷出時(shí)間信息顯示標(biāo)志復(fù)位; 所述步驟12中,所述動(dòng)態(tài)令牌根據(jù)掃描得到的鍵值,判斷出當(dāng)前被按下的按鍵為確認(rèn)鍵之后,還包括: 所述動(dòng)態(tài)令牌將所述時(shí)間信息顯示標(biāo)志置位,從所述日志緩沖區(qū)中的日志中讀取時(shí)間信息,將讀取到的時(shí)間信息存儲(chǔ)到所述顯示數(shù)據(jù)緩沖區(qū)中,開啟按鍵中斷,并返回步驟32。
13.如權(quán)利要求7至12中任一項(xiàng)所述的方法,其特征在于,所述動(dòng)態(tài)令牌將所述新增日志存儲(chǔ)到所述日志存儲(chǔ)區(qū),具體包括: ?1、所述動(dòng)態(tài)令牌判斷日志條數(shù)是否為零,如果是,則將所述新增日志存儲(chǔ)到所述日志存儲(chǔ)區(qū)中,將最前日志索引和最后日志索引均設(shè)置為所述新增日志中的索引,更新日志條數(shù);否則,執(zhí)行步驟?2; ?2、所述動(dòng)態(tài)令牌判斷所述新增日志占用的空間是否大于所述日志存儲(chǔ)區(qū)中的剩余空間,如果是,則執(zhí)行步驟?3 ;否則,將所述新增日志存儲(chǔ)到日志存儲(chǔ)區(qū)中,更新日志條數(shù)和最后日志索引; ?3、所述動(dòng)態(tài)令牌將所述日志存儲(chǔ)區(qū)中最早一次存入的日志刪除,將所述日志存儲(chǔ)區(qū)中剩余的日志前移,更新日志條數(shù)和最前日志索引,并返回步驟?2。
14.如權(quán)利要求13所述的方法,其特征在于,所述動(dòng)態(tài)令牌根據(jù)當(dāng)前日志索引從所述日志存儲(chǔ)區(qū)中讀取對應(yīng)的日志,具體包括: 只1、所述動(dòng)態(tài)令牌將讀取指針設(shè)置為所述日志存儲(chǔ)區(qū)的首地址; 只2、所述動(dòng)態(tài)令牌根據(jù)所述讀取指針,從所述日志存儲(chǔ)區(qū)中讀取對應(yīng)的日志,判斷讀取到的日志中的索引是否與所述當(dāng)前日志索引相同,如果是,則確定讀取到的日志為與所述當(dāng)前日志索引對應(yīng)的日志;否則,執(zhí)行步驟陽; 只3、所述動(dòng)態(tài)令牌根據(jù)讀取到的日志占用的空間大小更新所述讀取指針,并返回步驟?。?。
15.如權(quán)利要求7-12中任一項(xiàng)所述的方法,其特征在于,所述動(dòng)態(tài)令牌將所述新增日志存儲(chǔ)到所述日志存儲(chǔ)區(qū),具體包括: 61、所述動(dòng)態(tài)令牌判斷所述新增日志占用的空間是否大于所述日志存儲(chǔ)區(qū)中的剩余空間,如果是,則執(zhí)行步驟62 ;否則,執(zhí)行步驟64 ; 62、所述動(dòng)態(tài)令牌根據(jù)最前記錄指針,從所述日志存儲(chǔ)區(qū)中讀取對應(yīng)的日志,根據(jù)讀取到的日志占用的空間,更新所述最前記錄指針和所述日志存儲(chǔ)區(qū)中的剩余空間; 63、所述動(dòng)態(tài)令牌根據(jù)所述最前記錄指針,從所述日志存儲(chǔ)區(qū)中讀取對應(yīng)的日志,將讀取到的日志的索引作為最前日志索引,更新日志條數(shù),并返回步驟以; 64、所述動(dòng)態(tài)令牌判斷日志條數(shù)是否為零,如果是,則執(zhí)行步驟⑶;否則,執(zhí)行步驟⑶; 65、所述動(dòng)態(tài)令牌根據(jù)最后記錄指針,從所述日志存儲(chǔ)區(qū)中讀取對應(yīng)的日志,根據(jù)讀取到的日志占用的空間,更新所述最后記錄指針,并執(zhí)行步驟⑶; 66、所述動(dòng)態(tài)令牌將臨時(shí)計(jì)數(shù)器的計(jì)數(shù)值設(shè)置為零,將臨時(shí)指針的取值設(shè)置為最后記錄指針的取值,將當(dāng)前日志字節(jié)設(shè)置為所述新增日志的首字節(jié); 67、所述動(dòng)態(tài)令牌判斷所述臨時(shí)指針的取值是否小于所述日志存儲(chǔ)區(qū)的空間大小,如果是,則執(zhí)行步驟⑶;否則,將所述臨時(shí)指針的取值置為零,并執(zhí)行步驟⑶; 68、所述動(dòng)態(tài)令牌將當(dāng)前日志字節(jié)存儲(chǔ)到所述臨時(shí)指針對應(yīng)的位置,更新所述臨時(shí)指針和所述臨時(shí)計(jì)數(shù)器的計(jì)數(shù)值,將當(dāng)前日志字節(jié)的下一字節(jié)作為更新后的當(dāng)前日志字節(jié); 69、所述動(dòng)態(tài)令牌判斷所述臨時(shí)計(jì)數(shù)器的計(jì)數(shù)值是否小于所述新增日志占用的空間大小,如果是,則返回步驟以;否則,執(zhí)行步驟以0 ; 610、所述動(dòng)態(tài)令牌將最后日志索引設(shè)置為所述新增日志的索引,更新日志條數(shù),并根據(jù)所述新增日志占用的空間大小,更新所述日志存儲(chǔ)區(qū)中的剩余空間。
16.如權(quán)利要求15所述的方法,其特征在于,所述動(dòng)態(tài)令牌根據(jù)當(dāng)前日志索引從所述日志存儲(chǔ)區(qū)中讀取對應(yīng)的日志,具體包括: X1、所述動(dòng)態(tài)令牌將臨時(shí)指針的取值設(shè)置為最前記錄指針的取值; 1(2、所述動(dòng)態(tài)令牌根據(jù)所述臨時(shí)指針,從所述日志存儲(chǔ)區(qū)中讀取對應(yīng)的索引,獲取與所述索引對應(yīng)的日志所占用的空間大小,判斷所述索引是否與所述當(dāng)前日志索引相同,如果是,則執(zhí)行步驟〖4 ;否則,執(zhí)行步驟1(3 ; 1(3、所述動(dòng)態(tài)令牌根據(jù)所述日志所占用的空間大小更新所述臨時(shí)指針,判斷所述臨時(shí)指針的取值是否小于所述日志存儲(chǔ)區(qū)的空間大小,如果是,則返回步驟1(2 ;否則,根據(jù)所述日志存儲(chǔ)區(qū)的空間大小更新所述臨時(shí)指針,并返回步驟1(2 ; 1(4、所述動(dòng)態(tài)令牌將臨時(shí)計(jì)數(shù)器的計(jì)數(shù)值設(shè)置為所述日志所占用的空間大??; 1(5、所述動(dòng)態(tài)令牌根據(jù)所述臨時(shí)指針,從所述日志存儲(chǔ)區(qū)中讀取一個(gè)字節(jié)的數(shù)據(jù),并更新所述臨時(shí)指針和所述臨時(shí)計(jì)數(shù)器的計(jì)數(shù)值; 1(6、所述動(dòng)態(tài)令牌判斷所述臨時(shí)指針的取值是否小于所述日志存儲(chǔ)區(qū)的空間大小,如果是,則執(zhí)行步驟1(7 ;否則,根據(jù)所述日志存儲(chǔ)區(qū)的空間大小更新所述臨時(shí)指針,并執(zhí)行步驟 1(7 ; 1(7、所述動(dòng)態(tài)令牌判斷所述臨時(shí)計(jì)數(shù)器的計(jì)數(shù)值是否大于零,如果是,則返回步驟1(5 ;否則,確定從所述日志存儲(chǔ)區(qū)中讀取與所述當(dāng)前日志索引對應(yīng)的日志完畢。
17.如權(quán)利要求1所述的方法,其特征在于,所述動(dòng)態(tài)令牌獲取第一鍵值之后,還包括: 所述動(dòng)態(tài)令牌獲取按鍵時(shí)長; 所述動(dòng)態(tài)令牌根據(jù)所述第一鍵值,判斷出當(dāng)前被按下的按鍵是第二按鍵,或者是第三按鍵和第四按鍵的組合之后,還包括: 所述動(dòng)態(tài)令牌判斷所述按鍵時(shí)長是否小于第一預(yù)設(shè)時(shí)長,如果是,則根據(jù)當(dāng)前被按下的按鍵執(zhí)行相應(yīng)的操作,開啟按鍵中斷,并返回步驟32;否則,執(zhí)行步驟38。
18.如權(quán)利要求17所述的方法,其特征在于,所述第一預(yù)設(shè)時(shí)長為第一預(yù)設(shè)值和第二預(yù)設(shè)值之間的差值與第三預(yù)設(shè)時(shí)長的乘積; 所述動(dòng)態(tài)令牌判斷出所述置位的中斷標(biāo)志為按鍵中斷標(biāo)志之后,還包括: 所述動(dòng)態(tài)令牌將長按鍵標(biāo)志復(fù)位; 所述動(dòng)態(tài)令牌獲取按鍵時(shí)長,具體包括: 39、所述動(dòng)態(tài)令牌延時(shí)第二預(yù)設(shè)時(shí)長,保存所述第一鍵值,掃描鍵盤,獲取第二鍵值; 310、所述動(dòng)態(tài)令牌判斷所述第二鍵值是否與所述第一鍵值相同,如果是,則執(zhí)行步驟811 ;否則,開啟按鍵中斷,并返回步驟32 ; 311、所述動(dòng)態(tài)令牌將定時(shí)器的溢出時(shí)間設(shè)置為第三預(yù)設(shè)時(shí)長,將溢出次數(shù)設(shè)置為第一預(yù)設(shè)值; 312、所述動(dòng)態(tài)令牌開啟總中斷和所述定時(shí)器的計(jì)時(shí)功能,將時(shí)鐘源切換至低速時(shí)鐘,進(jìn)入休眠模式; 313、所述動(dòng)態(tài)令牌被喚醒后,關(guān)閉所述定時(shí)器的計(jì)時(shí)功能,將時(shí)鐘源切換至高速時(shí)鐘; 314、所述動(dòng)態(tài)令牌判斷所述定時(shí)器中斷標(biāo)志是否被置位,如果是,則執(zhí)行步驟315;否貝0,返回步驟312 ; 315、所述動(dòng)態(tài)令牌判斷關(guān)閉總中斷,將所述定時(shí)器中斷標(biāo)志復(fù)位; 316、所述動(dòng)態(tài)令牌掃描鍵盤,獲取第三鍵值,判斷所述第三鍵值是否與所述第一鍵值相同,如果是,則執(zhí)行步驟317 ;否則,開啟按鍵中斷和總中斷,并返回步驟32 ; 317、所述動(dòng)態(tài)令牌對所述溢出次數(shù)進(jìn)行更新,判斷所述溢出次數(shù)是否為第二預(yù)設(shè)值,如果是,則將所述長按鍵標(biāo)志置位;否則,返回步驟312 ; 所述動(dòng)態(tài)令牌判斷所述按鍵時(shí)長是否小于第一預(yù)設(shè)時(shí)長,具體為: 所述動(dòng)態(tài)令牌判斷所述長按鍵標(biāo)志是否置位,如果是,則確定所述按鍵時(shí)長不小于第一預(yù)設(shè)時(shí)長;否則,確定所述按鍵時(shí)長小于第一預(yù)設(shè)時(shí)長。
19.如權(quán)利要求1所述的方法,其特征在于,所述動(dòng)態(tài)令牌根據(jù)所述第一鍵值,對當(dāng)前被按下的按鍵進(jìn)行判斷之后,還包括: 如果當(dāng)前被按下的按鍵是電源鍵,且系統(tǒng)狀態(tài)不是關(guān)機(jī)狀態(tài)時(shí),執(zhí)行步驟八1 ;如果當(dāng)前被按下的按鍵是電源鍵,且系統(tǒng)狀態(tài)是關(guān)機(jī)狀態(tài)時(shí),執(zhí)行步驟八2: 八1、所述動(dòng)態(tài)令牌將所述系統(tǒng)狀態(tài)設(shè)置為關(guān)機(jī)狀態(tài),開啟按鍵中斷,并返回步驟32 ; 八2、所述動(dòng)態(tài)令牌更新所述系統(tǒng)狀態(tài); 所述步驟38之前,還包括: 所述動(dòng)態(tài)令牌判斷出所述系統(tǒng)狀態(tài)為關(guān)機(jī)狀態(tài),并執(zhí)行以下步驟: 八3、所述動(dòng)態(tài)令牌更新所述系統(tǒng)狀態(tài)。
20.如權(quán)利要求19所述的方法,其特征在于,所述步驟八2,具體為: 所述動(dòng)態(tài)令牌將所述系統(tǒng)狀態(tài)設(shè)置為驗(yàn)證令牌?爪狀態(tài); 所述動(dòng)態(tài)令牌判斷出所述系統(tǒng)狀態(tài)為驗(yàn)證令牌狀態(tài),且根據(jù)所述第一鍵值,對當(dāng)前被按下的按鍵進(jìn)行判斷之后,還包括: 81、所述動(dòng)態(tài)令牌根據(jù)所述第一鍵值,對當(dāng)前被按下的按鍵進(jìn)行判斷,如果是數(shù)字鍵,則執(zhí)行步驟82 ;如果是刪除鍵,則執(zhí)行步驟810 ; 82、所述動(dòng)態(tài)令牌將所述第一鍵值保存到按鍵數(shù)據(jù)緩沖區(qū)中,更新按鍵數(shù)據(jù)長度; 83、所述動(dòng)態(tài)令牌判斷所述按鍵數(shù)據(jù)長度是否小于第一預(yù)設(shè)長度,如果是,則開啟按鍵中斷,并返回步驟32 ;否則,執(zhí)行步驟84 ; 84、所述動(dòng)態(tài)令牌判斷所述按鍵數(shù)據(jù)緩沖區(qū)中的數(shù)據(jù)是否與密碼數(shù)據(jù)緩沖區(qū)中的數(shù)據(jù)相同,如果是,則執(zhí)行步驟85 ;否則,執(zhí)行步驟86 ; 85、所述動(dòng)態(tài)令牌清空按鍵數(shù)據(jù)緩沖區(qū),將令牌驗(yàn)證錯(cuò)誤次數(shù)清零,將所述系統(tǒng)狀態(tài)設(shè)置為令牌界面狀態(tài),開啟按鍵中斷,并返回步驟32 ; 86、所述動(dòng)態(tài)令牌清空按鍵數(shù)據(jù)緩沖區(qū),對令牌驗(yàn)證錯(cuò)誤次數(shù)進(jìn)行更新; 87、所述動(dòng)態(tài)令牌判斷令牌驗(yàn)證錯(cuò)誤次數(shù)是否為第一預(yù)設(shè)次數(shù),如果是,則執(zhí)行步驟88 ;否則,執(zhí)行步驟89 ; 88、所述動(dòng)態(tài)令牌將所述系統(tǒng)狀態(tài)設(shè)置為顯示解鎖挑戰(zhàn)碼狀態(tài),開啟按鍵中斷,并返回步驟32 ; 89、所述動(dòng)態(tài)令牌將所述系統(tǒng)狀態(tài)設(shè)置為?爪錯(cuò)誤狀態(tài),開啟按鍵中斷,并返回步驟82 ; 810、所述動(dòng)態(tài)令牌判斷所述按鍵數(shù)據(jù)長度是否為零,如果是,則開啟按鍵中斷,并返回步驟32 ;否則,執(zhí)行步驟811 ; 811、所述動(dòng)態(tài)令牌將所述按鍵數(shù)據(jù)緩沖區(qū)中最后一次存入的數(shù)據(jù)刪除,更新所述按鍵數(shù)據(jù)長度,開啟按鍵中斷,并返回步驟32。
21.如權(quán)利要求20所述的方法,其特征在于,所述步驟八3,具體為: 所述動(dòng)態(tài)令牌將所述系統(tǒng)狀態(tài)設(shè)置為驗(yàn)證日志?爪狀態(tài); 所述動(dòng)態(tài)令牌判斷出所述系統(tǒng)狀態(tài)為驗(yàn)證日志?爪狀態(tài),且根據(jù)所述第一鍵值,對當(dāng)前被按下的按鍵進(jìn)行判斷之后,還包括: 01、所述動(dòng)態(tài)令牌根據(jù)所述第一鍵值,對當(dāng)前被按下的按鍵進(jìn)行判斷,如果是數(shù)字鍵,則執(zhí)行步驟02 ;如果是刪除鍵,則執(zhí)行步驟010 ; 02、所述動(dòng)態(tài)令牌將所述第一鍵值保存到按鍵數(shù)據(jù)緩沖區(qū)中,更新所述按鍵數(shù)據(jù)長度; 03、所述動(dòng)態(tài)令牌判斷所述按鍵數(shù)據(jù)長度是否小于第一預(yù)設(shè)長度,如果是,則開啟按鍵中斷,并返回步驟32 ;否則,執(zhí)行步驟04 ; 04、所述動(dòng)態(tài)令牌判斷所述按鍵數(shù)據(jù)緩沖區(qū)中的數(shù)據(jù)是否與密碼數(shù)據(jù)緩沖區(qū)中的數(shù)據(jù)相同,如果是,則執(zhí)行步驟⑶;否則,執(zhí)行步驟⑶; ⑶、所述動(dòng)態(tài)令牌清空按鍵數(shù)據(jù)緩沖區(qū),將日志驗(yàn)證錯(cuò)誤次數(shù)清零,將所述系統(tǒng)狀態(tài)設(shè)置為日志顯示狀態(tài),開啟按鍵中斷,并返回步驟32 ; ⑶、所述動(dòng)態(tài)令牌清空按鍵數(shù)據(jù)緩沖區(qū),對日志驗(yàn)證錯(cuò)誤次數(shù)進(jìn)行更新; 07、所述動(dòng)態(tài)令牌判斷日志驗(yàn)證錯(cuò)誤次數(shù)是否為第二預(yù)設(shè)次數(shù),如果是,則執(zhí)行步驟08 ;否則,執(zhí)行步驟⑶; ⑶、所述動(dòng)態(tài)令牌將所述系統(tǒng)狀態(tài)設(shè)置為顯示解鎖挑戰(zhàn)碼狀態(tài),開啟按鍵中斷,并返回步驟32 ; ⑶、所述動(dòng)態(tài)令牌將所述系統(tǒng)狀態(tài)設(shè)置為?爪錯(cuò)誤狀態(tài),開啟按鍵中斷,并返回步驟82 ; 010、所述動(dòng)態(tài)令牌判斷所述按鍵數(shù)據(jù)長度是否為零,如果是,則開啟按鍵中斷,并返回步驟32;否則,執(zhí)行步驟011 ; 011、所述動(dòng)態(tài)令牌將所述按鍵數(shù)據(jù)緩沖區(qū)中最后一次存入的數(shù)據(jù)刪除,更新所述按鍵數(shù)據(jù)長度,開啟按鍵中斷,并返回步驟32。
22.如權(quán)利要求21所述的方法,其特征在于,所述動(dòng)態(tài)令牌判斷出當(dāng)前被按下的按鍵是電源鍵,且所述系統(tǒng)狀態(tài)不是關(guān)機(jī)狀態(tài)之后,還包括: 所述動(dòng)態(tài)令牌將日志開機(jī)標(biāo)志復(fù)位; 所述步驟38之前,還包括: 所述動(dòng)態(tài)令牌將所述日志開機(jī)標(biāo)志置位; 所述動(dòng)態(tài)令牌判斷出當(dāng)前被按下的按鍵不是電源鍵,且所述系統(tǒng)狀態(tài)為?爪錯(cuò)誤狀態(tài)之后,還包括: 所述動(dòng)態(tài)令牌判斷所述日志開機(jī)標(biāo)志是否置位,如果是,則將所述系統(tǒng)狀態(tài)設(shè)置為驗(yàn)證日志?爪狀態(tài),開啟按鍵中斷,并返回步驟32 ;否則,將所述系統(tǒng)狀態(tài)設(shè)置為驗(yàn)證令牌?爪狀態(tài),開啟按鍵中斷,并返回步驟32。
23.如權(quán)利要求21所述的方法,其特征在于,所述步驟八2之前,還包括: 所述動(dòng)態(tài)令牌判斷令牌鎖定標(biāo)志是否置位,如果是,則將所述系統(tǒng)狀態(tài)設(shè)置為顯示解鎖挑戰(zhàn)碼狀態(tài),開啟按鍵中斷,并返回步驟32 ;否則,執(zhí)行步驟八2 ; 所述步驟纟3之前,還包括: 所述動(dòng)態(tài)令牌判斷日志鎖定標(biāo)志是否置位,如果是,則將所述系統(tǒng)狀態(tài)設(shè)置為顯示解鎖挑戰(zhàn)碼狀態(tài),開啟按鍵中斷,并返回步驟32 ;否則,執(zhí)行步驟八3 ; 所述動(dòng)態(tài)令牌判斷出所述令牌驗(yàn)證錯(cuò)誤次數(shù)為第一預(yù)設(shè)次數(shù)之后,還包括: 所述動(dòng)態(tài)令牌將所述令牌鎖定標(biāo)志置位; 所述動(dòng)態(tài)令牌判斷出所述日志驗(yàn)證錯(cuò)誤次數(shù)為第二預(yù)設(shè)次數(shù)之后,還包括: 所述動(dòng)態(tài)令牌將所述令牌鎖定標(biāo)志置位; 所述動(dòng)態(tài)令牌判斷出當(dāng)前被按下的按鍵不是電源鍵,且所述系統(tǒng)狀態(tài)為顯示解鎖挑戰(zhàn)碼狀態(tài)之后,還包括: 所述動(dòng)態(tài)令牌生成解鎖挑戰(zhàn)碼,將所述系統(tǒng)狀態(tài)設(shè)置為等待輸入解鎖碼狀態(tài),顯示所述解鎖挑戰(zhàn)碼,開啟按鍵中斷,并返回步驟32 ; 所述動(dòng)態(tài)令牌判斷出所述系統(tǒng)狀態(tài)為等待輸入解鎖碼狀態(tài),且根據(jù)所述第一鍵值,對當(dāng)前被按下的按鍵進(jìn)行判斷之后,還包括: 01、所述動(dòng)態(tài)令牌根據(jù)所述第一鍵值,對當(dāng)前被按下的按鍵進(jìn)行判斷,如果是數(shù)字鍵,則執(zhí)行步驟02 ;如果是刪除鍵,則執(zhí)行步驟06 ; 02、所述動(dòng)態(tài)令牌將所述第一鍵值保存到按鍵數(shù)據(jù)緩沖區(qū)中,更新按鍵數(shù)據(jù)長度,判斷所述按鍵數(shù)據(jù)長度是否小于第二預(yù)設(shè)長度,如果是,則開啟按鍵中斷,并返回步驟32 ;否貝0,執(zhí)行步驟03 ; 03、所述動(dòng)態(tài)令牌根據(jù)所述解鎖挑戰(zhàn)碼,對所述按鍵數(shù)據(jù)緩沖區(qū)中的數(shù)據(jù)進(jìn)行驗(yàn)證,如果驗(yàn)證通過,則執(zhí)行步驟04 ;否則,執(zhí)行步驟05 ; 04、所述動(dòng)態(tài)令牌清空所述按鍵數(shù)據(jù)緩沖區(qū),將令牌鎖定標(biāo)志和日志鎖定標(biāo)志復(fù)位,將所述系統(tǒng)狀態(tài)設(shè)置為第一設(shè)置狀態(tài),開啟按鍵中斷,并返回步驟52 ; 05、所述動(dòng)態(tài)令牌清空所述按鍵數(shù)據(jù)緩沖區(qū),將所述系統(tǒng)狀態(tài)設(shè)置為關(guān)機(jī)狀態(tài),開啟按鍵中斷,并返回步驟32; 06、所述動(dòng)態(tài)令牌判斷按鍵數(shù)據(jù)長度是否為零,如果是,則開啟按鍵中斷,并返回步驟82 ;否則,將所述按鍵數(shù)據(jù)緩沖區(qū)中最后一次存入的數(shù)據(jù)刪除,更新所述按鍵數(shù)據(jù)長度,開啟按鍵中斷,并返回步驟32。
24.如權(quán)利要求23所述的方法,其特征在于,所述步驟八2之前,還包括: 所述動(dòng)態(tài)令牌判斷密碼設(shè)置標(biāo)志是否置位,如果是,則執(zhí)行步驟八2 ;否則,將所述系統(tǒng)狀態(tài)設(shè)置為第一設(shè)置狀態(tài),開啟按鍵中斷,并返回步驟32 ; 所述動(dòng)態(tài)令牌判斷出所述系統(tǒng)狀態(tài)為第一設(shè)置狀態(tài),且根據(jù)所述第一鍵值,對當(dāng)前被按下的按鍵進(jìn)行判斷之后,還包括: £1、所述動(dòng)態(tài)令牌根據(jù)所述第一鍵值,對當(dāng)前被按下的按鍵進(jìn)行判斷,如果是數(shù)字鍵,則執(zhí)行步驟£2 ;如果是刪除鍵,則執(zhí)行步驟£4 ; £2、所述動(dòng)態(tài)令牌將所述第一鍵值保存到所述按鍵數(shù)據(jù)緩沖區(qū)中,更新所述按鍵數(shù)據(jù)長度,判斷按鍵數(shù)據(jù)長度是否小于第一預(yù)設(shè)長度,如果是,則開啟按鍵中斷,并返回步驟32 ;否則,執(zhí)行步驟23; £3、所述動(dòng)態(tài)令牌將所述按鍵數(shù)據(jù)緩沖區(qū)中的數(shù)據(jù)存儲(chǔ)到密碼數(shù)據(jù)緩沖區(qū)中,清空所述按鍵數(shù)據(jù)緩沖區(qū),將所述系統(tǒng)狀態(tài)設(shè)置為第二設(shè)置?爪狀態(tài),開啟按鍵中斷,并返回步驟82 ; £4、所述動(dòng)態(tài)令牌判斷所述按鍵數(shù)據(jù)長度是否為零,如果是,則開啟按鍵中斷,并返回步驟32 ;否則,將所述按鍵數(shù)據(jù)緩沖區(qū)中最后一次存入的數(shù)據(jù)刪除,更新所述按鍵數(shù)據(jù)長度,開啟按鍵中斷,并返回步驟32 ; 所述動(dòng)態(tài)令牌判斷出所述系統(tǒng)狀態(tài)為第二設(shè)置狀態(tài),且根據(jù)所述第一鍵值,對當(dāng)前被按下的按鍵進(jìn)行判斷之后,還包括: ?1、所述動(dòng)態(tài)令牌根據(jù)所述第一鍵值,對當(dāng)前被按下的按鍵進(jìn)行判斷,如果是數(shù)字鍵,則執(zhí)行步驟?2 ;如果是刪除鍵,則執(zhí)行步驟?8 ; ?2、所述動(dòng)態(tài)令牌將所述第一鍵值保存到所述按鍵數(shù)據(jù)緩沖區(qū)中,更新所述按鍵數(shù)據(jù)長度,判斷按鍵數(shù)據(jù)長度是否小于第一預(yù)設(shè)長度,如果是,則開啟按鍵中斷,并返回步驟32 ;否則,執(zhí)行步驟?3; ?3、所述動(dòng)態(tài)令牌判斷所述按鍵數(shù)據(jù)緩沖區(qū)中的數(shù)據(jù)是否與所述密碼數(shù)據(jù)緩沖區(qū)中的數(shù)據(jù)相同,如果是,則執(zhí)行步驟?5 ;否則,執(zhí)行步驟?4 ; ?4、所述動(dòng)態(tài)令牌清空按鍵數(shù)據(jù)緩沖區(qū)和密碼數(shù)據(jù)緩沖區(qū),將所述系統(tǒng)狀態(tài)設(shè)置為?爪設(shè)置錯(cuò)誤狀態(tài),開啟按鍵中斷,并返回步驟32 ; ?5、所述動(dòng)態(tài)令牌判斷日志開機(jī)標(biāo)志是否置位,如果是,則執(zhí)行步驟?6 ;否則,執(zhí)行步驟?7 ; ?6、所述動(dòng)態(tài)令牌將所述密碼設(shè)置標(biāo)志置位,清空所述按鍵數(shù)據(jù)緩沖區(qū),將所述系統(tǒng)狀態(tài)設(shè)置為日志顯示狀態(tài),開啟按鍵中斷,并返回步驟32 ; ?7、所述動(dòng)態(tài)令牌將所述密碼設(shè)置標(biāo)志置位,清空所述按鍵數(shù)據(jù)緩沖區(qū),將所述系統(tǒng)狀態(tài)設(shè)置為令牌界面狀態(tài),開啟按鍵中斷,并返回步驟32 ; ?8、所述動(dòng)態(tài)令牌判斷所述按鍵數(shù)據(jù)長度是否為零,如果是,則開啟按鍵中斷,并返回步驟32 ;否則,將所述按鍵數(shù)據(jù)緩沖區(qū)中最后一次存入的數(shù)據(jù)刪除,更新所述按鍵數(shù)據(jù)長度,開啟按鍵中斷,并返回步驟32 ; 所述動(dòng)態(tài)令牌判斷出當(dāng)前被按下的按鍵不是電源鍵,且所述系統(tǒng)狀態(tài)為設(shè)置錯(cuò)誤狀態(tài)之后,還包括: 所述動(dòng)態(tài)令牌將所述系統(tǒng)狀態(tài)設(shè)置為第一設(shè)置狀態(tài),開啟按鍵中斷,并返回步驟82 ; 所述步驟37之前,還包括: 所述動(dòng)態(tài)令牌判斷出所述系統(tǒng)狀態(tài)為令牌界面狀態(tài); 所述步驟38之前,還包括: 所述動(dòng)態(tài)令牌判斷出所述系統(tǒng)狀態(tài)為日志顯示狀態(tài)。
25.—種具有日志功能的動(dòng)態(tài)令牌,其特征在于,包括: 初始化模塊,用于在上電之后,執(zhí)行初始化操作,開啟總中斷和按鍵喚醒功能; 第一判斷模塊,用于判斷是否存在置位的中斷標(biāo)志; 第二判斷模塊,用于在所述第一判斷模塊判斷出存在置位的中斷標(biāo)志之后,對置位的中斷標(biāo)志進(jìn)行判斷; 復(fù)位模塊,用于在所述第二判斷模塊判斷出所述置位的中斷標(biāo)志是定時(shí)器中斷標(biāo)志時(shí),將定時(shí)器中斷標(biāo)志復(fù)位,并觸發(fā)所述第一判斷模塊判斷是否存在置位的中斷標(biāo)志;第一獲取模塊,用于在所述第二判斷模塊判斷出所述置位的中斷標(biāo)志是按鍵中斷標(biāo)志時(shí),關(guān)閉按鍵中斷,掃描鍵盤,獲取第一鍵值; 第三判斷模塊,用于根據(jù)所述第一獲取模塊獲取到的所述第一鍵值,對當(dāng)前被按下的按鍵進(jìn)行判斷; 第一處理模塊,用于在所述第三判斷模塊判斷出當(dāng)前被按下的按鍵是第一按鍵時(shí),生成動(dòng)態(tài)口令以及與所述動(dòng)態(tài)口令對應(yīng)的日志,將所述動(dòng)態(tài)口令存儲(chǔ)到顯示數(shù)據(jù)緩沖區(qū),將所述日志存儲(chǔ)到日志存儲(chǔ)區(qū),開啟按鍵中斷,并觸發(fā)所述第一判斷模塊判斷是否存在置位的中斷標(biāo)志; 第二處理模塊,用于在所述第三判斷模塊判斷出當(dāng)前被按下的按鍵是第二按鍵,或者是第三按鍵和第四按鍵的組合時(shí),從所述日志存儲(chǔ)區(qū)中讀取日志,將讀取到的日志存儲(chǔ)到所述顯示數(shù)據(jù)緩沖區(qū),開啟按鍵中斷,并觸發(fā)所述第一判斷模塊判斷是否存在置位的中斷
26.如權(quán)利要求25所述的動(dòng)態(tài)令牌,其特征在于, 所述第二處理模塊,具體用于在所述第三判斷模塊判斷出當(dāng)前被按下的按鍵是第二按鍵,或者是第三按鍵和第四按鍵的組合之后,執(zhí)行以下操作: 丁1、開啟按鍵中斷,判斷是否存在置位的中斷標(biāo)志,如果是,則執(zhí)行步驟12 ;否則,繼續(xù)執(zhí)行步驟丁1 ; 丁2、判斷出置位的中斷標(biāo)志是按鍵中斷標(biāo)志后,關(guān)閉按鍵中斷,掃描鍵盤; 丁3、根據(jù)掃描得到的鍵值判斷出當(dāng)前被按下的按鍵為第五按鍵后,從所述日志存儲(chǔ)區(qū)中讀取日志,將讀取到的日志存儲(chǔ)到所述顯示數(shù)據(jù)緩沖區(qū),開啟按鍵中斷,并觸發(fā)所述第一判斷模塊判斷是否存在置位的中斷標(biāo)志。
27.如權(quán)利要求25或26所述的動(dòng)態(tài)令牌,其特征在于,所述第一按鍵為確認(rèn)鍵; 所述動(dòng)態(tài)令牌,還包括: 第三處理模塊,用于在所述第三判斷模塊判斷出當(dāng)前被按下的按鍵是數(shù)字鍵時(shí),判斷按鍵數(shù)據(jù)長度是否小于第三預(yù)設(shè)長度,如果是,則將所述第一鍵值保存到按鍵數(shù)據(jù)緩沖區(qū)和顯示數(shù)據(jù)緩沖區(qū)中,更新所述按鍵數(shù)據(jù)長度,開啟按鍵中斷,并觸發(fā)所述第一判斷模塊判斷是否存在置位的中斷標(biāo)志;否則,開啟按鍵中斷,并觸發(fā)所述第一判斷模塊判斷是否存在置位的中斷標(biāo)志; 在所述第三判斷模塊判斷出當(dāng)前被按下的按鍵是刪除鍵時(shí),判斷按鍵數(shù)據(jù)長度是否為零,如果是,則開啟按鍵中斷,并觸發(fā)所述第一判斷模塊判斷是否存在置位的中斷標(biāo)志;否貝0,將所述按鍵數(shù)據(jù)緩沖區(qū)中最后一次存入的數(shù)據(jù)刪除,更新所述按鍵數(shù)據(jù)長度,將所述顯示數(shù)據(jù)緩沖區(qū)中最后一次存入的數(shù)據(jù)刪除,開啟按鍵中斷,并觸發(fā)所述第一判斷模塊判斷是否存在置位的中斷標(biāo)志; 所述第一處理模塊,包括: 第一判斷子模塊,用于在所述第三判斷模塊判斷出當(dāng)前被按下的按鍵是確認(rèn)鍵時(shí),判斷所述按鍵數(shù)據(jù)長度是否為零; 第一生成子模塊,用于在所述第一判斷子模塊判斷出所述按鍵數(shù)據(jù)長度為零時(shí),根據(jù)時(shí)間因子,生成動(dòng)態(tài)口令以及與所述動(dòng)態(tài)口令對應(yīng)的新增日志; 第二生成子模塊,用于在所述第一判斷子模塊判斷出所述按鍵數(shù)據(jù)長度不為零時(shí),將所述按鍵數(shù)據(jù)緩沖區(qū)中的數(shù)據(jù)作為挑戰(zhàn)碼,生成動(dòng)態(tài)口令以及與所述動(dòng)態(tài)口令對應(yīng)的新增曰志; 第一存儲(chǔ)子模塊,用于將所述第一生成子模塊和第二生成子模塊生成的動(dòng)態(tài)口令存儲(chǔ)到所述顯示數(shù)據(jù)緩沖區(qū)中; 第二存儲(chǔ)子模塊,用于將所述第一生成子模塊和第二生成子模塊生成的新增日志存儲(chǔ)到所述日志存儲(chǔ)區(qū); 開啟子模塊,用于在所述第一生成子模塊或第二生成子模塊生成動(dòng)態(tài)口令和新增日志后,開啟按鍵中斷,并觸發(fā)所述第一判斷模塊判斷是否存在置位的中斷標(biāo)志。
28.如權(quán)利要求27所述的動(dòng)態(tài)令牌,其特征在于, 所述第一生成子模塊,具體用于在所述第一判斷子模塊判斷出所述按鍵數(shù)據(jù)長度為零時(shí),根據(jù)所述時(shí)間因子生成時(shí)間型動(dòng)態(tài)口令,為新增日志分配索引,將與所述時(shí)間因子對應(yīng)的時(shí)間信息的長度作為新增日志的長度,對所述索引、所述新增日志的長度以及與所述時(shí)間因子對應(yīng)的時(shí)間信息進(jìn)行組合,得到所述新增日志。
29.如權(quán)利要求27所述的動(dòng)態(tài)令牌,其特征在于, 所述第二生成子模塊,具體用于在所述第一判斷子模塊判斷出所述按鍵數(shù)據(jù)長度不為零時(shí),根據(jù)所述時(shí)間因子和所述挑戰(zhàn)碼,生成挑戰(zhàn)型動(dòng)態(tài)口令,為新增日志分配索引,對與所述挑戰(zhàn)碼對應(yīng)的交易信息進(jìn)行壓縮,得到壓縮交易數(shù)據(jù),獲取與所述時(shí)間因子對應(yīng)的時(shí)間信息的長度和所述壓縮交易數(shù)據(jù)的長度之和作為所述新增日志的長度,對所述索引、所述新增日志的長度、與所述時(shí)間因子對應(yīng)的時(shí)間信息,以及所述壓縮交易數(shù)據(jù)進(jìn)行組合,得到所述新增日志。
30.如權(quán)利要求27所述的動(dòng)態(tài)令牌,其特征在于, 所述第二存儲(chǔ)子模塊,具體用于判斷日志條數(shù)是否為零,如果是,則將所述新增日志存儲(chǔ)到所述日志存儲(chǔ)區(qū)中,將最前日志索引和最后日志索引均設(shè)置為所述新增日志中的索弓丨,更新日志條數(shù);否則,將所述新增日志存儲(chǔ)到所述日志存儲(chǔ)區(qū)中,將最后日志索引設(shè)置為所述新增日志中的索引,更新日志條數(shù)。
31.如權(quán)利要求30所述的動(dòng)態(tài)令牌,其特征在于, 所述第二處理模塊,具體用于將當(dāng)前日志索引設(shè)置為所述最后日志索引,根據(jù)當(dāng)前日志索引從所述日志存儲(chǔ)區(qū)中讀取對應(yīng)的日志,將讀取到的日志存儲(chǔ)到日志緩沖區(qū)中,將讀取到的日志中的時(shí)間信息存儲(chǔ)到所述顯示數(shù)據(jù)緩沖區(qū)中,開啟按鍵中斷,并觸發(fā)所述第一判斷模塊判斷是否存在置位的中斷標(biāo)志。
32.如權(quán)利要求31所述的動(dòng)態(tài)令牌,其特征在于,還包括: 第四處理模塊,用于在所述第二處理模塊觸發(fā)所述第一判斷模塊判斷出存在置位的中斷標(biāo)志,且所述第三判斷模塊判斷出當(dāng)前被按下的按鍵是左鍵時(shí),判斷當(dāng)前日志索引是否等于所述最前日志索引,如果是,則開啟按鍵中斷,并觸發(fā)所述第一判斷模塊判斷是否存在置位的中斷標(biāo)志;否則,更新當(dāng)前日志索引,根據(jù)當(dāng)前日志索引從所述日志存儲(chǔ)區(qū)中讀取對應(yīng)的日志,將讀取到的日志中的時(shí)間信息存儲(chǔ)到所述顯示數(shù)據(jù)緩沖區(qū)中,開啟按鍵中斷,并觸發(fā)所述第一判斷模塊判斷是否存在置位的中斷標(biāo)志; 第五處理模塊,用于在所述第二處理模塊觸發(fā)所述第一判斷模塊判斷出存在置位的中斷標(biāo)志,且所述第三判斷模塊判斷出當(dāng)前被按下的按鍵是右鍵時(shí),判斷當(dāng)前日志索引是否等于所述最后日志索引,如果是,則開啟按鍵中斷,并觸發(fā)所述第一判斷模塊判斷是否存在置位的中斷標(biāo)志;否則,更新當(dāng)前日志索引,根據(jù)當(dāng)前日志索引從所述日志存儲(chǔ)區(qū)中讀取對應(yīng)的日志,將讀取到的日志中的時(shí)間信息存儲(chǔ)到所述顯示數(shù)據(jù)緩沖區(qū)中,開啟按鍵中斷,并觸發(fā)所述第一判斷模塊判斷是否存在置位的中斷標(biāo)志。
33.如權(quán)利要求32所述的動(dòng)態(tài)令牌,其特征在于,還包括: 第四判斷模塊,用于判斷時(shí)間信息顯示標(biāo)志是否置位; 所述第四處理模塊,具體用于在所述第四判斷模塊判斷出時(shí)間信息顯示標(biāo)志置位、所述第二處理模塊觸發(fā)所述第一判斷模塊判斷出存在置位的中斷標(biāo)志,且所述第三判斷模塊判斷出當(dāng)前被按下的按鍵是左鍵時(shí),判斷當(dāng)前日志索引是否等于所述最前日志索引,如果是,則開啟按鍵中斷,并觸發(fā)所述第一判斷模塊判斷是否存在置位的中斷標(biāo)志;否則,更新當(dāng)前日志索引,根據(jù)當(dāng)前日志索引從所述日志存儲(chǔ)區(qū)中讀取對應(yīng)的日志,將讀取到的日志中的時(shí)間信息存儲(chǔ)到所述顯示數(shù)據(jù)緩沖區(qū)中,開啟按鍵中斷,并觸發(fā)所述第一判斷模塊判斷是否存在置位的中斷標(biāo)志; 所述第五處理模塊,具體用于在所述第四判斷模塊判斷出時(shí)間信息顯示標(biāo)志置位、所述第二處理模塊觸發(fā)所述第一判斷模塊判斷出存在置位的中斷標(biāo)志,且所述第三判斷模塊判斷出當(dāng)前被按下的按鍵是右鍵時(shí),判斷當(dāng)前日志索引是否等于所述最后日志索引,如果是,則開啟按鍵中斷,并觸發(fā)所述第一判斷模塊判斷是否存在置位的中斷標(biāo)志;否則,更新當(dāng)前日志索引,根據(jù)當(dāng)前日志索引從所述日志存儲(chǔ)區(qū)中讀取對應(yīng)的日志,將讀取到的日志中的時(shí)間信息存儲(chǔ)到所述顯示數(shù)據(jù)緩沖區(qū)中,開啟按鍵中斷,并觸發(fā)所述第一判斷模塊判斷是否存在置位的中斷標(biāo)志; 所述動(dòng)態(tài)令牌,還包括: 第六處理模塊,具體用于在在所述第四判斷模塊判斷出時(shí)間信息顯示標(biāo)志置位、所述第二處理模塊觸發(fā)所述第一判斷模塊判斷出存在置位的中斷標(biāo)志,且所述第三判斷模塊判斷出當(dāng)前被按下的按鍵是確認(rèn)鍵時(shí),執(zhí)行以下操作: 尺1、判斷所述日志緩沖區(qū)中的日志的長度是否為第五預(yù)設(shè)長度,如果是,則執(zhí)行步驟尺2 ;否則,執(zhí)行步驟尺3 ; 尺2、顯示空白交易信息,將所述時(shí)間信息顯示標(biāo)志復(fù)位,開啟按鍵中斷,并觸發(fā)所述第一判斷模塊判斷是否存在置位的中斷標(biāo)志; 尺3、將所述時(shí)間信息顯示標(biāo)志復(fù)位,從所述日志緩沖區(qū)中的日志中獲取壓縮交易數(shù)據(jù),對所述壓縮交易數(shù)據(jù)進(jìn)行解壓,判斷解壓得到的當(dāng)前交易信息的長度是否大于第四預(yù)設(shè)長度,如果是,則執(zhí)行步驟財(cái);否則,執(zhí)行步驟尺5 ; 財(cái)、從所述當(dāng)前交易信息中選取存儲(chǔ)位置最靠前的、第四預(yù)設(shè)長度的數(shù)據(jù)作為當(dāng)前顯示信息,將所述當(dāng)前顯示信息存儲(chǔ)到所述顯示數(shù)據(jù)緩沖區(qū)中,點(diǎn)亮顯示屏上的右箭頭,開啟按鍵中斷,并觸發(fā)所述第一判斷模塊判斷是否存在置位的中斷標(biāo)志; 尺5、將所述當(dāng)前交易信息存儲(chǔ)到所述顯示數(shù)據(jù)緩沖區(qū)中,開啟按鍵中斷,并觸發(fā)所述第一判斷模塊判斷是否存在置位的中斷標(biāo)志。
34.如權(quán)利要求30所述的動(dòng)態(tài)令牌,其特征在于, 所述第二處理模塊,具體用于在所述第三判斷模塊判斷出當(dāng)前被按下的按鍵是第二按鍵,或者是第三按鍵和第四按鍵的組合時(shí),將當(dāng)前日志索引設(shè)置為所述最后日志索引,根據(jù)當(dāng)前日志索引從所述日志存儲(chǔ)區(qū)中讀取對應(yīng)的日志,對讀取到的日志中的壓縮交易數(shù)據(jù)進(jìn)行解壓,將解壓得到的當(dāng)前交易信息存儲(chǔ)到日志緩沖區(qū)中,判斷當(dāng)前交易信息是否大于第四預(yù)設(shè)長度,如果是,則從所述當(dāng)前交易信息中選取存儲(chǔ)位置最靠前的、第四預(yù)設(shè)長度的數(shù)據(jù)作為當(dāng)前顯示信息,將所述當(dāng)前顯示信息存儲(chǔ)到所述顯示數(shù)據(jù)緩沖區(qū)中,點(diǎn)亮顯示屏上的右箭頭,開啟按鍵中斷,并觸發(fā)所述第一判斷模塊判斷是否存在置位的中斷標(biāo)志;否則,將所述當(dāng)前交易信息存儲(chǔ)到所述顯示數(shù)據(jù)緩沖區(qū)中,開啟按鍵中斷,并觸發(fā)所述第一判斷模塊判斷是否存在置位的中斷標(biāo)志。
35.如權(quán)利要求34所述的動(dòng)態(tài)令牌,其特征在于,還包括: 第七處理模塊,用于在所述第二處理模塊觸發(fā)所述第一判斷模塊判斷出存在置位的中斷標(biāo)志,且所述第三判斷模塊判斷出當(dāng)前被按下的按鍵是左鍵時(shí),判斷顯示屏上的左箭頭是否被點(diǎn)亮,如果沒有被點(diǎn)亮,則開啟按鍵中斷,并觸發(fā)所述第一判斷模塊判斷是否存在置位的中斷標(biāo)志;如果被點(diǎn)亮,則從所述當(dāng)前交易信息中讀取與所述當(dāng)前顯示信息相鄰,且存儲(chǔ)位置更靠前的數(shù)據(jù)作為未顯示數(shù)據(jù),判斷所述未顯示數(shù)據(jù)的長度是否大于第四預(yù)設(shè)長度,如果是,則從所述未顯示數(shù)據(jù)中選取存儲(chǔ)位置最靠后的、第四預(yù)設(shè)長度的數(shù)據(jù)作為當(dāng)前顯示信息,將所述當(dāng)前顯示信息存儲(chǔ)到所述顯示數(shù)據(jù)緩沖區(qū)中,點(diǎn)亮顯示屏上的右箭頭,開啟按鍵中斷,并觸發(fā)所述第一判斷模塊判斷是否存在置位的中斷標(biāo)志;否則,將所述未顯示數(shù)據(jù)存儲(chǔ)到所述顯示數(shù)據(jù)緩沖區(qū)中,點(diǎn)亮顯示屏上的右箭頭,熄滅顯示屏上的左箭頭,開啟按鍵中斷,并觸發(fā)所述第一判斷模塊判斷是否存在置位的中斷標(biāo)志; 第八處理模塊,用于在所述第二處理模塊觸發(fā)所述第一判斷模塊判斷出存在置位的中斷標(biāo)志,且所述第三判斷模塊判斷出當(dāng)前被按下的按鍵是右鍵時(shí),判斷顯示屏上的右箭頭是否被點(diǎn)亮,如果沒有被點(diǎn)亮,則開啟按鍵中斷,并觸發(fā)所述第一判斷模塊判斷是否存在置位的中斷標(biāo)志;如果被點(diǎn)亮,則從所述當(dāng)前交易信息中讀取與所述當(dāng)前顯示信息相鄰,且存儲(chǔ)位置更靠后的數(shù)據(jù)作為未顯示數(shù)據(jù),判斷所述未顯示數(shù)據(jù)的長度是否大于第四預(yù)設(shè)長度,如果是,則從所述未顯示數(shù)據(jù)中選取存儲(chǔ)位置最靠前的、第四預(yù)設(shè)長度的數(shù)據(jù)作為當(dāng)前顯示信息,將所述當(dāng)前顯示信息存儲(chǔ)到所述顯示數(shù)據(jù)緩沖區(qū)中,點(diǎn)亮顯示屏上的左箭頭,開啟按鍵中斷,并觸發(fā)所述第一判斷模塊判斷是否存在置位的中斷標(biāo)志;否則,將所述未顯示數(shù)據(jù)存儲(chǔ)到所述顯示數(shù)據(jù)緩沖區(qū)中,點(diǎn)亮顯示屏上的左箭頭,熄滅顯示屏上的右箭頭,開啟按鍵中斷,并觸發(fā)所述第一判斷模塊判斷是否存在置位的中斷標(biāo)志。
36.如權(quán)利要求35所述的動(dòng)態(tài)令牌,其特征在于,還包括: 第五判斷模塊,用于判斷時(shí)間信息顯示標(biāo)志是否置位; 第七處理模塊,具體用于在所述第五判斷模塊判斷出時(shí)間信息顯示標(biāo)志復(fù)位、所述第二處理模塊觸發(fā)所述第一判斷模塊判斷出存在置位的中斷標(biāo)志,且所述第三判斷模塊判斷出當(dāng)前被按下的按鍵是左鍵時(shí),判斷顯示屏上的左箭頭是否被點(diǎn)亮,如果沒有被點(diǎn)亮,則開啟按鍵中斷,并觸發(fā)所述第一判斷模塊判斷是否存在置位的中斷標(biāo)志;如果被點(diǎn)亮,則從所述當(dāng)前交易信息中讀取與所述當(dāng)前顯示信息相鄰,且存儲(chǔ)位置更靠前的數(shù)據(jù)作為未顯示數(shù)據(jù),判斷所述未顯示數(shù)據(jù)的長度是否大于第四預(yù)設(shè)長度,如果是,則從所述未顯示數(shù)據(jù)中選取存儲(chǔ)位置最靠后的、第四預(yù)設(shè)長度的數(shù)據(jù)作為當(dāng)前顯示信息,將所述當(dāng)前顯示信息存儲(chǔ)到所述顯示數(shù)據(jù)緩沖區(qū)中,點(diǎn)亮顯示屏上的右箭頭,開啟按鍵中斷,并觸發(fā)所述第一判斷模塊判斷是否存在置位的中斷標(biāo)志;否則,將所述未顯示數(shù)據(jù)存儲(chǔ)到所述顯示數(shù)據(jù)緩沖區(qū)中,點(diǎn)亮顯示屏上的右箭頭,熄滅顯示屏上的左箭頭,開啟按鍵中斷,并觸發(fā)所述第一判斷模塊判斷是否存在置位的中斷標(biāo)志; 所述第八處理模塊,具體用于在所述第五判斷模塊判斷出時(shí)間信息顯示標(biāo)志復(fù)位、所述第二處理模塊觸發(fā)所述第一判斷模塊判斷出存在置位的中斷標(biāo)志,且所述第三判斷模塊判斷出當(dāng)前被按下的按鍵是右鍵時(shí),判斷顯示屏上的右箭頭是否被點(diǎn)亮,如果沒有被點(diǎn)亮,則開啟按鍵中斷,并觸發(fā)所述第一判斷模塊判斷是否存在置位的中斷標(biāo)志;如果被點(diǎn)亮,貝0從所述當(dāng)前交易信息中讀取與所述當(dāng)前顯示信息相鄰,且存儲(chǔ)位置更靠后的數(shù)據(jù)作為未顯示數(shù)據(jù),判斷所述未顯示數(shù)據(jù)的長度是否大于第四預(yù)設(shè)長度,如果是,則從所述未顯示數(shù)據(jù)中選取存儲(chǔ)位置最靠前的、第四預(yù)設(shè)長度的數(shù)據(jù)作為當(dāng)前顯示信息,將所述當(dāng)前顯示信息存儲(chǔ)到所述顯示數(shù)據(jù)緩沖區(qū)中,點(diǎn)亮顯示屏上的左箭頭,開啟按鍵中斷,并觸發(fā)所述第一判斷模塊判斷是否存在置位的中斷標(biāo)志;否則,將所述未顯示數(shù)據(jù)存儲(chǔ)到所述顯示數(shù)據(jù)緩沖區(qū)中,點(diǎn)亮顯示屏上的左箭頭,熄滅顯示屏上的右箭頭,開啟按鍵中斷,并觸發(fā)所述第一判斷模塊判斷是否存在置位的中斷標(biāo)志; 所述動(dòng)態(tài)令牌,還包括: 第九處理模塊,具體用于在在所述第四判斷模塊判斷出時(shí)間信息顯示標(biāo)志復(fù)位、所述第二處理模塊觸發(fā)所述第一判斷模塊判斷出存在置位的中斷標(biāo)志,且所述第三判斷模塊判斷出當(dāng)前被按下的按鍵是確認(rèn)鍵時(shí),將所述時(shí)間信息顯示標(biāo)志置位,從所述日志緩沖區(qū)中的日志中讀取時(shí)間信息,將讀取到的時(shí)間信息存儲(chǔ)到所述顯示數(shù)據(jù)緩沖區(qū)中,開啟按鍵中斷,并觸發(fā)所述第一判斷模塊判斷是否存在置位的中斷標(biāo)志。
37.如權(quán)利要求31至36中任一項(xiàng)所述的動(dòng)態(tài)令牌,其特征在于, 所述第二存儲(chǔ)子模塊,具體用于執(zhí)行以下操作: ?1、判斷日志條數(shù)是否為零,如果是,則將所述新增日志存儲(chǔ)到所述日志存儲(chǔ)區(qū)中,將最前日志索引和最后日志索引均設(shè)置為所述新增日志中的索引,更新日志條數(shù);否則,執(zhí)行步驟?2 ; ?2、判斷所述新增日志占用的空間是否大于所述日志存儲(chǔ)區(qū)中的剩余空間,如果是,貝1]執(zhí)行步驟?3 ;否則,將所述新增日志存儲(chǔ)到日志存儲(chǔ)區(qū)中,更新日志條數(shù)和最后日志索引; ?3、將所述日志存儲(chǔ)區(qū)中最早一次存入的日志刪除,將所述日志存儲(chǔ)區(qū)中剩余的日志前移,更新日志條數(shù)和最前日志索引,并返回步驟?2。
38.如權(quán)利要求37所述的動(dòng)態(tài)令牌,其特征在于,所述第二處理模塊,具體用于執(zhí)行以下操作: 只1、將當(dāng)前日志索引設(shè)置為所述最后日志索引,將讀取指針設(shè)置為所述日志存儲(chǔ)區(qū)的首地址; 取、根據(jù)所述讀取指針,從所述日志存儲(chǔ)區(qū)中讀取對應(yīng)的日志,判斷讀取到的日志中的索引是否與所述當(dāng)前日志索引相同,如果是,則將讀取到的日志存儲(chǔ)到所述顯示數(shù)據(jù)緩沖區(qū),開啟按鍵中斷,并觸發(fā)所述第一判斷模塊判斷是否存在置位的中斷標(biāo)志;否則,執(zhí)行步驟!13 ; 陽、根據(jù)讀取到的日志占用的空間大小更新所述讀取指針,并返回步驟92。
39.如權(quán)利要求31至36中任一項(xiàng)所述的動(dòng)態(tài)令牌,其特征在于, 所述第二存儲(chǔ)子模塊,具體用于執(zhí)行以下操作: 以、判斷所述新增日志占用的空間是否大于所述日志存儲(chǔ)區(qū)中的剩余空間,如果是,貝0執(zhí)行步驟似;否則,執(zhí)行步驟64 ; 似、根據(jù)最前記錄指針,從所述日志存儲(chǔ)區(qū)中讀取對應(yīng)的日志,根據(jù)讀取到的日志占用的空間,更新所述最前記錄指針和所述日志存儲(chǔ)區(qū)中的剩余空間; 63、根據(jù)所述最前記錄指針,從所述日志存儲(chǔ)區(qū)中讀取對應(yīng)的日志,將讀取到的日志的索引作為最前日志索引,更新日志條數(shù),并返回步驟以; 64、判斷日志條數(shù)是否為零,如果是,則執(zhí)行步驟⑶;否則,執(zhí)行步驟⑶; ⑶、根據(jù)最后記錄指針,從所述日志存儲(chǔ)區(qū)中讀取對應(yīng)的日志,根據(jù)讀取到的日志占用的空間,更新所述最后記錄指針,并執(zhí)行步驟⑶; 66、將臨時(shí)計(jì)數(shù)器的計(jì)數(shù)值設(shè)置為零,將臨時(shí)指針的取值設(shè)置為最后記錄指針的取值,將當(dāng)前日志字節(jié)設(shè)置為所述新增日志的首字節(jié); 以、判斷所述臨時(shí)指針的取值是否小于所述日志存儲(chǔ)區(qū)的空間大小,如果是,則執(zhí)行步驟⑶;否則,將所述臨時(shí)指針的取值置為零,并執(zhí)行步驟⑶; 68、將當(dāng)前日志字節(jié)存儲(chǔ)到所述臨時(shí)指針對應(yīng)的位置,更新所述臨時(shí)指針和所述臨時(shí)計(jì)數(shù)器的計(jì)數(shù)值,將當(dāng)前日志字節(jié)的下一字節(jié)作為更新后的當(dāng)前日志字節(jié); 69、判斷所述臨時(shí)計(jì)數(shù)器的計(jì)數(shù)值是否小于所述新增日志占用的空間大小,如果是,貝0返回步驟以;否則,執(zhí)行步驟以0 ; 610、將最后日志索引設(shè)置為所述新增日志的索引,更新日志條數(shù),并根據(jù)所述新增日志占用的空間大小,更新所述日志存儲(chǔ)區(qū)中的剩余空間。
40.如權(quán)利要求39所述的動(dòng)態(tài)令牌,其特征在于,所述第二處理模塊根據(jù)當(dāng)前日志索引從所述日志存儲(chǔ)區(qū)中讀取對應(yīng)的日志,具體為: X1、將當(dāng)前日志索引設(shè)置為所述最后日志索引,將臨時(shí)指針的取值設(shè)置為最前記錄指針的取值; 1(2、根據(jù)所述臨時(shí)指針,從所述日志存儲(chǔ)區(qū)中讀取對應(yīng)的索引,獲取與所述索引對應(yīng)的日志所占用的空間大小,判斷所述索引是否與所述當(dāng)前日志索引相同,如果是,則執(zhí)行步驟1(4 ;否則,執(zhí)行步驟1(3 ; 1(3、根據(jù)所述日志所占用的空間大小更新所述臨時(shí)指針,判斷所述臨時(shí)指針的取值是否小于所述日志存儲(chǔ)區(qū)的空間大小,如果是,則返回步驟1(2 ;否則,根據(jù)所述日志存儲(chǔ)區(qū)的空間大小更新所述臨時(shí)指針,并返回步驟1(2 ; 1(4、將臨時(shí)計(jì)數(shù)器的計(jì)數(shù)值設(shè)置為所述日志所占用的空間大?。? 1(5、根據(jù)所述臨時(shí)指針,從所述日志存儲(chǔ)區(qū)中讀取一個(gè)字節(jié)的數(shù)據(jù),并更新所述臨時(shí)指針和所述臨時(shí)計(jì)數(shù)器的計(jì)數(shù)值; 1(6、判斷所述臨時(shí)指針的取值是否小于所述日志存儲(chǔ)區(qū)的空間大小,如果是,則執(zhí)行步驟1(7 ;否則,根據(jù)所述日志存儲(chǔ)區(qū)的空間大小更新所述臨時(shí)指針,并執(zhí)行步驟1(7 ; 1(7、判斷所述臨時(shí)計(jì)數(shù)器的計(jì)數(shù)值是否大于零,如果是,則返回步驟1(5 ;否則,將讀取到的數(shù)據(jù)存儲(chǔ)到日志緩沖區(qū)中,將讀取到的日志中的時(shí)間信息存儲(chǔ)到所述顯示數(shù)據(jù)緩沖區(qū)中,開啟按鍵中斷,并觸發(fā)所述第一判斷模塊判斷是否存在置位的中斷標(biāo)志。
41.如權(quán)利要求25所述的動(dòng)態(tài)令牌,其特征在于,還包括: 第二獲取模塊,用于在所述第一獲取模塊獲取到所述第一鍵值之后,獲取按鍵時(shí)長;第六判斷模塊,用于在所述第三判斷模塊判斷出當(dāng)前被按下的按鍵是第二按鍵,或者是第三按鍵和第四按鍵的組合之后,判斷所述第二獲取模塊獲取到的所述按鍵時(shí)長是否小于第一預(yù)設(shè)時(shí)長; 第十處理模塊,用于在所述第六判斷模塊判斷出所述按鍵時(shí)長小于第一預(yù)設(shè)時(shí)長時(shí),根據(jù)當(dāng)前被按下的按鍵執(zhí)行相應(yīng)的操作,開啟按鍵中斷,并觸發(fā)所述第一判斷模塊判斷是否存在置位的中斷標(biāo)志; 所述第二處理模塊,具體用于在所述第六判斷模塊判斷出所述按鍵時(shí)長不小于第一預(yù)設(shè)時(shí)長時(shí),從所述日志存儲(chǔ)區(qū)中讀取日志,將讀取到的日志存儲(chǔ)到所述顯示數(shù)據(jù)緩沖區(qū),開啟按鍵中斷,并觸發(fā)所述第一判斷模塊判斷是否存在置位的中斷標(biāo)志。
42.如權(quán)利要求41所述的動(dòng)態(tài)令牌,其特征在于,所述第一預(yù)設(shè)時(shí)長為第一預(yù)設(shè)值和第二預(yù)設(shè)值之間的差值與第三預(yù)設(shè)時(shí)長的乘積; 所述復(fù)位模塊,還用于在所述第二判斷模塊判斷出所述置位的中斷標(biāo)志為按鍵中斷標(biāo)志時(shí),將長按鍵標(biāo)志復(fù)位; 所述第二獲取模塊,具體用于在所述第一獲取模塊獲取到所述第一鍵值之后,執(zhí)行以下操作: 39、延時(shí)第二預(yù)設(shè)時(shí)長,保存所述第一鍵值,掃描鍵盤,獲取第二鍵值; 310、判斷所述第二鍵值是否與所述第一鍵值相同,如果是,則執(zhí)行步驟311;否則,開啟按鍵中斷,并觸發(fā)所述第一判斷模塊判斷是否存在置位的中斷標(biāo)志; 311、將定時(shí)器的溢出時(shí)間設(shè)置為第三預(yù)設(shè)時(shí)長,將溢出次數(shù)設(shè)置為第一預(yù)設(shè)值; 312、開啟總中斷和所述定時(shí)器的計(jì)時(shí)功能,將時(shí)鐘源切換至低速時(shí)鐘,進(jìn)入休眠模式; 313、被喚醒后,關(guān)閉所述定時(shí)器的計(jì)時(shí)功能,將時(shí)鐘源切換至高速時(shí)鐘; 314、判斷所述定時(shí)器中斷標(biāo)志是否被置位,如果是,則執(zhí)行步驟315;否則,返回步驟
812 ; 315、判斷關(guān)閉總中斷,將所述定時(shí)器中斷標(biāo)志復(fù)位; 316、掃描鍵盤,獲取第三鍵值,判斷所述第三鍵值是否與所述第一鍵值相同,如果是,則執(zhí)行步驟317;否則,開啟按鍵中斷和總中斷,并觸發(fā)所述第一判斷模塊判斷是否存在置位的中斷標(biāo)志; 317、對所述溢出次數(shù)進(jìn)行更新,判斷所述溢出次數(shù)是否為第二預(yù)設(shè)值,如果是,則將所述長按鍵標(biāo)志置位;否則,返回步驟312 ; 所述第六判斷模塊,具體用于在所述第三判斷模塊判斷出當(dāng)前被按下的按鍵是第二按鍵,或者是第三按鍵和第四按鍵的組合后,判斷所述長按鍵標(biāo)志是否置位,如果是,則確定所述按鍵時(shí)長不小于第一預(yù)設(shè)時(shí)長;否則,確定所述按鍵時(shí)長小于第一預(yù)設(shè)時(shí)長。
43.如權(quán)利要求25所述的動(dòng)態(tài)令牌,其特征在于,還包括: 第七判斷模塊,用于對系統(tǒng)狀態(tài)進(jìn)行判斷; 第十一處理模塊,用于在所述第三判斷模塊判斷出當(dāng)前被按下的按鍵是電源鍵,且所述第七判斷模塊判斷出所述系統(tǒng)狀態(tài)不是關(guān)機(jī)狀態(tài)時(shí),將所述系統(tǒng)狀態(tài)設(shè)置為關(guān)機(jī)狀態(tài),開啟按鍵中斷,并觸發(fā)所述第一判斷模塊判斷是否存在置位的中斷標(biāo)志; 在所述第三判斷模塊判斷出當(dāng)前被按下的按鍵是電源鍵,且所述第七判斷模塊判斷出所述系統(tǒng)狀態(tài)是關(guān)機(jī)狀態(tài)時(shí),更新所述系統(tǒng)狀態(tài); 所述第二處理模塊,包括: 更新子模塊,用于在所述第七判斷模塊判斷出所述系統(tǒng)狀態(tài)為關(guān)機(jī)狀態(tài),且所述第三判斷模塊判斷出當(dāng)前被按下的按鍵是第二按鍵,或者是第三按鍵和第四按鍵的組合時(shí),更新所述系統(tǒng)狀態(tài); 處理子模塊,用于在所述第七判斷模塊判斷出所述系統(tǒng)狀態(tài)為關(guān)機(jī)狀態(tài),且所述第三判斷模塊判斷出當(dāng)前被按下的按鍵是第二按鍵,或者是第三按鍵和第四按鍵的組合時(shí),從所述日志存儲(chǔ)區(qū)中讀取日志,將讀取到的日志存儲(chǔ)到所述顯示數(shù)據(jù)緩沖區(qū),開啟按鍵中斷,并觸發(fā)所述第一判斷模塊判斷是否存在置位的中斷標(biāo)志。
44.如權(quán)利要求43所述的動(dòng)態(tài)令牌,其特征在于,所述第十一處理模塊更新所述系統(tǒng)狀態(tài),具體為: 所述第十一處理模塊將所述系統(tǒng)狀態(tài)設(shè)置為驗(yàn)證令牌狀態(tài); 所述動(dòng)態(tài)令牌,還包括: 第十二處理模塊,用于在所述第七判斷模塊判斷出所述系統(tǒng)狀態(tài)為驗(yàn)證令牌?爪狀態(tài),且所述第三判斷模塊判斷出當(dāng)前被按下的按鍵是數(shù)字鍵時(shí),執(zhí)行以下操作: 82、將所述第一鍵值保存到按鍵數(shù)據(jù)緩沖區(qū)中,更新按鍵數(shù)據(jù)長度; 83、判斷所述按鍵數(shù)據(jù)長度是否小于第一預(yù)設(shè)長度,如果是,則開啟按鍵中斷,并觸發(fā)所述第一判斷模塊判斷是否存在置位的中斷標(biāo)志;否則,執(zhí)行步驟84 ; 84、判斷所述按鍵數(shù)據(jù)緩沖區(qū)中的數(shù)據(jù)是否與密碼數(shù)據(jù)緩沖區(qū)中的數(shù)據(jù)相同,如果是,則執(zhí)行步驟85 ;否則,執(zhí)行步驟86 ; 85、清空按鍵數(shù)據(jù)緩沖區(qū),將令牌驗(yàn)證錯(cuò)誤次數(shù)清零,將所述系統(tǒng)狀態(tài)設(shè)置為令牌界面狀態(tài),開啟按鍵中斷,并觸發(fā)所述第一判斷模塊判斷是否存在置位的中斷標(biāo)志; 86、清空按鍵數(shù)據(jù)緩沖區(qū),對令牌驗(yàn)證錯(cuò)誤次數(shù)進(jìn)行更新; 87、判斷令牌驗(yàn)證錯(cuò)誤次數(shù)是否為第一預(yù)設(shè)次數(shù),如果是,則執(zhí)行步驟88;否則,執(zhí)行步驟89 ; 88、將所述系統(tǒng)狀態(tài)設(shè)置為顯示解鎖挑戰(zhàn)碼狀態(tài),開啟按鍵中斷,并觸發(fā)所述第一判斷模塊判斷是否存在置位的中斷標(biāo)志; 89、將所述系統(tǒng)狀態(tài)設(shè)置為?爪錯(cuò)誤狀態(tài),開啟按鍵中斷,并觸發(fā)所述第一判斷模塊判斷是否存在置位的中斷標(biāo)志; 第十三處理模塊,用于在所述第七判斷模塊判斷出所述系統(tǒng)狀態(tài)為驗(yàn)證令牌?爪狀態(tài),且所述第三判斷模塊判斷出當(dāng)前被按下的按鍵是刪除鍵時(shí),判斷所述按鍵數(shù)據(jù)長度是否為零,如果是,則開啟按鍵中斷,并觸發(fā)所述第一判斷模塊判斷是否存在置位的中斷標(biāo)志; 否則,將所述按鍵數(shù)據(jù)緩沖區(qū)中最后一次存入的數(shù)據(jù)刪除,更新所述按鍵數(shù)據(jù)長度,開啟按鍵中斷,并觸發(fā)所述第一判斷模塊判斷是否存在置位的中斷標(biāo)志。
45.如權(quán)利要求44所述的動(dòng)態(tài)令牌,其特征在于, 所述更新子模塊,具體用于在所述第七判斷模塊判斷出所述系統(tǒng)狀態(tài)為關(guān)機(jī)狀態(tài),且所述第三判斷模塊判斷出當(dāng)前被按下的按鍵是第二按鍵,或者是第三按鍵和第四按鍵的組合時(shí),將所述系統(tǒng)狀態(tài)設(shè)置為驗(yàn)證日志狀態(tài); 所述動(dòng)態(tài)令牌,還包括: 第十四處理模塊,用于在所述第七判斷模塊判斷出所述系統(tǒng)狀態(tài)為驗(yàn)證日志?爪狀態(tài),且所述第三判斷模塊判斷出當(dāng)前被按下的按鍵是數(shù)字鍵時(shí),執(zhí)行以下操作: 02、將所述第一鍵值保存到按鍵數(shù)據(jù)緩沖區(qū)中,更新所述按鍵數(shù)據(jù)長度; 03、判斷所述按鍵數(shù)據(jù)長度是否小于第一預(yù)設(shè)長度,如果是,則開啟按鍵中斷,并觸發(fā)所述第一判斷模塊判斷是否存在置位的中斷標(biāo)志;否則,執(zhí)行步驟(? ; 04、判斷所述按鍵數(shù)據(jù)緩沖區(qū)中的數(shù)據(jù)是否與密碼數(shù)據(jù)緩沖區(qū)中的數(shù)據(jù)相同,如果是,則執(zhí)行步驟⑶;否則,執(zhí)行步驟⑶; ⑶、清空按鍵數(shù)據(jù)緩沖區(qū),將日志驗(yàn)證錯(cuò)誤次數(shù)清零,將所述系統(tǒng)狀態(tài)設(shè)置為日志顯示狀態(tài),開啟按鍵中斷,并觸發(fā)所述第一判斷模塊判斷是否存在置位的中斷標(biāo)志; 06、清空按鍵數(shù)據(jù)緩沖區(qū),對日志驗(yàn)證錯(cuò)誤次數(shù)進(jìn)行更新; 07、判斷日志驗(yàn)證錯(cuò)誤次數(shù)是否為第二預(yù)設(shè)次數(shù),如果是,則執(zhí)行步驟⑶;否則,執(zhí)行步驟⑶; ⑶、將所述系統(tǒng)狀態(tài)設(shè)置為顯示解鎖挑戰(zhàn)碼狀態(tài),開啟按鍵中斷,并觸發(fā)所述第一判斷模塊判斷是否存在置位的中斷標(biāo)志; ⑶、將所述系統(tǒng)狀態(tài)設(shè)置為?爪錯(cuò)誤狀態(tài),開啟按鍵中斷,并觸發(fā)所述第一判斷模塊判斷是否存在置位的中斷標(biāo)志; 第十五處理模塊,用于在所述第七判斷模塊判斷出所述系統(tǒng)狀態(tài)為驗(yàn)證日志?化狀態(tài),且所述第三判斷模塊判斷出當(dāng)前被按下的按鍵是刪除鍵時(shí),判斷所述按鍵數(shù)據(jù)長度是否為零,如果是,則開啟按鍵中斷,并觸發(fā)所述第一判斷模塊判斷是否存在置位的中斷標(biāo)志; 否則,將所述按鍵數(shù)據(jù)緩沖區(qū)中最后一次存入的數(shù)據(jù)刪除,更新所述按鍵數(shù)據(jù)長度,開啟按鍵中斷,并觸發(fā)所述第一判斷模塊判斷是否存在置位的中斷標(biāo)志。
46.如權(quán)利要求45所述的動(dòng)態(tài)令牌,其特征在于,還包括: 標(biāo)志位管理模塊,用于在所述第三判斷模塊判斷出當(dāng)前被按下的按鍵是電源鍵,且所述第七判斷模塊判斷出所述系統(tǒng)狀態(tài)不是關(guān)機(jī)狀態(tài)時(shí),將日志開機(jī)標(biāo)志復(fù)位;在所述第七判斷模塊判斷出所述系統(tǒng)狀態(tài)為關(guān)機(jī)狀態(tài),且所述第三判斷模塊判斷出當(dāng)前被按下的按鍵是第二按鍵,或者是第三按鍵和第四按鍵的組合時(shí),將所述日志開機(jī)標(biāo)志置位; 第十六處理模塊,用于在所述第三判斷模塊判斷出當(dāng)前被按下的按鍵不是電源鍵,且所述第七判斷模塊判斷出所述系統(tǒng)狀態(tài)為?爪錯(cuò)誤狀態(tài)時(shí),判斷所述日志開機(jī)標(biāo)志是否置位,如果是,則將所述系統(tǒng)狀態(tài)設(shè)置為驗(yàn)證日志狀態(tài),開啟按鍵中斷,并觸發(fā)所述第一判斷模塊判斷是否存在置位的中斷標(biāo)志;否則,將所述系統(tǒng)狀態(tài)設(shè)置為驗(yàn)證令牌?爪狀態(tài),開啟按鍵中斷,并觸發(fā)所述第一判斷模塊判斷是否存在置位的中斷標(biāo)志。
47.如權(quán)利要求45所述的動(dòng)態(tài)令牌,其特征在于, 所述第十一處理模塊,具體用于在所述第三判斷模塊判斷出當(dāng)前被按下的按鍵是電源鍵,且所述第七判斷模塊判斷出所述系統(tǒng)狀態(tài)不是關(guān)機(jī)狀態(tài)時(shí),將所述系統(tǒng)狀態(tài)設(shè)置為關(guān)機(jī)狀態(tài),開啟按鍵中斷,并觸發(fā)所述第一判斷模塊判斷是否存在置位的中斷標(biāo)志; 在所述第三判斷模塊判斷出當(dāng)前被按下的按鍵是電源鍵,且所述第七判斷模塊判斷出所述系統(tǒng)狀態(tài)是關(guān)機(jī)狀態(tài)時(shí),判斷令牌鎖定標(biāo)志是否置位,如果是,則將所述系統(tǒng)狀態(tài)設(shè)置為顯示解鎖挑戰(zhàn)碼狀態(tài),開啟按鍵中斷,并觸發(fā)所述第一判斷模塊判斷是否存在置位的中斷標(biāo)志;否則,將所述系統(tǒng)狀態(tài)設(shè)置為驗(yàn)證令牌?爪狀態(tài); 所述更新子模塊,具體用于在所述第七判斷模塊判斷出所述系統(tǒng)狀態(tài)為關(guān)機(jī)狀態(tài),且所述第三判斷模塊判斷出當(dāng)前被按下的按鍵是第二按鍵,或者是第三按鍵和第四按鍵的組合時(shí),判斷日志鎖定標(biāo)志是否置位,如果是,則將所述系統(tǒng)狀態(tài)設(shè)置為顯示解鎖挑戰(zhàn)碼狀態(tài),開啟按鍵中斷,并觸發(fā)所述第一判斷模塊判斷是否存在置位的中斷標(biāo)志;否則,將所述系統(tǒng)狀態(tài)設(shè)置為驗(yàn)證日志狀態(tài); 所述第十二處理模塊,還用于在判斷出所述令牌驗(yàn)證錯(cuò)誤次數(shù)為第一預(yù)設(shè)次數(shù)之后,將所述令牌鎖定標(biāo)志置位; 所述第十四處理模塊,還用于在判斷出所述日志驗(yàn)證錯(cuò)誤次數(shù)為第二預(yù)設(shè)次數(shù)之后,將所述令牌鎖定標(biāo)志置位; 所述動(dòng)態(tài)令牌,還包括: 第十七處理模塊,用于在所述第七判斷模塊判斷出所述系統(tǒng)狀態(tài)為顯示解鎖挑戰(zhàn)碼狀態(tài),且所述第三判斷模塊判斷出當(dāng)前被按下的按鍵不是電源鍵時(shí),生成解鎖挑戰(zhàn)碼,將所述系統(tǒng)狀態(tài)設(shè)置為等待輸入解鎖碼狀態(tài),顯示所述解鎖挑戰(zhàn)碼,開啟按鍵中斷,并觸發(fā)所述第一判斷模塊判斷是否存在置位的中斷標(biāo)志; 第十八處理模塊,用于在所述第七判斷模塊判斷出所述系統(tǒng)狀態(tài)為等待輸入解鎖碼狀態(tài),且所述第三判斷模塊判斷出當(dāng)前被按下的按鍵是數(shù)字鍵時(shí),執(zhí)行以下操作: 02、將所述第一鍵值保存到按鍵數(shù)據(jù)緩沖區(qū)中,更新按鍵數(shù)據(jù)長度,判斷所述按鍵數(shù)據(jù)長度是否小于第二預(yù)設(shè)長度,如果是,則開啟按鍵中斷,并觸發(fā)所述第一判斷模塊判斷是否存在置位的中斷標(biāo)志;否則,執(zhí)行步驟03 ; 03、根據(jù)所述解鎖挑戰(zhàn)碼,對所述按鍵數(shù)據(jù)緩沖區(qū)中的數(shù)據(jù)進(jìn)行驗(yàn)證,如果驗(yàn)證通過,則執(zhí)行步驟04 ;否則,執(zhí)行步驟05 ; 04、清空所述按鍵數(shù)據(jù)緩沖區(qū),將令牌鎖定標(biāo)志和日志鎖定標(biāo)志復(fù)位,將所述系統(tǒng)狀態(tài)設(shè)置為第一設(shè)置?爪狀態(tài),開啟按鍵中斷,并觸發(fā)所述第一判斷模塊判斷是否存在置位的中斷標(biāo)志; 05、清空所述按鍵數(shù)據(jù)緩沖區(qū),將所述系統(tǒng)狀態(tài)設(shè)置為關(guān)機(jī)狀態(tài),開啟按鍵中斷,并觸發(fā)所述第一判斷模塊判斷是否存在置位的中斷標(biāo)志; 第十九處理模塊,用于在所述第七判斷模塊判斷出所述系統(tǒng)狀態(tài)為等待輸入解鎖碼狀態(tài),且所述第三判斷模塊判斷出當(dāng)前被按下的按鍵是刪除鍵時(shí),判斷按鍵數(shù)據(jù)長度是否為零,如果是,則開啟按鍵中斷,并觸發(fā)所述第一判斷模塊判斷是否存在置位的中斷標(biāo)志;否貝0,將所述按鍵數(shù)據(jù)緩沖區(qū)中最后一次存入的數(shù)據(jù)刪除,更新所述按鍵數(shù)據(jù)長度,開啟按鍵中斷,并觸發(fā)所述第一判斷模塊判斷是否存在置位的中斷標(biāo)志。
48.如權(quán)利要求47所述的動(dòng)態(tài)令牌,其特征在于, 所述第十一處理模塊,具體用于在所述第三判斷模塊判斷出當(dāng)前被按下的按鍵是電源鍵,且所述第七判斷模塊判斷出所述系統(tǒng)狀態(tài)不是關(guān)機(jī)狀態(tài)時(shí),將所述系統(tǒng)狀態(tài)設(shè)置為關(guān)機(jī)狀態(tài),開啟按鍵中斷,并觸發(fā)所述第一判斷模塊判斷是否存在置位的中斷標(biāo)志; 在所述第三判斷模塊判斷出當(dāng)前被按下的按鍵是電源鍵,且所述第七判斷模塊判斷出所述系統(tǒng)狀態(tài)是關(guān)機(jī)狀態(tài)時(shí),判斷密碼設(shè)置標(biāo)志是否置位,如果是,則將所述系統(tǒng)狀態(tài)設(shè)置為驗(yàn)證令牌?爪狀態(tài);否則,將所述系統(tǒng)狀態(tài)設(shè)置為第一設(shè)置?爪狀態(tài),開啟按鍵中斷,并觸發(fā)所述第一判斷模塊判斷是否存在置位的中斷標(biāo)志; 所述動(dòng)態(tài)令牌,還包括: 第二十處理模塊,用于在所述第七判斷模塊判斷出所述系統(tǒng)狀態(tài)為第一設(shè)置?爪狀態(tài),且所述第三判斷模塊判斷出當(dāng)前被按下的按鍵是數(shù)字鍵時(shí),將所述第一鍵值保存到所述按鍵數(shù)據(jù)緩沖區(qū)中,更新所述按鍵數(shù)據(jù)長度,判斷按鍵數(shù)據(jù)長度是否小于第一預(yù)設(shè)長度,如果是,則開啟按鍵中斷,并觸發(fā)所述第一判斷模塊判斷是否存在置位的中斷標(biāo)志;否則,將所述按鍵數(shù)據(jù)緩沖區(qū)中的數(shù)據(jù)存儲(chǔ)到密碼數(shù)據(jù)緩沖區(qū)中,清空所述按鍵數(shù)據(jù)緩沖區(qū),將所述系統(tǒng)狀態(tài)設(shè)置為第二設(shè)置?爪狀態(tài),開啟按鍵中斷,并觸發(fā)所述第一判斷模塊判斷是否存在置位的中斷標(biāo)志; 第二十一處理模塊,用于在所述第七判斷模塊判斷出所述系統(tǒng)狀態(tài)為第一設(shè)置?爪狀態(tài),且所述第三判斷模塊判斷出當(dāng)前被按下的按鍵是刪除鍵時(shí),判斷所述按鍵數(shù)據(jù)長度是否為零,如果是,則開啟按鍵中斷,并觸發(fā)所述第一判斷模塊判斷是否存在置位的中斷標(biāo)志;否則,將所述按鍵數(shù)據(jù)緩沖區(qū)中最后一次存入的數(shù)據(jù)刪除,更新所述按鍵數(shù)據(jù)長度,開啟按鍵中斷,并觸發(fā)所述第一判斷模塊判斷是否存在置位的中斷標(biāo)志; 第二十二處理模塊,用于在所述第七判斷模塊判斷出所述系統(tǒng)狀態(tài)為第二設(shè)置?爪狀態(tài),且所述第三判斷模塊判斷出當(dāng)前被按下的按鍵是數(shù)字鍵時(shí),執(zhí)行以下操作: ?2、將所述第一鍵值保存到所述按鍵數(shù)據(jù)緩沖區(qū)中,更新所述按鍵數(shù)據(jù)長度,判斷按鍵數(shù)據(jù)長度是否小于第一預(yù)設(shè)長度,如果是,則開啟按鍵中斷,并觸發(fā)所述第一判斷模塊判斷是否存在置位的中斷標(biāo)志;否則,執(zhí)行步驟?3 ; ?3、判斷所述按鍵數(shù)據(jù)緩沖區(qū)中的數(shù)據(jù)是否與所述密碼數(shù)據(jù)緩沖區(qū)中的數(shù)據(jù)相同,如果是,則執(zhí)行步驟?5 ;否則,執(zhí)行步驟?4 ; ?4、清空按鍵數(shù)據(jù)緩沖區(qū)和密碼數(shù)據(jù)緩沖區(qū),將所述系統(tǒng)狀態(tài)設(shè)置為?爪設(shè)置錯(cuò)誤狀態(tài),開啟按鍵中斷,并觸發(fā)所述第一判斷模塊判斷是否存在置位的中斷標(biāo)志; ?5、判斷日志開機(jī)標(biāo)志是否置位,如果是,則執(zhí)行步驟?6 ;否則,執(zhí)行步驟?7 ; ?6、將所述密碼設(shè)置標(biāo)志置位,清空所述按鍵數(shù)據(jù)緩沖區(qū),將所述系統(tǒng)狀態(tài)設(shè)置為日志顯示狀態(tài),開啟按鍵中斷,并觸發(fā)所述第一判斷模塊判斷是否存在置位的中斷標(biāo)志; ?7、將所述密碼設(shè)置標(biāo)志置位,清空所述按鍵數(shù)據(jù)緩沖區(qū),將所述系統(tǒng)狀態(tài)設(shè)置為令牌界面狀態(tài),開啟按鍵中斷,并觸發(fā)所述第一判斷模塊判斷是否存在置位的中斷標(biāo)志; 第二十三處理模塊,用于在所述第七判斷模塊判斷出所述系統(tǒng)狀態(tài)為第二設(shè)置?爪狀態(tài),且所述第三判斷模塊判斷出當(dāng)前被按下的按鍵是刪除鍵時(shí),判斷所述按鍵數(shù)據(jù)長度是否為零,如果是,則開啟按鍵中斷,并觸發(fā)所述第一判斷模塊判斷是否存在置位的中斷標(biāo)志;否則,將所述按鍵數(shù)據(jù)緩沖區(qū)中最后一次存入的數(shù)據(jù)刪除,更新所述按鍵數(shù)據(jù)長度,開啟按鍵中斷,并觸發(fā)所述第一判斷模塊判斷是否存在置位的中斷標(biāo)志; 第二十四處理模塊,用于在所述第三判斷模塊判斷出當(dāng)前被按下的按鍵不是電源鍵,且所述第七判斷模塊判斷出所述系統(tǒng)狀態(tài)為?爪設(shè)置錯(cuò)誤狀態(tài)時(shí),將所述系統(tǒng)狀態(tài)設(shè)置為第一設(shè)置?爪狀態(tài),開啟按鍵中斷,并觸發(fā)所述第一判斷模塊判斷是否存在置位的中斷標(biāo)志; 所述第一處理模塊,具體用于在所述第三判斷模塊判斷出當(dāng)前被按下的按鍵是第一按鍵,且所述第七判斷模塊判斷出所述系統(tǒng)狀態(tài)為令牌界面狀態(tài)時(shí),生成動(dòng)態(tài)口令以及與所述動(dòng)態(tài)口令對應(yīng)的日志,將所述動(dòng)態(tài)口令存儲(chǔ)到顯示數(shù)據(jù)緩沖區(qū),將所述日志存儲(chǔ)到日志存儲(chǔ)區(qū),開啟按鍵中斷,并觸發(fā)所述第一判斷模塊判斷是否存在置位的中斷標(biāo)志; 所述第二處理模塊,具體用于在所述第三判斷模塊判斷出當(dāng)前被按下的按鍵是第二按鍵,或者是第三按鍵和第四按鍵的組合,且所述第七判斷模塊判斷出所述系統(tǒng)狀態(tài)為日志顯示狀態(tài)時(shí),從所述日志存儲(chǔ)區(qū)中讀取日志,將讀取到的日志存儲(chǔ)到所述顯示數(shù)據(jù)緩沖區(qū),開啟按鍵中斷,并觸發(fā)所述第一判斷模塊判斷是否存在置位的中斷標(biāo)志。
【文檔編號】H04L9/32GK104394145SQ201410685654
【公開日】2015年3月4日 申請日期:2014年11月25日 優(yōu)先權(quán)日:2014年11月25日
【發(fā)明者】陸舟, 于華章 申請人:飛天誠信科技股份有限公司