亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

NORFLASH存儲密鑰記錄的方法、裝置及計算機(jī)可讀存儲介質(zhì)與流程

文檔序號:11517634閱讀:504來源:國知局
NOR FLASH存儲密鑰記錄的方法、裝置及計算機(jī)可讀存儲介質(zhì)與流程

本發(fā)明屬于計算機(jī)軟件領(lǐng)域,尤其涉及一種norflash存儲密鑰記錄的方法、裝置及計算機(jī)可讀存儲介質(zhì)。



背景技術(shù):

在金融安全支付設(shè)備中,通常需要存儲多個密鑰,分別用于不同的加密用途。這些密鑰往往以密文形式存儲在flash中。flash是一種固態(tài)、電可擦除可寫入、掉電不丟失信息的計算機(jī)存儲介質(zhì)。根據(jù)實(shí)現(xiàn)結(jié)構(gòu)的不同,flash分為norflash和nandflash兩種,其中,norflash是指以“或非門”為存儲單元結(jié)構(gòu)的flash。norflash的特點(diǎn)包括:可隨機(jī)以字節(jié)為單位進(jìn)行讀?。恢荒芤詨K(或扇區(qū))為單位進(jìn)行擦除,內(nèi)存塊只有被擦除后才能寫入任意的新數(shù)據(jù);可以對同一字節(jié)進(jìn)行多次編程,即,將取值為“1”的位元改寫為“0”。

在金融安全支付的軟件領(lǐng)域,現(xiàn)有的在norflash存儲密鑰記錄的方法是通過flash的文件系統(tǒng)存入文件的方式來實(shí)現(xiàn)。該方式會有以下的不足之處:

1)寫入速度往往較慢,這是因?yàn)槲募到y(tǒng)需要為眾多文件的訪問服務(wù),并且底層實(shí)現(xiàn)起來流程多而復(fù)雜;

2)可靠性欠佳,這是因?yàn)?,設(shè)備正在執(zhí)行寫操作時,若遇到設(shè)備掉電,則會發(fā)生寫入動作沒有真正完成,導(dǎo)致密鑰信息丟失,或者密鑰文件可能遭到毀壞,設(shè)備無法進(jìn)行金融支付。

以上技術(shù)問題亟待解決。



技術(shù)實(shí)現(xiàn)要素:

本發(fā)明提供一種norflash存儲密鑰記錄的方法、裝置及計算機(jī)可讀存儲介質(zhì),以提高向norflash中寫入密鑰記錄的速度和可靠性。

本發(fā)明第一方面提供了一種norflash存儲密鑰記錄的方法,包括:

在設(shè)備開機(jī)時對norflash中的密鑰記錄存儲塊進(jìn)行校驗(yàn),所述密鑰記錄存儲塊包括第一密鑰記錄存儲塊和第二密鑰記錄存儲塊;

若所述校驗(yàn)的結(jié)果為對所述第一密鑰記錄存儲塊或第二密鑰記錄存儲塊的校驗(yàn)失敗,則將校驗(yàn)成功的密鑰記錄存儲塊中的數(shù)據(jù)復(fù)制至校驗(yàn)失敗的密鑰記錄存儲塊,并更新所述第一密鑰記錄存儲塊和第二密鑰記錄存儲塊的寫密鑰記錄指針;

在收到密鑰記錄寫操作的請求時,根據(jù)所述更新的寫密鑰記錄指針指示的偏移地址,循環(huán)滾動向所述第一密鑰記錄存儲塊和第二密鑰記錄存儲塊寫入按照預(yù)設(shè)密鑰記錄格式生成的密鑰記錄。

本發(fā)明第二方面提供了一種norflash存儲密鑰記錄的裝置,包括:

校驗(yàn)?zāi)K,用于在設(shè)備開機(jī)時對norflash中的密鑰記錄存儲塊進(jìn)行校驗(yàn),所述密鑰記錄存儲塊包括第一密鑰記錄存儲塊和第二密鑰記錄存儲塊;

重整模塊,用于若所述校驗(yàn)?zāi)K校驗(yàn)的結(jié)果為對所述第一密鑰記錄存儲塊或第二密鑰記錄存儲塊的校驗(yàn)失敗,則將校驗(yàn)成功的密鑰記錄存儲塊中的數(shù)據(jù)復(fù)制至校驗(yàn)失敗的密鑰記錄存儲塊,并更新所述第一密鑰記錄存儲塊和第二密鑰記錄存儲塊的寫密鑰記錄指針;

循環(huán)寫入模塊,用于在收到密鑰記錄寫操作的請求時,根據(jù)所述更新的寫密鑰記錄指針指示的偏移地址,循環(huán)滾動向所述第一密鑰記錄存儲塊和第二密鑰記錄存儲塊寫入按照預(yù)設(shè)密鑰記錄格式生成的密鑰記錄。

本發(fā)明實(shí)施例的第三方面提供了一種計算設(shè)備,包括存儲器、處理器以及存儲在存儲器中并可在處理器上運(yùn)行的計算機(jī)程序,處理器執(zhí)行計算機(jī)程序時實(shí)現(xiàn)以下步驟:

在設(shè)備開機(jī)時對norflash中的密鑰記錄存儲塊進(jìn)行校驗(yàn),所述密鑰記錄存儲塊包括第一密鑰記錄存儲塊和第二密鑰記錄存儲塊;

若所述校驗(yàn)的結(jié)果為對所述第一密鑰記錄存儲塊或第二密鑰記錄存儲塊的校驗(yàn)失敗,則將校驗(yàn)成功的密鑰記錄存儲塊中的數(shù)據(jù)復(fù)制至校驗(yàn)失敗的密鑰記錄存儲塊,并更新所述第一密鑰記錄存儲塊和第二密鑰記錄存儲塊的寫密鑰記錄指針;

在收到密鑰記錄寫操作的請求時,根據(jù)所述更新的寫密鑰記錄指針指示的偏移地址,循環(huán)滾動向所述第一密鑰記錄存儲塊和第二密鑰記錄存儲塊寫入按照預(yù)設(shè)密鑰記錄格式生成的密鑰記錄。

本發(fā)明實(shí)施例的第四方面提供了一種計算機(jī)可讀存儲介質(zhì),計算機(jī)可讀存儲介質(zhì)存儲有計算機(jī)程序,計算機(jī)程序被處理器執(zhí)行時實(shí)現(xiàn)以下步驟:

在設(shè)備開機(jī)時對norflash中的密鑰記錄存儲塊進(jìn)行校驗(yàn),所述密鑰記錄存儲塊包括第一密鑰記錄存儲塊和第二密鑰記錄存儲塊;

若所述校驗(yàn)的結(jié)果為對所述第一密鑰記錄存儲塊或第二密鑰記錄存儲塊的校驗(yàn)失敗,則將校驗(yàn)成功的密鑰記錄存儲塊中的數(shù)據(jù)復(fù)制至校驗(yàn)失敗的密鑰記錄存儲塊,并更新所述第一密鑰記錄存儲塊和第二密鑰記錄存儲塊的寫密鑰記錄指針;

在收到密鑰記錄寫操作的請求時,根據(jù)所述更新的寫密鑰記錄指針指示的偏移地址,循環(huán)滾動向所述第一密鑰記錄存儲塊和第二密鑰記錄存儲塊寫入按照預(yù)設(shè)密鑰記錄格式生成的密鑰記錄。

從上述本發(fā)明提供的技術(shù)方案可知,一方面,與現(xiàn)有技術(shù)在向norflash存儲密鑰記錄時以文件系統(tǒng)方式寫入不同,本發(fā)明提供的技術(shù)方案是對norflash中的密鑰記錄存儲塊直接寫入密鑰記錄,寫入速度更快;另一方面,在設(shè)備開機(jī)時增加了校驗(yàn)和對密鑰記錄存儲塊重整的過程,并且,在收到密鑰記錄寫操作的請求時,循環(huán)滾動對第一密鑰記錄存儲塊和第二密鑰記錄存儲塊雙寫入操作,從而保障在執(zhí)行寫入操作而設(shè)備斷電時的寫操作的可靠性。

附圖說明

為了更清楚地說明本發(fā)明實(shí)施例中的技術(shù)方案,下面將對實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。

圖1是本發(fā)明實(shí)施例提供的norflash存儲密鑰記錄的方法的實(shí)現(xiàn)流程示意圖;

圖2是本發(fā)明實(shí)施例提供的在設(shè)備開機(jī)時對norflash中的密鑰記錄存儲塊進(jìn)行校驗(yàn)的實(shí)現(xiàn)流程示意圖;

圖3是本發(fā)明實(shí)施例提供的norflash存儲密鑰記錄的裝置的結(jié)構(gòu)示意圖;

圖4是本發(fā)明另一實(shí)施例提供的norflash存儲密鑰記錄的裝置的結(jié)構(gòu)示意圖;

圖5是本發(fā)明另一實(shí)施例提供的norflash存儲密鑰記錄的裝置的結(jié)構(gòu)示意圖;

圖6是本發(fā)明另一實(shí)施例提供的norflash存儲密鑰記錄的裝置的結(jié)構(gòu)示意圖;

圖7是本發(fā)明另一實(shí)施例提供的norflash存儲密鑰記錄的裝置的結(jié)構(gòu)示意圖;

圖8是本發(fā)明另一實(shí)施例提供的norflash存儲密鑰記錄的裝置的結(jié)構(gòu)示意圖;

圖9是本發(fā)明實(shí)施例提供的計算設(shè)備的結(jié)構(gòu)示意圖。

具體實(shí)施方式

以下描述中,為了說明而不是為了限定,提出了諸如特定系統(tǒng)結(jié)構(gòu)、技術(shù)之類的具體細(xì)節(jié),以便透徹理解本發(fā)明實(shí)施例。然而,本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)清楚,在沒有這些具體細(xì)節(jié)的其它實(shí)施例中也可以實(shí)現(xiàn)本發(fā)明。在其它情況中,省略對眾所周知的系統(tǒng)、裝置、電路以及方法的詳細(xì)說明,以免不必要的細(xì)節(jié)妨礙本發(fā)明的描述。

為了說明本發(fā)明的技術(shù)方案,下面通過具體實(shí)施例來進(jìn)行說明。

附圖1是本發(fā)明實(shí)施例提供的norflash存儲密鑰記錄的方法的實(shí)現(xiàn)流程示意圖,主要包括以下步驟s101至s103,詳細(xì)說明如下:

s101,在設(shè)備開機(jī)時對norflash中的密鑰記錄存儲塊進(jìn)行校驗(yàn),其中,密鑰記錄存儲塊包括第一密鑰記錄存儲塊和第二密鑰記錄存儲塊。

如背景技術(shù)所述,對norflash的設(shè)備操作,例如對norflash的第一密鑰記錄存儲塊或第二密鑰記錄存儲塊進(jìn)行寫密鑰記錄的操作,經(jīng)常出現(xiàn)正在對norflash的第一密鑰記錄存儲塊或第二密鑰記錄存儲塊進(jìn)行寫密鑰記錄的操作時,設(shè)備突然掉電,導(dǎo)致第一密鑰記錄存儲塊或第二密鑰記錄存儲塊進(jìn)行寫密鑰記錄的操作失敗。在設(shè)備開機(jī)時對norflash中的密鑰記錄存儲塊進(jìn)行校驗(yàn),其目的是為了校驗(yàn)上述情況出現(xiàn)時第一密鑰記錄存儲塊或第二密鑰記錄存儲塊中的數(shù)據(jù)即密鑰記錄是否正確。

在本發(fā)明實(shí)施例中,第一密鑰記錄存儲塊和第二密鑰記錄存儲塊分別可以是norflash分配的一個扇區(qū),這兩個扇區(qū)專門用于密鑰管理模塊對密鑰記錄的存儲,其他模塊和事務(wù)不得跨過密鑰管理模塊直接對其訪問。一般而言,第一密鑰記錄存儲塊或第二密鑰記錄存儲塊的大小可以為64k、128k或256k字節(jié)。

作為本發(fā)明一個實(shí)施例,在設(shè)備開機(jī)時對norflash中的密鑰記錄存儲塊進(jìn)行校驗(yàn)可通過如下步驟s201至s208實(shí)現(xiàn),如附圖2的流程圖所示,說明如下:

s201,按照第一密鑰記錄存儲塊和第二密鑰記錄存儲塊的讀密鑰記錄指針指示的偏移地址,從第一密鑰記錄存儲塊和第二密鑰記錄存儲塊分別讀取密鑰記錄。

在本發(fā)明實(shí)施例中,密鑰記錄除了包括密鑰標(biāo)識號、密鑰記錄長度信息和循環(huán)冗余校驗(yàn)碼之外,還包括密鑰本體,其中,密鑰標(biāo)識號用于標(biāo)識所屬密鑰記錄,是一條密鑰記錄的編號,其大小在[1,n],此處的n為系統(tǒng)能夠支持的密鑰的總個數(shù)(后續(xù)描述中若不做特別說明,n均為系統(tǒng)能夠支持的密鑰的總個數(shù)),密鑰記錄長度信息表明所屬密鑰記錄的長度,其大小為該條密鑰記錄的總字節(jié)數(shù),循環(huán)冗余校驗(yàn)碼用于驗(yàn)證所屬密鑰記錄的完整性,密鑰本體是將其明文信息采用系統(tǒng)密鑰加密后存放到密鑰記錄存儲塊中的一條密鑰。作為本發(fā)明一個實(shí)施例,假設(shè)一條密鑰記錄的密鑰標(biāo)識號(大小為2字節(jié))和密鑰記錄長度信息(大小為2字節(jié))占用4字節(jié),則從第一密鑰記錄存儲塊或第二密鑰記錄存儲塊讀取密鑰記錄可以是:先讀取密鑰記錄的前4字節(jié),依次得到密鑰記錄的密鑰標(biāo)識號和密鑰記錄長度信息;若密鑰標(biāo)識號無效(即,密鑰標(biāo)識號小于1或大于n,下同),則中止密鑰記錄讀取過程;計算密鑰記錄后半部即循環(huán)冗余校驗(yàn)碼和密鑰本體的長度,密鑰記錄后半部的長度=密鑰記錄的長度-4;按照計算出的密鑰記錄后半部的長度,讀出密鑰記錄后半部。

需要說明的是,在本發(fā)明實(shí)施例中,指針用于下一次對密鑰記錄存儲塊執(zhí)行某種操作時指示的偏移地址,即,可按照指示的偏移地址在下一次對密鑰記錄存儲塊執(zhí)行某種操作,例如,讀密鑰記錄指針用于下一次對密鑰記錄存儲塊執(zhí)行讀取密鑰記錄時指示的偏移地址,可按照這個指示的偏移地址,在下一次從指示的偏移地址對應(yīng)的存儲單元執(zhí)行讀取密鑰記錄這一操作;再如,寫密鑰記錄指針用于下一次對密鑰記錄存儲塊執(zhí)行寫入密鑰記錄時指示的偏移地址,可按照這個指示的偏移地址,在下一次向指示的偏移地址對應(yīng)的存儲單元執(zhí)行寫入密鑰記錄這一操作。

s202,判斷讀取的密鑰記錄的密鑰標(biāo)識號無效和/或密鑰記錄長度信息是否無效。

在本發(fā)明實(shí)施例中,密鑰記錄的密鑰標(biāo)識號有效是指其大小在[1,n]內(nèi),而密鑰記錄的密鑰標(biāo)識號無效是指其大小小于1或大于n。密鑰記錄長度信息有效是指其所表明的密鑰記錄的長度即該條密鑰記錄的總字節(jié)數(shù)屬于系統(tǒng)所支持的長度,而無效是指其所表明的密鑰記錄的長度即該條密鑰記錄的總字節(jié)數(shù)不屬于系統(tǒng)所支持的長度,例如,系統(tǒng)所支持的密鑰記錄長度是28、36、44字節(jié),則18是無效長度,28是有效長度。

s203,若讀取的密鑰記錄的密鑰標(biāo)識號無效和/或密鑰記錄長度信息無效,則對密鑰標(biāo)識號無效和/或密鑰記錄長度信息無效的密鑰記錄所在的密鑰記錄存儲塊的校驗(yàn)標(biāo)記為校驗(yàn)失敗。

s204,若密鑰記錄的密鑰標(biāo)識號和密鑰記錄長度信息有效,則校驗(yàn)密鑰記錄長度信息有效和密鑰標(biāo)識號有效且不為0的密鑰記錄的循環(huán)冗余校驗(yàn)碼。

需要說明的是,在本發(fā)明實(shí)施例中,若一條密鑰記錄的密鑰記錄長度信息有效但密鑰標(biāo)識號為0,則表明該密鑰記錄已經(jīng)刪除,沒有必要再對其讀取和/或?qū)ζ溲h(huán)冗余校驗(yàn)碼進(jìn)行校驗(yàn),可以直接跳過該密鑰記錄。因此,只對密鑰記錄長度信息有效和密鑰標(biāo)識號有效且不為0的密鑰記錄的循環(huán)冗余校驗(yàn)碼進(jìn)行校驗(yàn)。

具體地,對密鑰記錄長度信息有效和密鑰標(biāo)識號有效且不為0的密鑰記錄進(jìn)行循環(huán)冗余校驗(yàn)碼的校驗(yàn)過程包括:對讀出的有效密鑰記錄長度信息、有效密鑰標(biāo)識號和密鑰本體這三個連續(xù)的字段采用crc-16-ccitt算法、從頭至尾地計算循環(huán)冗余校驗(yàn)碼;比較計算出的循環(huán)冗余校驗(yàn)碼與從密鑰記錄中讀出的循環(huán)冗余校驗(yàn)碼;若兩者不等,則判斷循環(huán)冗余校驗(yàn)碼校驗(yàn)失敗,否則,判斷循環(huán)冗余校驗(yàn)碼校驗(yàn)成功。

s205,判斷循環(huán)冗余校驗(yàn)碼校驗(yàn)是否失敗。

s206,若循環(huán)冗余校驗(yàn)碼校驗(yàn)失敗,則對循環(huán)冗余校驗(yàn)碼校驗(yàn)失敗的密鑰存儲記錄所在的密鑰記錄存儲塊的校驗(yàn)標(biāo)記為校驗(yàn)失敗。

s207,若密鑰記錄長度信息有效、密鑰標(biāo)識號有效且不為0以及循環(huán)冗余校驗(yàn)碼校驗(yàn)成功,或者,若密鑰記錄長度信息有效且密鑰標(biāo)識號為0,則將讀密鑰記錄指針更新。

如前所述,若一條密鑰記錄的密鑰記錄長度信息有效但密鑰標(biāo)識號為0,則表明該密鑰記錄已經(jīng)刪除,可以直接跳過該密鑰記錄,讀取下一條密鑰記錄。因此,若密鑰記錄長度信息有效、密鑰標(biāo)識號有效且不為0以及循環(huán)冗余校驗(yàn)碼校驗(yàn)成功,或者,若密鑰記錄長度信息有效且密鑰標(biāo)識號為0,則將讀密鑰記錄指針更新,更新后的讀密鑰記錄指針指示的偏移地址為讀取的密鑰記錄長度與更新前的讀密鑰記錄指針指示的偏移地址之和。例如,若從第一密鑰記錄存儲塊讀取一條密鑰記錄kra之前,讀密鑰記錄指針為pra,則在讀取密鑰記錄kra、并判斷密鑰記錄kra的密鑰標(biāo)識號和密鑰記錄長度信息有效后,將pra更新為pra’,pra’指示的偏移地址為密鑰記錄kra的長度與pra指示的偏移地址之和;再如,若從第二密鑰記錄存儲塊讀取一條密鑰記錄krb之前,讀密鑰記錄指針為prb,則在讀取密鑰記錄krb、并判斷密鑰記錄krb的密鑰標(biāo)識號和密鑰記錄長度信息有效后,將prb更新為prb’,prb’指示的偏移地址為密鑰記錄krb的長度與prb指示的偏移地址之和。

在將讀密鑰記錄指針更新后,可以按照更新后的讀密鑰記錄指針指示的偏移地址,從密鑰記錄存儲塊讀取下一條密鑰記錄,即流程轉(zhuǎn)至步驟s201,重復(fù)上述s201至s207的過程。

s208,若所有密鑰記錄的密鑰標(biāo)識號和密鑰記錄長度信息均有效且循環(huán)冗余校驗(yàn)碼校驗(yàn)均成功,則對所有密鑰標(biāo)識號和密鑰記錄長度信息均有效且循環(huán)冗余校驗(yàn)碼校驗(yàn)均成功的密鑰記錄所在的密鑰記錄存儲塊的校驗(yàn)標(biāo)記為校驗(yàn)成功。

若一個密鑰記錄存儲塊的所有密鑰記錄的密鑰標(biāo)識號和密鑰記錄長度信息均有效且循環(huán)冗余校驗(yàn)碼校驗(yàn)均成功,也就是,若某條記錄的密鑰標(biāo)識號和密鑰記錄長度信息均為flash擦除后的缺省值,即,0xffff,則意味著密鑰記錄的讀取操作已經(jīng)到達(dá)未寫入的空白區(qū),對該密鑰記錄存儲塊的校驗(yàn)成功。

s102,若校驗(yàn)的結(jié)果為對第一密鑰記錄存儲塊或第二密鑰記錄存儲塊的校驗(yàn)失敗,則將校驗(yàn)成功的密鑰記錄存儲塊中的數(shù)據(jù)復(fù)制至校驗(yàn)失敗的密鑰記錄存儲塊,并更新第一密鑰記錄存儲塊和第二密鑰記錄存儲塊的寫密鑰記錄指針。

若步驟s101校驗(yàn)的結(jié)果為對第一密鑰記錄存儲塊或第二密鑰記錄存儲塊的校驗(yàn)失敗,則需要對密鑰記錄存儲塊進(jìn)行重整,即,將校驗(yàn)成功的密鑰記錄存儲塊中的數(shù)據(jù)復(fù)制至校驗(yàn)失敗的密鑰記錄存儲塊,并更新第一密鑰記錄存儲塊和第二密鑰記錄存儲塊的寫密鑰記錄指針,以使第一密鑰記錄存儲塊和第二密鑰記錄存儲塊的數(shù)據(jù)保持一致。

在本發(fā)明實(shí)施例中,對第一密鑰記錄存儲塊或第二密鑰記錄存儲塊的校驗(yàn)失敗包括兩種情形,即,對第一密鑰記錄存儲塊校驗(yàn)成功但對第二密鑰記錄存儲塊的失敗以及對第一密鑰記錄存儲塊校驗(yàn)失敗但對第二密鑰記錄存儲塊的成功,以下通過s1至s4以及s’1至s’4分別說明:

s1,若第一密鑰記錄存儲塊的校驗(yàn)成功并且第二密鑰記錄存儲塊的校驗(yàn)失敗,則擦除第二密鑰記錄存儲塊。

s2,將第一密鑰記錄存儲塊中偏移地址從0至a’addr的內(nèi)存存儲的數(shù)據(jù)復(fù)制至第二密鑰記錄存儲塊從0開始的內(nèi)存。

如前所述,在附圖2對密鑰記錄存儲塊校驗(yàn)過程中,在密鑰記錄長度信息有效、密鑰標(biāo)識號有效且不為0以及循環(huán)冗余校驗(yàn)碼校驗(yàn)成功,或者,密鑰記錄長度信息有效且密鑰標(biāo)識號為0時,更新讀密鑰記錄指針,此處a’addr即為校驗(yàn)第一密鑰記錄存儲塊時讀密鑰記錄指針更新為pra’后指示的偏移地址。

s3,將第二密鑰記錄存儲塊的讀密鑰記錄指針更新為pra’。

若更新后的第二密鑰記錄存儲塊的讀密鑰記錄指針用prb’表示,則prb’=pra’。

s4,將第一密鑰記錄存儲塊和第二密鑰記錄存儲塊的寫密鑰記錄指針更新為pra’。

若更新后的第一密鑰記錄存儲塊和第二密鑰記錄存儲塊的寫密鑰記錄指針用pw’表示,則pw’=pra’。更新第一密鑰記錄存儲塊和第二密鑰記錄存儲塊的寫密鑰記錄指針,主要是在后續(xù)對密鑰記錄存儲模塊的寫操作過程中,按照更新后的寫密鑰記錄指針pw’指示的偏移地址,向第一密鑰記錄存儲塊和/或第二密鑰記錄存儲塊寫入一條密鑰記錄。

s’1,若第一密鑰記錄存儲塊的校驗(yàn)失敗并且第二密鑰記錄存儲塊的校驗(yàn)成功,則擦除第一密鑰記錄存儲塊。

s’2,將第二密鑰記錄存儲塊中偏移地址從0至b’addr的內(nèi)存存儲的數(shù)據(jù)復(fù)制至第一密鑰記錄存儲塊從0開始的內(nèi)存。

如前所述,在附圖2對密鑰記錄存儲塊校驗(yàn)過程中,在密鑰記錄長度信息有效、密鑰標(biāo)識號有效且不為0以及循環(huán)冗余校驗(yàn)碼校驗(yàn)成功,或者,密鑰記錄長度信息有效且密鑰標(biāo)識號為0時,更新讀密鑰記錄指針,此處b’addr即為校驗(yàn)第二密鑰記錄存儲塊時讀密鑰記錄指針更新為prb’后指示的偏移地址。

s’3,將第一密鑰記錄存儲塊的讀密鑰記錄指針更新為prb’。

若更新后的第一密鑰記錄存儲塊的讀密鑰記錄指針用pra’表示,則pra’=prb’。

s’4,將第一密鑰記錄存儲塊和第二密鑰記錄存儲塊的寫密鑰記錄指針更新為prb’。

若更新后的第一密鑰記錄存儲塊和第二密鑰記錄存儲塊的寫密鑰記錄指針用pw’表示,則pw’=prb’。更新第一密鑰記錄存儲塊和第二密鑰記錄存儲塊的寫密鑰記錄指針,主要是在后續(xù)對密鑰記錄存儲模塊的寫操作過程中,按照更新后的寫密鑰記錄指針pw’指示的偏移地址,向第一密鑰記錄存儲塊和/或第二密鑰記錄存儲塊寫入一條密鑰記錄。

上述實(shí)施例排除了對第一密鑰記錄存儲塊和第二密鑰記錄存儲塊的校驗(yàn)均成功的情形。以下說明若校驗(yàn)的結(jié)果為對第一密鑰記錄存儲塊和第二密鑰記錄存儲塊的校驗(yàn)成功時的處理過程,步驟包括s”1至s”3:

s”1,若校驗(yàn)的結(jié)果為對第一密鑰記錄存儲塊和第二密鑰記錄存儲塊的校驗(yàn)成功,則比較第一密鑰記錄存儲塊中密鑰記錄的總數(shù)據(jù)長度ntotal_a和第二密鑰記錄存儲塊中密鑰記錄的總數(shù)據(jù)長度ntotal_b。

s”2,若ntotal_a大于ntotal_b,則先擦除第二密鑰記錄存儲塊、再將第一密鑰記錄存儲塊中偏移地址從0至aaddr的內(nèi)存存儲的數(shù)據(jù)復(fù)制至第二密鑰記錄存儲塊從0開始的內(nèi)存、將第二密鑰記錄存儲塊的讀密鑰記錄指針更新為prka以及將第一密鑰記錄存儲塊和第二密鑰記錄存儲塊的寫密鑰記錄指針更新為prka。

此處,aaddr在數(shù)值上等于prka指示的偏移地址的值,prka為設(shè)備開機(jī)前最后一次讀取所述第一密鑰記錄存儲塊的密鑰記錄后所述第一密鑰記錄存儲塊更新后的讀密鑰記錄指針。若第一密鑰記錄存儲塊和第二密鑰記錄存儲塊的寫密鑰記錄指針更新后的寫密鑰記錄指針用pw’表示,則將第一密鑰記錄存儲塊和第二密鑰記錄存儲塊的寫密鑰記錄指針更新為prka后,pw’=prka。

s”3,若ntotal_a小于ntotal_b,則先擦除第一密鑰記錄存儲塊、再將第二密鑰記錄存儲塊中偏移地址從0至baddr的內(nèi)存存儲的數(shù)據(jù)復(fù)制至第一密鑰記錄存儲塊從0開始的內(nèi)存、將第一密鑰記錄存儲塊的讀密鑰記錄指針更新為prkb以及將第一密鑰記錄存儲塊和第二密鑰記錄存儲塊的寫密鑰記錄指針更新為prkb。

此處,baddr在數(shù)值上等于prkb指示的偏移地址的值,prkb為設(shè)備開機(jī)前最后一次讀取第二密鑰記錄存儲塊的密鑰記錄后第二密鑰記錄存儲塊更新后的讀密鑰記錄指針。若第一密鑰記錄存儲塊和第二密鑰記錄存儲塊的寫密鑰記錄指針更新后的寫密鑰記錄指針用pw’表示,則將第一密鑰記錄存儲塊和第二密鑰記錄存儲塊的寫密鑰記錄指針更新為prka后,pw’=prkb。

需要說明的是,若校驗(yàn)的結(jié)果為對第一密鑰記錄存儲塊和第二密鑰記錄存儲塊的校驗(yàn)均校驗(yàn)成功,并且ntotal_a與ntotal_b相等,則無需對第一密鑰記錄存儲塊和第二密鑰記錄存儲塊做任何重整。

s103,在收到密鑰記錄寫操作的請求時,根據(jù)更新的寫密鑰記錄指針指示的偏移地址,循環(huán)滾動向第一密鑰記錄存儲塊和第二密鑰記錄存儲塊寫入按照預(yù)設(shè)密鑰記錄格式生成的密鑰記錄。

作為本發(fā)明一個實(shí)施例,根據(jù)更新的寫密鑰記錄指針指示的偏移地址,循環(huán)滾動向第一密鑰記錄存儲塊和第二密鑰記錄存儲塊寫入按照預(yù)設(shè)密鑰記錄格式生成的密鑰記錄可通過如下步驟s10301至s10311實(shí)現(xiàn):

s10301,按照預(yù)設(shè)密鑰記錄格式生成密鑰記錄。

如前所述,一條密鑰記錄主要包括密鑰標(biāo)識號、密鑰記錄長度信息、循環(huán)冗余校驗(yàn)碼和密鑰本體等字段,其用c語言的一個結(jié)構(gòu)體可表示如下(“\\”后表示對c語言語句的解釋):

在本發(fā)明實(shí)施例中,可按照上述結(jié)構(gòu)體表示的密鑰記錄格式生成一條密鑰記錄。

s10302,根據(jù)更新的寫密鑰記錄指針指示的偏移地址,計算生成的密鑰記錄與第一密鑰記錄存儲塊尚存的密鑰記錄的長度之和。

更新的寫密鑰記錄指針,是指步驟s102中,對第一密鑰記錄存儲塊或第二密鑰記錄存儲塊進(jìn)行寫密鑰記錄這一操作完成后所更新的寫密鑰記錄指針,如前述實(shí)施例用pw’表示的更新的寫密鑰記錄指針。在本發(fā)明實(shí)施例中,生成的密鑰記錄的長度可從生成的密鑰記錄的密鑰記錄長度信息中獲取,而第一密鑰記錄存儲塊尚存的密鑰記錄的長度在數(shù)值上與pw’指示的偏移地址的值相等。

s10303,若生成的密鑰記錄與第一密鑰記錄存儲塊尚存的密鑰記錄的長度之和超出了第一密鑰記錄存儲塊的容量,則從第一密鑰記錄存儲塊為0的偏移地址開始,依次讀取第一密鑰記錄存儲塊中有效密鑰記錄至隨機(jī)存取內(nèi)存。

生成的密鑰記錄與第一密鑰記錄存儲塊尚存的密鑰記錄的長度之和超出了第一密鑰記錄存儲塊的容量,即,經(jīng)步驟s10302計算出的生成的密鑰記錄與第一密鑰記錄存儲塊尚存的密鑰記錄的長度之和大于或等于第一密鑰記錄存儲塊的容量。這種情況下,從第一密鑰記錄存儲塊為0的偏移地址開始,依次讀取第一密鑰記錄存儲塊中有效密鑰記錄至隨機(jī)存取內(nèi)存ram。此處的有效密鑰記錄,是指密鑰記錄長度信息有效、密鑰標(biāo)識號有效且不為0以及循環(huán)冗余校驗(yàn)碼校驗(yàn)成功的密鑰記錄,無效的密鑰記錄無需讀取至ram。

s10304,擦除第一密鑰記錄存儲塊。

s10305,將從隨機(jī)存取內(nèi)存讀取的有效密鑰記錄緊湊地寫入第一記錄存儲塊中地址連續(xù)的內(nèi)存。

所謂地址連續(xù),是指寫入有效密鑰記錄到內(nèi)存時,密鑰記錄之間沒有空閑的內(nèi)存。

s10306,將第一密鑰記錄存儲塊更新的寫密鑰記錄指針的值再次更新為第一密鑰記錄存儲塊中有效密鑰記錄的長度。

若第一密鑰記錄存儲塊中有效密鑰記錄的長度用ne表示,再次更新的第一密鑰記錄存儲塊的寫密鑰記錄指針用pw’表示,則pw’=ne。

s10307,向再次更新的第一密鑰記錄存儲塊寫密鑰記錄指針指示的偏移地址寫入生成的密鑰記錄。

即,向pw’指示的偏移地址寫入經(jīng)步驟s10301生成的密鑰記錄。

s10308,擦除第二密鑰記錄存儲塊。

s10309,將從隨機(jī)存取內(nèi)存讀取的有效密鑰記錄緊湊地寫入第二密鑰記錄存儲塊中地址連續(xù)的內(nèi)存。

s10310,將更新的第二密鑰記錄存儲塊寫密鑰記錄指針再次更新為再次更新的第一密鑰記錄存儲塊寫密鑰記錄指針。

若再次更新的第二密鑰記錄存儲塊的寫密鑰記錄指針用pw’表示,則pw’=ne。

s10311,向再次更新的第二密鑰記錄存儲塊寫密鑰記錄指針指示的偏移地址寫入生成的密鑰記錄。

步驟s10311與步驟s10307類似,即,在第二密鑰記錄存儲塊中向pw’指示的偏移地址寫入經(jīng)步驟s10301生成的密鑰記錄。

在上述步驟s10301至s10311的實(shí)施中,還包括遍歷向第一密鑰記錄存儲塊或第二密鑰記錄存儲塊中地址連續(xù)的內(nèi)存寫入的有效密鑰記錄,若向第一密鑰記錄存儲塊或第二密鑰記錄存儲塊中地址連續(xù)的內(nèi)存寫入的有效密鑰記錄存在密鑰標(biāo)識號與經(jīng)步驟s10301生成的密鑰記錄的密鑰標(biāo)識號相同的密鑰記錄,則將第一密鑰記錄存儲塊或第二密鑰記錄存儲塊中地址連續(xù)的內(nèi)存中與經(jīng)步驟s10301生成的密鑰記錄的密鑰標(biāo)識號相同的密鑰記錄的密鑰標(biāo)識號更改為0,以表示該條密鑰記錄是已刪除密鑰記錄。

需要說明的是,上述附圖1示例的方法中,步驟s102之后也可能收到密鑰記錄刪除請求或密鑰記錄讀操作請求,以下分別說明。

以第一密鑰記錄存儲塊刪除密鑰記錄為例,在收到應(yīng)用層發(fā)出的密鑰記錄刪除請求后,可從密鑰記錄刪除請求中獲取密鑰標(biāo)識號;然后,再從第一密鑰記錄存儲塊偏移地址為0的存儲單元開始,遍歷各條密鑰記錄,檢查其密鑰標(biāo)識號是否等于從密鑰記錄刪除請求中獲取的密鑰標(biāo)識號;若第一密鑰記錄存儲塊中遍歷到的密鑰記錄r的密鑰標(biāo)識號等于從密鑰記錄刪除請求中獲取的密鑰標(biāo)識號,則將第一密鑰記錄存儲塊中遍歷到的密鑰記錄r的密鑰標(biāo)識號改寫為0;若第一密鑰記錄存儲塊中遍歷到的密鑰記錄r的密鑰標(biāo)識號不等于從密鑰記錄刪除請求中獲取的密鑰標(biāo)識號,則將讀密鑰記錄指針pra更新為pra’,pra’指示的偏移地址的值=pra指示的偏移地址的值+密鑰記錄r的長度;繼續(xù)根據(jù)pra’在下一條密鑰記錄中查找,直至遍歷完所有密鑰記錄,即,直至密鑰標(biāo)識號與遍歷到的密鑰記錄的長度均等于0xffff。

在第二密鑰記錄存儲塊刪除密鑰記錄與在第一密鑰記錄存儲塊刪除密鑰記錄過程類似,不做贅述。

以第一密鑰記錄存儲塊讀取密鑰記錄為例,在收到應(yīng)用層發(fā)出的密鑰記錄讀操作請求后,則可從密鑰記錄讀操作請求中獲取密鑰標(biāo)識號;然后,從第一密鑰記錄存儲塊偏移地址為0的存儲單元開始,遍歷各條密鑰記錄,檢查其密鑰標(biāo)識號是否等于從密鑰記錄讀操作請求中獲取的密鑰標(biāo)識號:若第一密鑰記錄存儲塊中遍歷到的密鑰記錄r’的密鑰標(biāo)識號等于從密鑰記錄讀操作請求中獲取的密鑰標(biāo)識號,則按照密鑰記錄r’中密鑰記錄長度信息字段指示的長度讀出密鑰記錄r’;若第一密鑰記錄存儲塊中遍歷到的密鑰記錄r’的密鑰標(biāo)識號不等于從密鑰記錄讀操作請求中獲取的密鑰標(biāo)識號,則將讀密鑰記錄指針pra更新為pra’,pra’指示的偏移地址的值=pra指示的偏移地址的值+密鑰記錄r的長度;繼續(xù)根據(jù)pra’在下一條密鑰記錄中查找,直至遍歷完所有密鑰記錄,即,直至密鑰標(biāo)識號與遍歷到的密鑰記錄的長度均等于0xffff。

從上述附圖1示例的norflash存儲密鑰記錄的方法可知,一方面,與現(xiàn)有技術(shù)在向norflash存儲密鑰記錄時以文件系統(tǒng)方式寫入不同,本發(fā)明提供的技術(shù)方案是對norflash中的密鑰記錄存儲塊直接寫入密鑰記錄,寫入速度更快;另一方面,在設(shè)備開機(jī)時增加了校驗(yàn)和對密鑰記錄存儲塊重整的過程,并且,在收到密鑰記錄寫操作的請求時,循環(huán)滾動對第一密鑰記錄存儲塊和第二密鑰記錄存儲塊雙寫入操作,在執(zhí)行寫入操作而設(shè)備斷電時的寫操作的可靠性。

圖3是本發(fā)明實(shí)施例提供的norflash存儲密鑰記錄的裝置的示意圖,其可以是一計算設(shè)備或者其中的功能模塊。圖3示例的norflash存儲密鑰記錄的裝置主要包括校驗(yàn)?zāi)K301、重整模塊302和循環(huán)寫入模塊303,詳細(xì)說明如下:

校驗(yàn)?zāi)K301,用于在設(shè)備開機(jī)時對norflash中的密鑰記錄存儲塊進(jìn)行校驗(yàn),其中,密鑰記錄存儲塊包括第一密鑰記錄存儲塊和第二密鑰記錄存儲塊;

重整模塊302,用于若校驗(yàn)?zāi)K301校驗(yàn)的結(jié)果為對第一密鑰記錄存儲塊或第二密鑰記錄存儲塊的校驗(yàn)失敗,則將校驗(yàn)成功的密鑰記錄存儲塊中的數(shù)據(jù)復(fù)制至校驗(yàn)失敗的密鑰記錄存儲塊,并更新第一密鑰記錄存儲塊和第二密鑰記錄存儲塊的寫密鑰記錄指針;

循環(huán)寫入模塊303,用于在收到密鑰記錄寫操作的請求時,根據(jù)更新的寫密鑰記錄指針指示的偏移地址,循環(huán)滾動向第一密鑰記錄存儲塊和第二密鑰記錄存儲塊寫入按照預(yù)設(shè)密鑰記錄格式生成的密鑰記錄。

需要說明的是,本發(fā)明實(shí)施例提供的裝置,由于與本發(fā)明方法實(shí)施例基于同一構(gòu)思,其帶來的技術(shù)效果與本發(fā)明方法實(shí)施例相同,具體內(nèi)容可參見本發(fā)明方法實(shí)施例中的敘述,此處不再贅述。

附圖3示例的校驗(yàn)?zāi)K301可包括第一讀取單元401、第一標(biāo)記單元402、crc校驗(yàn)單元403、第二標(biāo)記單元404、讀指針更新單元405和第三標(biāo)記單元406,如附圖4示例的norflash存儲密鑰記錄的裝置,其中:

第一讀取單元401,用于按照第一密鑰記錄存儲塊和第二密鑰記錄存儲塊的讀密鑰記錄指針指示的偏移地址,從第一密鑰記錄存儲塊和第二密鑰記錄存儲塊分別讀取密鑰記錄,其中,密鑰記錄包括密鑰標(biāo)識號、密鑰記錄長度信息和循環(huán)冗余校驗(yàn)碼;

第一標(biāo)記單元402,用于若讀取的密鑰記錄的密鑰標(biāo)識號無效和/或密鑰記錄長度信息無效,則對密鑰標(biāo)識號無效和/或密鑰記錄長度信息無效的密鑰記錄所在的密鑰記錄存儲塊的校驗(yàn)標(biāo)記為校驗(yàn)失??;

crc校驗(yàn)單元403,用于若密鑰記錄的密鑰標(biāo)識號和密鑰記錄長度信息有效,則校驗(yàn)密鑰記錄長度信息有效和密鑰標(biāo)識號有效且不為0的密鑰記錄的循環(huán)冗余校驗(yàn)碼;

第二標(biāo)記單元404,用于若循環(huán)冗余校驗(yàn)碼校驗(yàn)失敗,則對循環(huán)冗余校驗(yàn)碼校驗(yàn)失敗的密鑰存儲記錄所在的密鑰記錄存儲塊的校驗(yàn)標(biāo)記為校驗(yàn)失??;

讀指針更新單元405,用于若密鑰記錄長度信息有效、密鑰標(biāo)識號有效且不為0以及循環(huán)冗余校驗(yàn)碼校驗(yàn)成功,或者,若密鑰記錄長度信息有效且密鑰標(biāo)識號為0,則將讀密鑰記錄指針更新;

若密鑰記錄長度信息有效、密鑰標(biāo)識號有效且不為0以及循環(huán)冗余校驗(yàn)碼校驗(yàn)成功,或者,若密鑰記錄長度信息有效且密鑰標(biāo)識號為0,則第一讀取單元401、第一標(biāo)記單元402、crc校驗(yàn)單元403、第二標(biāo)記單元404和讀指針更新單元405依次重復(fù)各自的上述操作;

第三標(biāo)記單元406,用于若所有密鑰記錄的密鑰標(biāo)識號和密鑰記錄長度信息均有效且循環(huán)冗余校驗(yàn)碼校驗(yàn)均成功,則對所有密鑰標(biāo)識號和密鑰記錄長度信息均有效且循環(huán)冗余校驗(yàn)碼校驗(yàn)均成功的密鑰記錄所在的密鑰記錄存儲塊的校驗(yàn)標(biāo)記為校驗(yàn)成功。

附圖3示例的重整模塊302可包括第一擦除單元501、第一復(fù)制單元502、第一指針更新單元503和第二指針更新單元504,如附圖5示例的norflash存儲密鑰記錄的裝置,其中:

第一擦除單元501,用于若第一密鑰記錄存儲塊的校驗(yàn)成功并且第二密鑰記錄存儲塊的校驗(yàn)失敗,則擦除第二密鑰記錄存儲塊;

第一復(fù)制單元502,用于將第一密鑰記錄存儲塊中偏移地址從0至a’addr的內(nèi)存存儲的數(shù)據(jù)復(fù)制至第二密鑰記錄存儲塊從0開始的內(nèi)存,其中,a’addr為校驗(yàn)第一密鑰記錄存儲塊時讀密鑰記錄指針更新為pra’后指示的偏移地址;

第一指針更新單元503,用于將第二密鑰記錄存儲塊的讀密鑰記錄指針更新為pra’;

第二指針更新單元504,用于將第一密鑰記錄存儲塊和第二密鑰記錄存儲塊的寫密鑰記錄指針更新為pra’。

附圖3示例的重整模塊302可包括第二擦除單元601、第二復(fù)制單元602、第三指針更新單元603和第四指針更新單元604,如附圖6示例的norflash存儲密鑰記錄的裝置,其中:

第二擦除單元601,用于若第一密鑰記錄存儲塊的校驗(yàn)失敗并且第二密鑰記錄存儲塊的校驗(yàn)成功,則擦除第一密鑰記錄存儲塊;

第二復(fù)制單元602,用于將第二密鑰記錄存儲塊中偏移地址從0至b’addr的內(nèi)存存儲的數(shù)據(jù)復(fù)制至第一密鑰記錄存儲塊從0開始的內(nèi)存,其中,b’addr為校驗(yàn)第二密鑰記錄存儲塊時讀密鑰記錄指針更新為prb’后指示的偏移地址;

第三指針更新單元603,用于將第一密鑰記錄存儲塊的讀密鑰記錄指針更新為prb’;

第四指針更新單元604,用于將第一密鑰記錄存儲塊和第二密鑰記錄存儲塊的寫密鑰記錄指針更新為prb’。

附圖3示例的norflash存儲密鑰記錄的裝置還包括比較模塊701、第一處理模塊702和第二處理模塊703,如附圖7示例的norflash存儲密鑰記錄的裝置,其中:

比較模塊701,用于若校驗(yàn)?zāi)K301校驗(yàn)的結(jié)果為對第一密鑰記錄存儲塊和第二密鑰記錄存儲塊的校驗(yàn)成功,則比較第一密鑰記錄存儲塊中密鑰記錄的總數(shù)據(jù)長度ntotal_a和第二密鑰記錄存儲塊中密鑰記錄的總數(shù)據(jù)長度ntotal_b;

第一處理模塊702,用于若比較模塊701的比較結(jié)果為ntotal_a大于ntotal_b,則先擦除第二密鑰記錄存儲塊,再將第一密鑰記錄存儲塊中偏移地址從0至aaddr的內(nèi)存存儲的數(shù)據(jù)復(fù)制至第二密鑰記錄存儲塊從0開始的內(nèi)存、將第二密鑰記錄存儲塊的讀密鑰記錄指針更新為prka以及將第一密鑰記錄存儲塊和第二密鑰記錄存儲塊的寫密鑰記錄指針更新為prka,其中,aaddr在數(shù)值上等于prka指示的偏移地址的值,pra為設(shè)備開機(jī)前最后一次讀取第一密鑰記錄存儲塊的密鑰記錄后第一密鑰記錄存儲塊更新后的讀密鑰記錄指針;

第二處理模塊703,用于若比較模塊701的比較結(jié)果為ntotal_a小于ntotal_b,則先擦除第一密鑰記錄存儲塊,再將第二密鑰記錄存儲塊中偏移地址從0至baddr的內(nèi)存存儲的數(shù)據(jù)復(fù)制至第一密鑰記錄存儲塊從0開始的內(nèi)存、將第一密鑰記錄存儲塊的讀密鑰記錄指針更新為prkb以及將第一密鑰記錄存儲塊和第二密鑰記錄存儲塊的寫密鑰記錄指針更新為prkb,其中,baddr在數(shù)值上等于prkb指示的偏移地址的值,prkb為設(shè)備開機(jī)前最后一次讀取第二密鑰記錄存儲塊的密鑰記錄后第二密鑰記錄存儲塊更新后的讀密鑰記錄指針。

附圖3示例的循環(huán)寫入模塊303可包括生成單元801、計算單元802、第二讀取單元803、第三擦除單元804、第一寫入單元805、第五指針更新單元806、第二寫入單元807、第四擦除單元808、第三寫入單元809、第六指針更新單元810和第四寫入單元811,如附圖8示例的norflash存儲密鑰記錄的裝置,其中:

生成單元801,用于按照預(yù)設(shè)密鑰記錄格式生成密鑰記錄;

計算單元802,用于根據(jù)更新的寫密鑰記錄指針指示的偏移地址,計算生成單元801生成的密鑰記錄與第一密鑰記錄存儲塊尚存的密鑰記錄的長度之和;

第二讀取單元803,用于若生成單元801生成的密鑰記錄與第一密鑰記錄存儲塊尚存的密鑰記錄的長度之和超出了第一密鑰記錄存儲塊的容量,則從第一密鑰記錄存儲塊為0的偏移地址開始,依次讀取第一密鑰記錄存儲塊中有效密鑰記錄至隨機(jī)存取內(nèi)存;

第三擦除單元804,用于擦除第一密鑰記錄存儲塊;

第一寫入單元805,用于將從隨機(jī)存取內(nèi)存讀取的有效密鑰記錄緊湊地寫入第一記錄存儲塊中地址連續(xù)的內(nèi)存;

第五指針更新單元806,用于將第一密鑰記錄存儲塊更新的寫密鑰記錄指針的值再次更新為第一密鑰記錄存儲塊中有效密鑰記錄的長度;

第二寫入單元807,用于向再次更新的第一密鑰記錄存儲塊寫密鑰記錄指針指示的偏移地址寫入生成單元801生成的密鑰記錄;

第四擦除單元808,用于擦除第二密鑰記錄存儲塊;

第三寫入單元809,用于將從隨機(jī)存取內(nèi)存讀取的有效密鑰記錄緊湊地寫入第二密鑰記錄存儲塊中地址連續(xù)的內(nèi)存;

第六指針更新單元810,用于將更新的第二密鑰記錄存儲塊寫密鑰記錄指針再次更新為再次更新的第一密鑰記錄存儲塊寫密鑰記錄指針;

第四寫入單元811,用于向再次更新的第二密鑰記錄存儲塊寫密鑰記錄指針指示的偏移地址寫入生成單元801生成的密鑰記錄。

圖9是本發(fā)明一實(shí)施例提供的計算設(shè)備的結(jié)構(gòu)示意圖。如圖9所示,該實(shí)施例的計算設(shè)備9包括:處理器90、存儲器91以及存儲在存儲器91中并可在處理器90上運(yùn)行的計算機(jī)程序92,例如norflash存儲密鑰記錄的方法的程序。處理器90執(zhí)行計算機(jī)程序92時實(shí)現(xiàn)上述norflash存儲密鑰記錄的方法實(shí)施例中的步驟,例如圖1所示的步驟s101至s103。或者,處理器90執(zhí)行計算機(jī)程序92時實(shí)現(xiàn)上述各裝置實(shí)施例中各模塊/單元的功能,例如圖3所示校驗(yàn)?zāi)K301、重整模塊302和循環(huán)寫入模塊303的功能。

示例性的,norflash存儲密鑰記錄的方法的計算機(jī)程序92主要包括:在設(shè)備開機(jī)時對norflash中的密鑰記錄存儲塊進(jìn)行校驗(yàn),所述密鑰記錄存儲塊包括第一密鑰記錄存儲塊和第二密鑰記錄存儲塊;若所述校驗(yàn)的結(jié)果為對所述第一密鑰記錄存儲塊或第二密鑰記錄存儲塊的校驗(yàn)失敗,則將校驗(yàn)成功的密鑰記錄存儲塊中的數(shù)據(jù)復(fù)制至校驗(yàn)失敗的密鑰記錄存儲塊,并更新所述第一密鑰記錄存儲塊和第二密鑰記錄存儲塊的寫密鑰記錄指針;在收到密鑰記錄寫操作的請求時,根據(jù)所述更新的寫密鑰記錄指針指示的偏移地址,循環(huán)滾動向所述第一密鑰記錄存儲塊和第二密鑰記錄存儲塊寫入按照預(yù)設(shè)密鑰記錄格式生成的密鑰記錄。計算機(jī)程序92可以被分割成一個或多個模塊/單元,一個或者多個模塊/單元被存儲在存儲器91中,并由處理器90執(zhí)行,以完成本發(fā)明。一個或多個模塊/單元可以是能夠完成特定功能的一系列計算機(jī)程序指令段,該指令段用于描述計算機(jī)程序92在計算設(shè)備9中的執(zhí)行過程。例如,計算機(jī)程序92可以被分割成校驗(yàn)?zāi)K301、重整模塊302和循環(huán)寫入模塊303的功能(虛擬裝置中的模塊),各模塊具體功能如下:校驗(yàn)?zāi)K301,用于在設(shè)備開機(jī)時對norflash中的密鑰記錄存儲塊進(jìn)行校驗(yàn),所述密鑰記錄存儲塊包括第一密鑰記錄存儲塊和第二密鑰記錄存儲塊;重整模塊302,用于若所述校驗(yàn)?zāi)K校驗(yàn)的結(jié)果為對所述第一密鑰記錄存儲塊或第二密鑰記錄存儲塊的校驗(yàn)失敗,則將校驗(yàn)成功的密鑰記錄存儲塊中的數(shù)據(jù)復(fù)制至校驗(yàn)失敗的密鑰記錄存儲塊,并更新所述第一密鑰記錄存儲塊和第二密鑰記錄存儲塊的寫密鑰記錄指針;循環(huán)寫入模塊303,用于在收到密鑰記錄寫操作的請求時,根據(jù)所述更新的寫密鑰記錄指針指示的偏移地址,循環(huán)滾動向所述第一密鑰記錄存儲塊和第二密鑰記錄存儲塊寫入按照預(yù)設(shè)密鑰記錄格式生成的密鑰記錄。

計算設(shè)備9可以是桌上型計算機(jī)、筆記本、掌上電腦及云端服務(wù)器等計算設(shè)備。計算設(shè)備9可包括但不僅限于處理器90、存儲器91。本領(lǐng)域技術(shù)人員可以理解,圖9僅僅是計算設(shè)備9的示例,并不構(gòu)成對計算設(shè)備9的限定,可以包括比圖示更多或更少的部件,或者組合某些部件,或者不同的部件,例如終端設(shè)備還可以包括輸入輸出設(shè)備、網(wǎng)絡(luò)接入設(shè)備、總線等。

所稱處理器90可以是中央處理單元(centralprocessingunit,cpu),還可以是其他通用處理器、數(shù)字信號處理器(digitalsignalprocessor,dsp)、專用集成電路(applicationspecificintegratedcircuit,asic)、現(xiàn)成可編程門陣列(field-programmablegatearray,fpga)或者其他可編程邏輯器件、分立門或者晶體管邏輯器件、分立硬件組件等。通用處理器可以是微處理器或者該處理器也可以是任何常規(guī)的處理器等。

存儲器91可以是計算設(shè)備9的內(nèi)部存儲單元,例如計算設(shè)備9的硬盤或內(nèi)存。存儲器91也可以是計算設(shè)備9的外部存儲設(shè)備,例如計算設(shè)備9上配備的插接式硬盤,智能存儲卡(smartmediacard,smc),安全數(shù)字(securedigital,sd)卡,閃存卡(flashcard)等。進(jìn)一步地,存儲器91還可以既包括計算設(shè)備9的內(nèi)部存儲單元也包括外部存儲設(shè)備。存儲器91用于存儲計算機(jī)程序以及終端設(shè)備所需的其他程序和數(shù)據(jù)。存儲器91還可以用于暫時地存儲已經(jīng)輸出或者將要輸出的數(shù)據(jù)。

所屬領(lǐng)域的技術(shù)人員可以清楚地了解到,為了描述的方便和簡潔,僅以上述各功能單元、模塊的劃分進(jìn)行舉例說明,實(shí)際應(yīng)用中,可以根據(jù)需要而將上述功能分配由不同的功能單元、模塊完成,即將裝置的內(nèi)部結(jié)構(gòu)劃分成不同的功能單元或模塊,以完成以上描述的全部或者部分功能。實(shí)施例中的各功能單元、模塊可以集成在一個處理單元中,也可以是各個單元單獨(dú)物理存在,也可以兩個或兩個以上單元集成在一個單元中,上述集成的單元既可以采用硬件的形式實(shí)現(xiàn),也可以采用軟件功能單元的形式實(shí)現(xiàn)。另外,各功能單元、模塊的具體名稱也只是為了便于相互區(qū)分,并不用于限制本申請的保護(hù)范圍。上述系統(tǒng)中單元、模塊的具體工作過程,可以參考前述方法實(shí)施例中的對應(yīng)過程,在此不再贅述。

在上述實(shí)施例中,對各個實(shí)施例的描述都各有側(cè)重,某個實(shí)施例中沒有詳述或記載的部分,可以參見其它實(shí)施例的相關(guān)描述。

本領(lǐng)域普通技術(shù)人員可以意識到,結(jié)合本文中所公開的實(shí)施例描述的各示例的單元及算法步驟,能夠以電子硬件、或者計算機(jī)軟件和電子硬件的結(jié)合來實(shí)現(xiàn)。這些功能究竟以硬件還是軟件方式來執(zhí)行,取決于技術(shù)方案的特定應(yīng)用和設(shè)計約束條件。專業(yè)技術(shù)人員可以對每個特定的應(yīng)用來使用不同方法來實(shí)現(xiàn)所描述的功能,但是這種實(shí)現(xiàn)不應(yīng)認(rèn)為超出本發(fā)明的范圍。

在本發(fā)明所提供的實(shí)施例中,應(yīng)該理解到,所揭露的裝置/終端設(shè)備和方法,可以通過其它的方式實(shí)現(xiàn)。例如,以上所描述的裝置/終端設(shè)備實(shí)施例僅僅是示意性的,例如,模塊或單元的劃分,僅僅為一種邏輯功能劃分,實(shí)際實(shí)現(xiàn)時可以有另外的劃分方式,例如多個單元或組件可以結(jié)合或者可以集成到另一個系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點(diǎn),所顯示或討論的相互之間的耦合或直接耦合或通訊連接可以是通過一些接口,裝置或單元的間接耦合或通訊連接,可以是電性,機(jī)械或其它的形式。

作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡(luò)單元上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部單元來實(shí)現(xiàn)本實(shí)施例方案的目的。

另外,在本發(fā)明各個實(shí)施例中的各功能單元可以集成在一個處理單元中,也可以是各個單元單獨(dú)物理存在,也可以兩個或兩個以上單元集成在一個單元中。上述集成的單元既可以采用硬件的形式實(shí)現(xiàn),也可以采用軟件功能單元的形式實(shí)現(xiàn)。

集成的模塊/單元如果以軟件功能單元的形式實(shí)現(xiàn)并作為獨(dú)立的產(chǎn)品銷售或使用時,可以存儲在一個計算機(jī)可讀取存儲介質(zhì)中?;谶@樣的理解,本發(fā)明實(shí)現(xiàn)上述實(shí)施例方法中的全部或部分流程,也可以通過計算機(jī)程序來指令相關(guān)的硬件來完成,norflash存儲密鑰記錄的方法的計算機(jī)程序可存儲于一計算機(jī)可讀存儲介質(zhì)中,該計算機(jī)程序在被處理器執(zhí)行時,可實(shí)現(xiàn)上述各個方法實(shí)施例的步驟,即,在設(shè)備開機(jī)時對norflash中的密鑰記錄存儲塊進(jìn)行校驗(yàn),所述密鑰記錄存儲塊包括第一密鑰記錄存儲塊和第二密鑰記錄存儲塊;若所述校驗(yàn)的結(jié)果為對所述第一密鑰記錄存儲塊或第二密鑰記錄存儲塊的校驗(yàn)失敗,則將校驗(yàn)成功的密鑰記錄存儲塊中的數(shù)據(jù)復(fù)制至校驗(yàn)失敗的密鑰記錄存儲塊,并更新所述第一密鑰記錄存儲塊和第二密鑰記錄存儲塊的寫密鑰記錄指針;在收到密鑰記錄寫操作的請求時,根據(jù)所述更新的寫密鑰記錄指針指示的偏移地址,循環(huán)滾動向所述第一密鑰記錄存儲塊和第二密鑰記錄存儲塊寫入按照預(yù)設(shè)密鑰記錄格式生成的密鑰記錄。其中,計算機(jī)程序包括計算機(jī)程序代碼,計算機(jī)程序代碼可以為源代碼形式、對象代碼形式、可執(zhí)行文件或某些中間形式等。計算機(jī)可讀介質(zhì)可以包括:能夠攜帶計算機(jī)程序代碼的任何實(shí)體或裝置、記錄介質(zhì)、u盤、移動硬盤、磁碟、光盤、計算機(jī)存儲器、只讀存儲器(rom,read-onlymemory)、隨機(jī)存取存儲器(ram,randomaccessmemory)、電載波信號、電信信號以及軟件分發(fā)介質(zhì)等。需要說明的是,計算機(jī)可讀介質(zhì)包含的內(nèi)容可以根據(jù)司法管轄區(qū)內(nèi)立法和專利實(shí)踐的要求進(jìn)行適當(dāng)?shù)脑鰷p,例如在某些司法管轄區(qū),根據(jù)立法和專利實(shí)踐,計算機(jī)可讀介質(zhì)不包括電載波信號和電信信號。以上實(shí)施例僅用以說明本發(fā)明的技術(shù)方案,而非對其限制;盡管參照前述實(shí)施例對本發(fā)明進(jìn)行了詳細(xì)的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對其中部分技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實(shí)施例技術(shù)方案的精神和范圍,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。

當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1