本發(fā)明涉及加密技術(shù)領(lǐng)域,特別涉及一種數(shù)據(jù)加密方法及裝置。
背景技術(shù):
為了保證數(shù)據(jù)的安全性,通常需要對(duì)數(shù)據(jù)進(jìn)行加密。
常見(jiàn)的一種加密方式為:首先,在設(shè)備的內(nèi)存中申請(qǐng)兩段內(nèi)存,其中一段內(nèi)存用于存儲(chǔ)明文,該段內(nèi)存記為第一內(nèi)存,其中另一段內(nèi)存用于存儲(chǔ)密文,該段內(nèi)存記為第二內(nèi)存;然后,從第一內(nèi)存中讀取明文數(shù)據(jù),按照預(yù)定的加密方式對(duì)讀取的明文數(shù)據(jù)進(jìn)行加密,將加密后的數(shù)據(jù)密文存儲(chǔ)至第二內(nèi)存中。
在實(shí)現(xiàn)本發(fā)明的過(guò)程中,發(fā)明人發(fā)現(xiàn)相關(guān)技術(shù)至少存在以下問(wèn)題:由于上述加密方式中需要申請(qǐng)兩段內(nèi)存,因此并不適用于內(nèi)存比較小的設(shè)備,比如內(nèi)容一般僅為256個(gè)字節(jié)的低功耗的嵌入式設(shè)備。
技術(shù)實(shí)現(xiàn)要素:
為了解決相關(guān)技術(shù)中因在加密時(shí)需要申請(qǐng)兩段內(nèi)存,并不適用于內(nèi)存比較小的設(shè)備的問(wèn)題,本發(fā)明實(shí)施例提供了一種數(shù)據(jù)加密方法及裝置。所述技術(shù)方案如下:
第一方面,提供了一種數(shù)據(jù)加密方法,所述方法包括:
按照預(yù)定方式為需要加密的明文數(shù)據(jù)申請(qǐng)一段內(nèi)存,所述內(nèi)存包括位于所述內(nèi)存頭部的第一區(qū)域和位于所述內(nèi)存尾部的第二區(qū)域,所述內(nèi)存的大小等于對(duì)所述明文數(shù)據(jù)加密后得到的密文數(shù)據(jù)的大小;
將所述明文數(shù)據(jù)寫(xiě)入所述第二區(qū)域;
依序從所述第二區(qū)域中未被讀取的明文數(shù)據(jù)中讀取預(yù)定大小的明文數(shù)據(jù)塊,按照預(yù)定加密算法對(duì)讀取的所述明文數(shù)據(jù)塊進(jìn)行加密,得到密文數(shù)據(jù)塊;
將所述密文數(shù)據(jù)塊寫(xiě)入所述第一區(qū)域,并在所述第一區(qū)域?qū)憹M后,繼續(xù)寫(xiě)入至所述第二區(qū)域。
上述技術(shù)方案帶來(lái)的有益效果是:通過(guò)僅申請(qǐng)一段小于明文數(shù)據(jù)和對(duì)該明文數(shù)據(jù)進(jìn)行加密后的得到的密文數(shù)據(jù)之和的內(nèi)存,并先將明文數(shù)據(jù)寫(xiě)入該內(nèi)存,然后依序讀取明文數(shù)據(jù)塊,對(duì)讀取的明文數(shù)據(jù)塊進(jìn)行加密,得到加密后的密文數(shù)據(jù)塊,將得到的密文數(shù)據(jù)塊寫(xiě)入該內(nèi)存,由于在加密之前,可以將明文數(shù)據(jù)存儲(chǔ)至內(nèi)存,且存儲(chǔ)的明文數(shù)據(jù)并不影響密文數(shù)據(jù)的存儲(chǔ),因此減少了內(nèi)存開(kāi)銷(xiāo),保證了內(nèi)存比較小的低功耗嵌入式設(shè)備進(jìn)行加密存儲(chǔ)。
可選的,所述按照預(yù)定方式為需要加密的明文數(shù)據(jù)申請(qǐng)一段內(nèi)存,包括:
預(yù)計(jì)按照所述預(yù)定加密算法對(duì)所述明文數(shù)據(jù)進(jìn)行加密后得到的密文數(shù)據(jù)的大小,所述密文數(shù)據(jù)包括與所述明文數(shù)據(jù)對(duì)應(yīng)的數(shù)據(jù)和預(yù)定的描述信息;
申請(qǐng)大小等于所述密文數(shù)據(jù)的大小的內(nèi)存。
上述技術(shù)方案帶來(lái)的有益效果是:通過(guò)預(yù)先根據(jù)預(yù)定加密算計(jì)計(jì)算出對(duì)明文數(shù)據(jù)進(jìn)行加密后得到的密文數(shù)據(jù)的大小,確定內(nèi)存的大小,也即該內(nèi)存只需要設(shè)置可以存放密文數(shù)據(jù)的大小即可,從而在保證可以對(duì)明文數(shù)據(jù)進(jìn)行加密的同時(shí),盡可能的降低申請(qǐng)的內(nèi)存的空間。
可選的,所述將所述密文數(shù)據(jù)塊寫(xiě)入所述第一區(qū)域,包括:
從所述第一區(qū)域中未被寫(xiě)入數(shù)據(jù)的起始位置,依序?qū)懭爰用艿玫降拿芪臄?shù)據(jù)塊。
上述技術(shù)方案帶來(lái)的有益效果是:通過(guò)在第一區(qū)域中未被寫(xiě)入數(shù)據(jù)的起始位置,依序?qū)懭爰用艿玫降拿芪臄?shù)據(jù)塊,可以保證密文數(shù)據(jù)的順序?qū)懭?,避免了覆蓋已經(jīng)寫(xiě)入的密文數(shù)據(jù)以及尚未被加密的明文數(shù)據(jù)的情況,使得對(duì)明文數(shù)據(jù)的加密和對(duì)密文數(shù)據(jù)的正確讀取提供了可能性。
可選的,所述將所述密文數(shù)據(jù)塊寫(xiě)入所述第一區(qū)域,并在所述第一區(qū)域?qū)憹M后,繼續(xù)寫(xiě)入至所述第二區(qū)域,包括:
檢測(cè)所述第一區(qū)域是否被寫(xiě)滿;
若所述第一區(qū)域被寫(xiě)滿,則從所述第二區(qū)域的起始位置,依次覆蓋寫(xiě)入加密得到的密文數(shù)據(jù)塊;
若所述第一區(qū)域未被寫(xiě)滿,則將所述密文數(shù)據(jù)塊寫(xiě)入所述第一區(qū)域。
上述技術(shù)方案帶來(lái)的有益效果是:通過(guò)在第一區(qū)域被寫(xiě)滿后,從第二區(qū)域的起始位置,依次覆蓋寫(xiě)入加密得到的密文數(shù)據(jù)塊;由于第二區(qū)域的起始位置所存儲(chǔ)的明文數(shù)據(jù)已經(jīng)被讀取且被加密過(guò),因此這些明文數(shù)據(jù)已經(jīng)沒(méi)有意義, 此時(shí)則可以將密文數(shù)據(jù)覆蓋這些明文數(shù)據(jù),這樣,前期用于存儲(chǔ)明文數(shù)據(jù)的第二區(qū)域最終會(huì)被密文數(shù)據(jù)進(jìn)行覆蓋,從而使得第二區(qū)域被明文數(shù)據(jù)和密文數(shù)據(jù)重復(fù)利用,因此為盡可能的降低數(shù)據(jù)對(duì)內(nèi)存的占用提供了可能性。
可選的,所述方法還包括:
當(dāng)所有明文數(shù)據(jù)均被加密,且加密得到的所有密文數(shù)據(jù)均被寫(xiě)入所述內(nèi)存后,則在所述第二區(qū)域未被密文數(shù)據(jù)覆蓋的區(qū)域,覆蓋寫(xiě)入用于所述描述信息。
上述技術(shù)方案帶來(lái)的有益效果是:當(dāng)明文數(shù)據(jù)全部被加密后,內(nèi)存中存儲(chǔ)的明文數(shù)據(jù)則不具有存在的意義,此時(shí)可以將描述信息覆蓋寫(xiě)入目前用于存儲(chǔ)明文數(shù)據(jù)的區(qū)域,此時(shí),用于存儲(chǔ)密文數(shù)據(jù)的區(qū)域以及用于存儲(chǔ)描述信息的區(qū)域即為整個(gè)申請(qǐng)的內(nèi)存,描述信息的存入可以保證密文數(shù)據(jù)被讀取時(shí)進(jìn)行相關(guān)的操作。
可選的,所述方法還包括:
當(dāng)所述明文數(shù)據(jù)全部被加密完,且加密后的所有密文數(shù)據(jù)均被讀取后,則釋放申請(qǐng)的所述內(nèi)存。
上述技術(shù)方案帶來(lái)的有益效果是:通過(guò)在明文數(shù)據(jù)全部被加密完,且加密后的所有密文數(shù)據(jù)均被讀取后,釋放申請(qǐng)的該內(nèi)存,可以有效減少對(duì)內(nèi)存的占用時(shí)長(zhǎng),以便于設(shè)備中的其他業(yè)務(wù)可以繼續(xù)使用這些內(nèi)存,提高了設(shè)備的工作效率。
第二方面,提供了一種數(shù)據(jù)加密裝置,所述裝置包括:
內(nèi)存申請(qǐng)模塊,用于按照預(yù)定方式為需要加密的明文數(shù)據(jù)申請(qǐng)一段內(nèi)存,所述內(nèi)存包括位于所述內(nèi)存頭部的第一區(qū)域和位于所述內(nèi)存尾部的第二區(qū)域,所述內(nèi)存的大小等于對(duì)所述明文數(shù)據(jù)加密后得到的密文數(shù)據(jù)的大??;
第一寫(xiě)入模塊,用于將所述明文數(shù)據(jù)寫(xiě)入所述第二區(qū)域;
數(shù)據(jù)加密模塊,用于依序從所述第二區(qū)域中未被讀取的明文數(shù)據(jù)中讀取預(yù)定大小的明文數(shù)據(jù)塊,按照預(yù)定加密算法對(duì)讀取的所述明文數(shù)據(jù)塊進(jìn)行加密,得到密文數(shù)據(jù)塊;
第二寫(xiě)入模塊,用于將所述數(shù)據(jù)加密模塊加密得到的所述密文數(shù)據(jù)塊寫(xiě)入所述第一區(qū)域,并在所述第一區(qū)域?qū)憹M后,繼續(xù)寫(xiě)入至所述第二區(qū)域。
上述技術(shù)方案帶來(lái)的有益效果是:通過(guò)僅申請(qǐng)一段小于明文數(shù)據(jù)和對(duì)該明文數(shù)據(jù)進(jìn)行加密后的得到的密文數(shù)據(jù)之和的內(nèi)存,并先將明文數(shù)據(jù)寫(xiě)入該內(nèi)存, 然后依序讀取明文數(shù)據(jù)塊,對(duì)讀取的明文數(shù)據(jù)塊進(jìn)行加密,得到加密后的密文數(shù)據(jù)塊,將得到的密文數(shù)據(jù)塊寫(xiě)入該內(nèi)存,由于在加密之前,可以將明文數(shù)據(jù)存儲(chǔ)至內(nèi)存,且存儲(chǔ)的明文數(shù)據(jù)并不影響密文數(shù)據(jù)的存儲(chǔ),因此減少了內(nèi)存開(kāi)銷(xiāo),保證了內(nèi)存比較小的低功耗嵌入式設(shè)備進(jìn)行加密存儲(chǔ)。
可選的,所述內(nèi)存申請(qǐng)模塊,包括:
大小預(yù)計(jì)單元,用于預(yù)計(jì)按照所述預(yù)定加密算法對(duì)所述明文數(shù)據(jù)進(jìn)行加密后得到的密文數(shù)據(jù)的大小,所述密文數(shù)據(jù)包括與所述明文數(shù)據(jù)對(duì)應(yīng)的數(shù)據(jù)和預(yù)定的描述信息;
內(nèi)存申請(qǐng)單元,用于申請(qǐng)大小等于所述大小預(yù)計(jì)單元預(yù)計(jì)出的所述密文數(shù)據(jù)的大小的內(nèi)存。
上述技術(shù)方案帶來(lái)的有益效果是:通過(guò)預(yù)先根據(jù)預(yù)定加密算計(jì)計(jì)算出對(duì)明文數(shù)據(jù)進(jìn)行加密后得到的密文數(shù)據(jù)的大小,確定內(nèi)存的大小,也即該內(nèi)存只需要設(shè)置可以存放密文數(shù)據(jù)以及用于描述密文數(shù)據(jù)的描述信息中的前一種或全部?jī)煞N的大小即可,從而在保證可以對(duì)明文數(shù)據(jù)進(jìn)行加密的同時(shí),盡可能的降低申請(qǐng)的內(nèi)存的空間。
可選的,所述第二寫(xiě)入模塊,還用于:
從所述第一區(qū)域中未被寫(xiě)入數(shù)據(jù)的起始位置,依序?qū)懭爰用艿玫降拿芪臄?shù)據(jù)塊。
上述技術(shù)方案帶來(lái)的有益效果是:通過(guò)在第一區(qū)域中未被寫(xiě)入數(shù)據(jù)的起始位置,依序?qū)懭爰用艿玫降拿芪臄?shù)據(jù)塊,可以保證密文數(shù)據(jù)的順序?qū)懭?,避免了覆蓋已經(jīng)寫(xiě)入的密文數(shù)據(jù)以及尚未被加密的明文數(shù)據(jù)的情況,使得對(duì)明文數(shù)據(jù)的加密和對(duì)密文數(shù)據(jù)的正確讀取提供了可能性。
可選的,所述第二寫(xiě)入模塊,包括:
檢測(cè)單元,用于檢測(cè)所述第一區(qū)域是否被寫(xiě)滿;
第一寫(xiě)入單元,用于在所述檢測(cè)單元檢測(cè)到所述第一區(qū)域被寫(xiě)滿時(shí),從所述第二區(qū)域的起始位置,依次覆蓋寫(xiě)入加密得到的密文數(shù)據(jù)塊;
第二寫(xiě)入單元,還用于在所述檢測(cè)單元檢測(cè)到所述第一區(qū)域未被寫(xiě)滿時(shí),將所述密文數(shù)據(jù)塊寫(xiě)入所述第一區(qū)域。
上述技術(shù)方案帶來(lái)的有益效果是:通過(guò)在第一區(qū)域被寫(xiě)滿后,從第二區(qū)域的起始位置,依次覆蓋寫(xiě)入加密得到的密文數(shù)據(jù)塊;由于第二區(qū)域的起始位置 所存儲(chǔ)的明文數(shù)據(jù)已經(jīng)被讀取且被加密過(guò),因此這些明文數(shù)據(jù)已經(jīng)沒(méi)有意義,此時(shí)則可以將密文數(shù)據(jù)覆蓋這些明文數(shù)據(jù),這樣,前期用于存儲(chǔ)明文數(shù)據(jù)的第二區(qū)域最終會(huì)被密文數(shù)據(jù)進(jìn)行覆蓋,從而使得第二區(qū)域被明文數(shù)據(jù)和密文數(shù)據(jù)重復(fù)利用,因此為盡可能的降低數(shù)據(jù)對(duì)內(nèi)存的占用提供了可能性。
可選的,所述裝置還包括:
描述信息寫(xiě)入模塊,用于當(dāng)所有明文數(shù)據(jù)均被加密,且加密得到的所有密文數(shù)據(jù)均被寫(xiě)入所述內(nèi)存后,則在所述第二區(qū)域未被密文數(shù)據(jù)覆蓋的區(qū)域,覆蓋寫(xiě)入用于描述所述密文數(shù)據(jù)的描述信息。
上述技術(shù)方案帶來(lái)的有益效果是:當(dāng)明文數(shù)據(jù)全部被加密后,內(nèi)存中存儲(chǔ)的明文數(shù)據(jù)則不具有存在的意義,此時(shí)可以將描述信息覆蓋寫(xiě)入目前用于存儲(chǔ)明文數(shù)據(jù)的區(qū)域,此時(shí),用于存儲(chǔ)密文數(shù)據(jù)的區(qū)域以及用于存儲(chǔ)描述信息的區(qū)域即為整個(gè)申請(qǐng)的內(nèi)存,描述信息的存入可以保證密文數(shù)據(jù)被讀取時(shí)進(jìn)行相關(guān)的操作。
可選的,所述裝置還包括:
內(nèi)存釋放模塊,用于當(dāng)所述明文數(shù)據(jù)全部被加密完,且加密后的所有密文數(shù)據(jù)均被讀取后,則釋放申請(qǐng)的所述內(nèi)存。
上述技術(shù)方案帶來(lái)的有益效果是:通過(guò)在明文數(shù)據(jù)全部被加密完,且加密后的所有密文數(shù)據(jù)均被讀取后,釋放申請(qǐng)的該內(nèi)存,可以有效減少對(duì)內(nèi)存的占用時(shí)長(zhǎng),以便于設(shè)備中的其他業(yè)務(wù)可以繼續(xù)使用這些內(nèi)存,提高了設(shè)備的工作效率。
附圖說(shuō)明
為了更清楚地說(shuō)明本發(fā)明實(shí)施例中的技術(shù)方案,下面將對(duì)實(shí)施例描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1是本發(fā)明一個(gè)實(shí)施例中提供的數(shù)據(jù)加密方法的方法流程圖;
圖2A是本發(fā)明另一個(gè)實(shí)施例中提供的數(shù)據(jù)加密方法的方法流程圖;
圖2B是本發(fā)明一個(gè)實(shí)施例中提供的按照預(yù)定方式為需要加密的明文數(shù)據(jù)申請(qǐng)一段內(nèi)存的流程圖;
圖2C是本發(fā)明一個(gè)實(shí)施例中提供的申請(qǐng)到的內(nèi)存在存儲(chǔ)明文數(shù)據(jù)和密文數(shù)據(jù)時(shí)的區(qū)域分配示意圖;
圖2D是本發(fā)明一個(gè)實(shí)施例中提供的向第一區(qū)域?qū)懭朊芪臄?shù)據(jù)塊的示意圖;
圖2E是本發(fā)明一個(gè)實(shí)施例中提供的向第二區(qū)域?qū)懭朊芪臄?shù)據(jù)塊的示意圖;
圖3是本發(fā)明一個(gè)實(shí)施例中提供的數(shù)據(jù)加密裝置的結(jié)構(gòu)示意圖;
圖4是本發(fā)明另一個(gè)實(shí)施例中提供的數(shù)據(jù)加密裝置的結(jié)構(gòu)示意圖。
具體實(shí)施方式
為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖對(duì)本發(fā)明實(shí)施方式作進(jìn)一步地詳細(xì)描述。
圖1是本發(fā)明一個(gè)實(shí)施例中提供的數(shù)據(jù)加密方法的方法流程圖。該數(shù)據(jù)加密方法可以應(yīng)用于低功耗的嵌入式設(shè)備中,這里所講的低功耗嵌入式設(shè)備為內(nèi)存非常小,對(duì)內(nèi)存的使用要求非常高的設(shè)備。該數(shù)據(jù)加密方法可以包括:
步驟101,按照預(yù)定方式為需要加密的明文數(shù)據(jù)申請(qǐng)一段內(nèi)存,該內(nèi)存包括位于該內(nèi)存頭部的第一區(qū)域和位于該內(nèi)存尾部的第二區(qū)域,該內(nèi)存的大小等于對(duì)該明文數(shù)據(jù)加密后得到的密文數(shù)據(jù)的大小。
步驟102,將該明文數(shù)據(jù)寫(xiě)入該第二區(qū)域。
步驟103,依序從該第二區(qū)域中未被讀取的明文數(shù)據(jù)中讀取預(yù)定大小的明文數(shù)據(jù)塊,按照預(yù)定加密算法對(duì)讀取的該明文數(shù)據(jù)塊進(jìn)行加密,得到密文數(shù)據(jù)塊。
步驟104,將該密文數(shù)據(jù)塊寫(xiě)入該第一區(qū)域,并在該第一區(qū)域?qū)憹M后,繼續(xù)寫(xiě)入至該第二區(qū)域。
綜上所述,本發(fā)明實(shí)施例中提供的數(shù)據(jù)加密方法,通過(guò)僅申請(qǐng)一段小于明文數(shù)據(jù)和對(duì)該明文數(shù)據(jù)進(jìn)行加密后的得到的密文數(shù)據(jù)之和的內(nèi)存,并先將明文數(shù)據(jù)寫(xiě)入該內(nèi)存,然后依序讀取明文數(shù)據(jù)塊,對(duì)讀取的明文數(shù)據(jù)塊進(jìn)行加密,得到加密后的密文數(shù)據(jù)塊,將得到的密文數(shù)據(jù)塊寫(xiě)入該內(nèi)存,由于在加密之前,可以將明文數(shù)據(jù)存儲(chǔ)至內(nèi)存,且存儲(chǔ)的明文數(shù)據(jù)并不影響密文數(shù)據(jù)的存儲(chǔ),因此減少了內(nèi)存開(kāi)銷(xiāo),保證了內(nèi)存比較小的低功耗嵌入式設(shè)備進(jìn)行加密存儲(chǔ)。
圖2A是本發(fā)明另一個(gè)實(shí)施例中提供的數(shù)據(jù)加密方法的方法流程圖。該數(shù)據(jù) 加密方法可以應(yīng)用于低功耗設(shè)備中,這里所講的低功耗設(shè)備為內(nèi)存非常小,對(duì)內(nèi)存的使用要求非常高的設(shè)備,比如低功耗的嵌入式設(shè)備。該數(shù)據(jù)加密方法可以包括:
步驟201,按照預(yù)定方式為需要加密的明文數(shù)據(jù)申請(qǐng)一段內(nèi)存,該內(nèi)存包括位于該內(nèi)存頭部的第一區(qū)域和位于該內(nèi)存尾部的第二區(qū)域,該內(nèi)存的大小等于對(duì)該明文數(shù)據(jù)加密后得到的密文數(shù)據(jù)的大小。
在實(shí)際應(yīng)用中,低功耗嵌入式設(shè)備每為一段明文數(shù)據(jù)進(jìn)行加密,均會(huì)根據(jù)該段明文數(shù)據(jù)的字節(jié)數(shù),申請(qǐng)一段內(nèi)存。
一般來(lái)講,低功耗設(shè)備的內(nèi)存通常非常小,比如僅為256個(gè)字節(jié),因此為了盡可能的降低加密時(shí)對(duì)內(nèi)存的占用,本發(fā)明各個(gè)實(shí)施例在為需要加密的明文數(shù)據(jù)進(jìn)行加密時(shí),僅申請(qǐng)一端內(nèi)存,且申請(qǐng)的內(nèi)存的大小等于對(duì)該明文數(shù)據(jù)加密后得到的密文數(shù)據(jù)的大小。
相較于相關(guān)技術(shù)中,需要申請(qǐng)兩段內(nèi)存,其中一段內(nèi)存用于存儲(chǔ)需要加密的明文數(shù)據(jù),另一段內(nèi)存用于存儲(chǔ)對(duì)該明文數(shù)據(jù)進(jìn)行加密后的密文數(shù)據(jù),這里的內(nèi)存大小顯示小于相關(guān)技術(shù)中的這兩段內(nèi)存之和,因此節(jié)省了對(duì)內(nèi)存的占用。
為了便于在申請(qǐng)的內(nèi)存中有序的寫(xiě)入明文數(shù)據(jù)以及生成的密文數(shù)據(jù),通常可以將內(nèi)存設(shè)置為兩個(gè)區(qū)域,也即申請(qǐng)的內(nèi)容可以包括位于該內(nèi)存頭部的第一區(qū)域和位于該內(nèi)存尾部的第二區(qū)域。
可選的,第一區(qū)域的結(jié)束位置的下一個(gè)位置為第二區(qū)域的起始位置。
在一種可能的實(shí)現(xiàn)方式中,可以先預(yù)算下內(nèi)存的大小,然后根據(jù)預(yù)算的大小申請(qǐng)內(nèi)存,具體可以參見(jiàn)圖2B所示,其是本發(fā)明一個(gè)實(shí)施例中提供的按照預(yù)定方式為需要加密的明文數(shù)據(jù)申請(qǐng)一段內(nèi)存的流程圖。在圖2B中,低功耗設(shè)備在按照預(yù)定方式為需要加密的明文數(shù)據(jù)申請(qǐng)一段內(nèi)存,可以包括如下步驟:
步驟201a,預(yù)計(jì)按照預(yù)定加密算法對(duì)該明文數(shù)據(jù)進(jìn)行加密后得到的密文數(shù)據(jù)的大小,該密文數(shù)據(jù)包括與明文數(shù)據(jù)對(duì)應(yīng)的數(shù)據(jù)和預(yù)定的描述信息。
這里的預(yù)定加密算法是低功耗設(shè)備對(duì)明文數(shù)據(jù)進(jìn)行加密的算法,該預(yù)定加密算法通常由對(duì)明文數(shù)據(jù)的加密要求來(lái)決定,本實(shí)施例不對(duì)預(yù)定加密算法的方式進(jìn)行限定。
一般來(lái)講,對(duì)明文數(shù)據(jù)加密后得到的密文數(shù)據(jù),其占用的字節(jié)通常大于對(duì)應(yīng)的明文數(shù)據(jù)所占用的字節(jié),因此,在為申請(qǐng)內(nèi)存時(shí),可以先預(yù)算處密文數(shù)據(jù) 所占用的字節(jié),然后以密文數(shù)據(jù)所占用的字節(jié)來(lái)確定需要申請(qǐng)的內(nèi)存。
通常,為了保證密文數(shù)據(jù)的接收端能夠得知密文數(shù)據(jù)的加密方式,以便對(duì)接收到的密文數(shù)據(jù)進(jìn)行解密,低功耗設(shè)備通常還會(huì)在申請(qǐng)的內(nèi)存中寫(xiě)入加密算法等描述信息,以便于將內(nèi)存中讀取的描述信息發(fā)送至密文數(shù)據(jù)的接收端。這里所講的描述信息可以為用于描述對(duì)密文數(shù)據(jù)進(jìn)行加密的加密方式的描述信息,也可以為用于描述所有密文數(shù)據(jù)所占用字節(jié)的信息等,本實(shí)施例不對(duì)描述信息的具體內(nèi)容進(jìn)行限定。
一般來(lái)講,這些描述信息等均作為密文數(shù)據(jù)的一部分,也即密文數(shù)據(jù)除了包括對(duì)明文數(shù)據(jù)進(jìn)行加密后的數(shù)據(jù),還包括其他描述信息。
因此在申請(qǐng)內(nèi)存時(shí),通常還需要考慮到用于描述該密文數(shù)據(jù)的描述信息所占用的大小,這里的描述信息通常為8bit-10bit。
步驟201b,申請(qǐng)大小等于該密文數(shù)據(jù)的大小的內(nèi)存。
為了盡可能降低對(duì)內(nèi)存的占用,且考慮到密文數(shù)據(jù)可以依序根據(jù)明文數(shù)據(jù)進(jìn)行加密,因此在初始化階段,密文數(shù)據(jù)可以不占用內(nèi)存,隨著密文數(shù)據(jù)的生成,密文數(shù)據(jù)開(kāi)始逐步占用內(nèi)存。因此,在申請(qǐng)內(nèi)存時(shí),申請(qǐng)大小等于該密文數(shù)據(jù)的大小的內(nèi)存。
一般的,內(nèi)存中的第二區(qū)域一般設(shè)置為明文數(shù)據(jù)的大小??蛇x的,從內(nèi)存的尾部位置向前移位預(yù)定大小,指向第二區(qū)域的起始位置,這里所講的預(yù)定大小即為明文數(shù)據(jù)的大小。
可選的,請(qǐng)參見(jiàn)圖2C所示,其是根據(jù)本發(fā)明一個(gè)實(shí)施例中提供的申請(qǐng)到的內(nèi)存在存儲(chǔ)明文數(shù)據(jù)和密文數(shù)據(jù)時(shí)的區(qū)域分配示意圖,在圖2C中,申請(qǐng)的內(nèi)存包括第一區(qū)域22和第二區(qū)域24,其中第二區(qū)域24的大小等于明文數(shù)據(jù)所占用的字節(jié)。
一般的,對(duì)明文數(shù)據(jù)加密后得到的密文數(shù)據(jù)通常是大于該明文數(shù)據(jù)的,因此在申請(qǐng)大小等于密文數(shù)據(jù)的大小的內(nèi)存時(shí),第二區(qū)域顯示可以用于存儲(chǔ)全部的明文數(shù)據(jù)。
步驟202,將該明文數(shù)據(jù)寫(xiě)入該第二區(qū)域。
在將該明文數(shù)據(jù)寫(xiě)入該第二區(qū)域時(shí),可以從第二區(qū)域的起始位置,依次將明文數(shù)據(jù)寫(xiě)入第二區(qū)域。
可選的,在將明文數(shù)據(jù)寫(xiě)入該第二區(qū)域時(shí),可以設(shè)置第一寫(xiě)入指針,該第 一寫(xiě)入指針的起始位置為第二區(qū)域的起始位置,在寫(xiě)入明文數(shù)據(jù)的過(guò)程中,在每寫(xiě)入一個(gè)字節(jié),該第一寫(xiě)入指針做指示的位置加1,直到該第一寫(xiě)入指針指向第二區(qū)域的結(jié)束位置,完成明文數(shù)據(jù)的寫(xiě)入。
步驟203,依序從該第二區(qū)域中未被讀取的明文數(shù)據(jù)中讀取預(yù)定大小的明文數(shù)據(jù)塊,按照預(yù)定加密算法對(duì)讀取的該明文數(shù)據(jù)塊進(jìn)行加密,得到密文數(shù)據(jù)塊。
當(dāng)明文數(shù)據(jù)全部寫(xiě)入第二區(qū)域后,開(kāi)始對(duì)明文數(shù)據(jù)進(jìn)行加密,此時(shí)可以從第二區(qū)域的起始位置依序讀取明文數(shù)據(jù),一般的,在讀取明文數(shù)據(jù)時(shí),可以按照預(yù)定大小讀取明文數(shù)據(jù),將具有預(yù)定大小的明文數(shù)據(jù)記為明文數(shù)據(jù)塊。
每讀取出明文數(shù)據(jù)塊,則按照預(yù)定加密算法對(duì)讀取的明文數(shù)據(jù)塊進(jìn)行加密,得到加密后的密文數(shù)據(jù),將一個(gè)預(yù)定大小的明文數(shù)據(jù)加密后的密文數(shù)據(jù)記為密文數(shù)據(jù)塊。
可選的,在將從該第二區(qū)域讀取明文數(shù)據(jù)塊時(shí),可以設(shè)置第一讀取指針,該第一讀取指針的起始位置為第二區(qū)域的起始位置,在讀取明文數(shù)據(jù)的過(guò)程中,在每讀取一個(gè)字節(jié),該第一讀取指針做指示的位置加1,直到該第一讀取指針移動(dòng)了預(yù)定大小的字節(jié),完成對(duì)一個(gè)明文數(shù)據(jù)塊的讀取。
為了有序讀取明文數(shù)據(jù),避免遺漏明文數(shù)據(jù),可以依序從該第二區(qū)域中未被讀取的明文數(shù)據(jù)中讀取預(yù)定大小的明文數(shù)據(jù)塊,按照預(yù)定加密算法對(duì)讀取的該明文數(shù)據(jù)塊進(jìn)行加密,得到密文數(shù)據(jù)塊。
步驟204,檢測(cè)該第一區(qū)域是否被寫(xiě)滿。
當(dāng)?shù)玫矫芪臄?shù)據(jù)塊之后,需要將密文數(shù)據(jù)塊寫(xiě)入第一區(qū)域,但由于內(nèi)存是按照所有密文數(shù)據(jù)所占用的內(nèi)存申請(qǐng)的,且明文數(shù)據(jù)已經(jīng)占用了內(nèi)存中的第二區(qū)域,因此,在寫(xiě)入部分密文數(shù)據(jù)之后,第一區(qū)域可能已經(jīng)被寫(xiě)滿。因此,在得到密文數(shù)據(jù)塊之后,需要先檢測(cè)該第一區(qū)域是否已經(jīng)被寫(xiě)滿。
顯然,在每寫(xiě)入密文數(shù)據(jù)塊中的一個(gè)字節(jié),均可以檢測(cè)該第一區(qū)域是否被寫(xiě)滿。
步驟205,若該第一區(qū)域未被寫(xiě)滿,則將該密文數(shù)據(jù)塊寫(xiě)入該第一區(qū)域。
若該第一區(qū)域未被寫(xiě)滿,則可以將得到的密文數(shù)據(jù)塊寫(xiě)入該第一區(qū)域,低功耗設(shè)備在將密文數(shù)據(jù)塊寫(xiě)入該第一區(qū)域時(shí),為了避免在后得到的密文數(shù)據(jù)塊覆蓋了在前寫(xiě)入的密文數(shù)據(jù)塊,則需要從該第一區(qū)域中未被寫(xiě)入數(shù)據(jù)的起始位置,依序?qū)懭爰用艿玫降拿芪臄?shù)據(jù)塊。
可選的,在將密文數(shù)據(jù)寫(xiě)入該第一區(qū)域時(shí),可以設(shè)置第二寫(xiě)入指針,該第二寫(xiě)入指針的起始位置為第一區(qū)域的起始位置,在寫(xiě)入密文數(shù)據(jù)的過(guò)程中,在每寫(xiě)入一個(gè)字節(jié),該第二寫(xiě)入指針做指示的位置加1。
在檢測(cè)該第一區(qū)域是否被寫(xiě)滿時(shí),可以檢測(cè)該第二寫(xiě)入指針是否指向第一區(qū)域的結(jié)束位置,若第二寫(xiě)入指針正指向第一區(qū)域的結(jié)束位置,則表明第一區(qū)域已被寫(xiě)滿,當(dāng)?shù)诙?xiě)入指針指向第一區(qū)域結(jié)束位置之前的位置,則表明第一區(qū)域尚未被寫(xiě)滿。
請(qǐng)參見(jiàn)圖2D所示,其是本發(fā)明一個(gè)實(shí)施例中提供的向第一區(qū)域?qū)懭朊芪臄?shù)據(jù)塊的示意圖,從圖2D中的第二區(qū)域24利用第一讀取指針P1讀取出預(yù)定大小的明文數(shù)據(jù)塊26,對(duì)讀取出的明文數(shù)據(jù)塊26進(jìn)行加密,得到密文數(shù)據(jù)塊28,利用第二寫(xiě)入指針P2將得到的密文數(shù)據(jù)塊28寫(xiě)入第一區(qū)域22中,在寫(xiě)入第一區(qū)域22時(shí),從該第一區(qū)域22中未被寫(xiě)入數(shù)據(jù)的起始位置29處(即在寫(xiě)入密文數(shù)據(jù)塊28前,第二寫(xiě)入指針P2所指向的位置)寫(xiě)入該密文數(shù)據(jù)塊28,每寫(xiě)入密文數(shù)據(jù)塊28中的一個(gè)字節(jié),第二寫(xiě)指針P2則向后移動(dòng)一位,直到該密文數(shù)據(jù)塊28全部被寫(xiě)完。
步驟206,若該第一區(qū)域被寫(xiě)滿,則從該第二區(qū)域的起始位置,依次覆蓋寫(xiě)入加密得到的密文數(shù)據(jù)塊。
由于明文數(shù)據(jù)是按序從第二區(qū)域的起始位置被寫(xiě)入的,且被寫(xiě)入第二區(qū)域的明文數(shù)據(jù)也是依序從第二區(qū)域的起始位置開(kāi)始讀取,因此,第二區(qū)域起始位置的明文數(shù)據(jù)已經(jīng)被加密并寫(xiě)入至第一區(qū)域,也即第二區(qū)域起始位置處的明文數(shù)據(jù)不再具有意義,此時(shí)則可以在第一區(qū)域被寫(xiě)滿之后,從該第二區(qū)域的起始位置開(kāi)始,依次覆蓋寫(xiě)入加密得到的密文數(shù)據(jù)塊。
請(qǐng)參見(jiàn)圖2E所示,其是本發(fā)明一個(gè)實(shí)施例中提供的向第二區(qū)域?qū)懭朊芪臄?shù)據(jù)塊的示意圖,從圖2E中的第二區(qū)域24利用第一讀取指針P1讀取出預(yù)定大小的明文數(shù)據(jù)塊26’,對(duì)讀取出的明文數(shù)據(jù)塊26’進(jìn)行加密,得到密文數(shù)據(jù)塊28’,利用第二寫(xiě)入指針P2將得到的密文數(shù)據(jù)塊28’寫(xiě)入第二區(qū)域24中,在寫(xiě)入第二區(qū)域24,每寫(xiě)入密文數(shù)據(jù)塊28’中的一個(gè)字節(jié),第二寫(xiě)指針P2則向后移動(dòng)一位,直到該密文數(shù)據(jù)塊28’全部被寫(xiě)完。
步驟207,當(dāng)所有明文數(shù)據(jù)均被加密,且加密得到的所有密文數(shù)據(jù)均被寫(xiě)入該內(nèi)存后,則在該第二區(qū)域未被密文數(shù)據(jù)覆蓋的區(qū)域,覆蓋寫(xiě)入用于描述該密 文數(shù)據(jù)的描述信息。
根據(jù)步驟201a和步驟201b可知,申請(qǐng)的內(nèi)存的大小可以容納所有密文數(shù)據(jù)(即與明文數(shù)據(jù)對(duì)應(yīng)的數(shù)據(jù))以及用于描述密文數(shù)據(jù)的描述信息,因此在從內(nèi)存的起始位置寫(xiě)完了所有的密文數(shù)據(jù)之后,內(nèi)存中還有剩余部分內(nèi)容,該部分內(nèi)容可以用于寫(xiě)入描述信息。顯然,如果內(nèi)存僅為密文數(shù)據(jù)的大小,則在密文數(shù)據(jù)全部被寫(xiě)完后,則該第二區(qū)域不會(huì)存在未被密文數(shù)據(jù)覆蓋的區(qū)域,因此也不用寫(xiě)入用于描述該密文數(shù)據(jù)的描述信息。
因此,當(dāng)所有明文數(shù)據(jù)均被加密,且加密得到的所有密文數(shù)據(jù)均被寫(xiě)入該內(nèi)存后,則在該第二區(qū)域未被密文數(shù)據(jù)覆蓋的區(qū)域,覆蓋寫(xiě)入用于描述該密文數(shù)據(jù)的描述信息。
步驟208,當(dāng)該明文數(shù)據(jù)全部被加密完,且加密后的所有密文數(shù)據(jù)均被讀取后,則釋放申請(qǐng)的該內(nèi)存。
當(dāng)該明文數(shù)據(jù)全部被加密完,且加密后的所有密文數(shù)據(jù)均被讀取后,為了使被申請(qǐng)的內(nèi)容被回收利用,則可以釋放掉申請(qǐng)的內(nèi)存。
綜上所述,本發(fā)明實(shí)施例中提供的數(shù)據(jù)加密方法,通過(guò)僅申請(qǐng)一段小于明文數(shù)據(jù)和對(duì)該明文數(shù)據(jù)進(jìn)行加密后的得到的密文數(shù)據(jù)之和的內(nèi)存,并先將明文數(shù)據(jù)寫(xiě)入該內(nèi)存,然后依序讀取明文數(shù)據(jù)塊,對(duì)讀取的明文數(shù)據(jù)塊進(jìn)行加密,得到加密后的密文數(shù)據(jù)塊,將得到的密文數(shù)據(jù)塊寫(xiě)入該內(nèi)存,由于在加密之前,可以將明文數(shù)據(jù)存儲(chǔ)至內(nèi)存,且存儲(chǔ)的明文數(shù)據(jù)并不影響密文數(shù)據(jù)的存儲(chǔ),因此減少了內(nèi)存開(kāi)銷(xiāo),保證了內(nèi)存比較小的低功耗嵌入式設(shè)備進(jìn)行加密存儲(chǔ)。
另外,通過(guò)預(yù)先根據(jù)預(yù)定加密算計(jì)計(jì)算出對(duì)明文數(shù)據(jù)進(jìn)行加密后得到的密文數(shù)據(jù)的大小,確定內(nèi)存的大小,也即該內(nèi)存只需要設(shè)置可以用于密文數(shù)據(jù)以及用于描述密文數(shù)據(jù)的描述信息的大小即可,從而在保證可以對(duì)明文數(shù)據(jù)進(jìn)行加密的同時(shí),盡可能的降低申請(qǐng)的內(nèi)存的空間。
通過(guò)在第一區(qū)域中未被寫(xiě)入數(shù)據(jù)的起始位置,依序?qū)懭爰用艿玫降拿芪臄?shù)據(jù)塊,可以保證密文數(shù)據(jù)的順序?qū)懭?,避免了覆蓋已經(jīng)寫(xiě)入的密文數(shù)據(jù)以及尚未被加密的明文數(shù)據(jù)的情況,使得對(duì)明文數(shù)據(jù)的加密和對(duì)密文數(shù)據(jù)的正確讀取提供了可能性。
通過(guò)在第一區(qū)域被寫(xiě)滿后,從第二區(qū)域的起始位置,依次覆蓋寫(xiě)入加密得到的密文數(shù)據(jù)塊;由于第二區(qū)域的起始位置所存儲(chǔ)的明文數(shù)據(jù)已經(jīng)被讀取且被 加密過(guò),因此這些明文數(shù)據(jù)已經(jīng)沒(méi)有意義,此時(shí)則可以將密文數(shù)據(jù)覆蓋這些明文數(shù)據(jù),這樣,前期用于存儲(chǔ)明文數(shù)據(jù)的第二區(qū)域最終會(huì)被密文數(shù)據(jù)進(jìn)行覆蓋,從而使得第二區(qū)域被明文數(shù)據(jù)和密文數(shù)據(jù)重復(fù)利用,因此為盡可能的降低數(shù)據(jù)對(duì)內(nèi)存的占用提供了可能性。
當(dāng)明文數(shù)據(jù)全部被加密后,內(nèi)存中存儲(chǔ)的明文數(shù)據(jù)則不具有存在的意義,此時(shí)可以將描述信息覆蓋寫(xiě)入目前用于存儲(chǔ)明文數(shù)據(jù)的區(qū)域,此時(shí),用于存儲(chǔ)密文數(shù)據(jù)的區(qū)域以及用于存儲(chǔ)描述信息的區(qū)域即為整個(gè)申請(qǐng)的內(nèi)存,描述信息的存入可以保證密文數(shù)據(jù)被讀取時(shí)進(jìn)行相關(guān)的操作。
通過(guò)在明文數(shù)據(jù)全部被加密完,且加密后的所有密文數(shù)據(jù)均被讀取后,釋放申請(qǐng)的該內(nèi)存,可以有效減少對(duì)內(nèi)存的占用時(shí)長(zhǎng),以便于設(shè)備中的其他業(yè)務(wù)可以繼續(xù)使用這些內(nèi)存,提高了設(shè)備的工作效率。
圖3是本發(fā)明一個(gè)實(shí)施例中提供的數(shù)據(jù)加密裝置的結(jié)構(gòu)示意圖。該數(shù)據(jù)加密裝置可以應(yīng)用于低功耗的嵌入式設(shè)備中,這里所講的低功耗嵌入式設(shè)備為內(nèi)存非常小,對(duì)內(nèi)存的使用要求非常高的設(shè)備。該數(shù)據(jù)加密裝置可以包括:內(nèi)存申請(qǐng)模塊310、第一寫(xiě)入模塊320、數(shù)據(jù)加密模塊330和第二寫(xiě)入模塊340。
內(nèi)存申請(qǐng)模塊310,用于按照預(yù)定方式為需要加密的明文數(shù)據(jù)申請(qǐng)一段內(nèi)存,該內(nèi)存包括位于該內(nèi)存頭部的第一區(qū)域和位于該內(nèi)存尾部的第二區(qū)域,該內(nèi)存的大小小于該明文數(shù)據(jù)的大小加上對(duì)該明文數(shù)據(jù)加密后得到的密文數(shù)據(jù)的大小之和;
第一寫(xiě)入模塊320,用于將該明文數(shù)據(jù)寫(xiě)入該第二區(qū)域;
數(shù)據(jù)加密模塊330,用于依序從該第二區(qū)域中未被讀取的明文數(shù)據(jù)中讀取預(yù)定大小的明文數(shù)據(jù)塊,按照預(yù)定加密算法對(duì)讀取的該明文數(shù)據(jù)塊進(jìn)行加密,得到密文數(shù)據(jù)塊;
第二寫(xiě)入模塊340,用于將該數(shù)據(jù)加密模塊330加密得到的該密文數(shù)據(jù)塊寫(xiě)入該第一區(qū)域,并在該第一區(qū)域?qū)憹M后,繼續(xù)寫(xiě)入至該第二區(qū)域。
綜上所述,本發(fā)明實(shí)施例中提供的數(shù)據(jù)加密裝置,通過(guò)僅申請(qǐng)一段小于明文數(shù)據(jù)和對(duì)該明文數(shù)據(jù)進(jìn)行加密后的得到的密文數(shù)據(jù)之和的內(nèi)存,并先將明文數(shù)據(jù)寫(xiě)入該內(nèi)存,然后依序讀取明文數(shù)據(jù)塊,對(duì)讀取的明文數(shù)據(jù)塊進(jìn)行加密,得到加密后的密文數(shù)據(jù)塊,將得到的密文數(shù)據(jù)塊寫(xiě)入該內(nèi)存,由于在加密之前, 可以將明文數(shù)據(jù)存儲(chǔ)至內(nèi)存,且存儲(chǔ)的明文數(shù)據(jù)并不影響密文數(shù)據(jù)的存儲(chǔ),因此減少了內(nèi)存開(kāi)銷(xiāo),保證了內(nèi)存比較小的低功耗嵌入式設(shè)備進(jìn)行加密存儲(chǔ)。
圖4是本發(fā)明另一個(gè)實(shí)施例中提供的數(shù)據(jù)加密裝置的結(jié)構(gòu)示意圖。該數(shù)據(jù)加密裝置可以應(yīng)用于低功耗的嵌入式設(shè)備中,這里所講的低功耗嵌入式設(shè)備為內(nèi)存非常小,對(duì)內(nèi)存的使用要求非常高的設(shè)備。該數(shù)據(jù)加密裝置可以包括:內(nèi)存申請(qǐng)模塊410、第一寫(xiě)入模塊420、數(shù)據(jù)加密模塊430和第二寫(xiě)入模塊440。
內(nèi)存申請(qǐng)模塊410,用于按照預(yù)定方式為需要加密的明文數(shù)據(jù)申請(qǐng)一段內(nèi)存,該內(nèi)存包括位于該內(nèi)存頭部的第一區(qū)域和位于該內(nèi)存尾部的第二區(qū)域,該內(nèi)存的大小小于該明文數(shù)據(jù)的大小加上對(duì)該明文數(shù)據(jù)加密后得到的密文數(shù)據(jù)的大小之和;
第一寫(xiě)入模塊420,用于將該明文數(shù)據(jù)寫(xiě)入該第二區(qū)域;
數(shù)據(jù)加密模塊430,用于依序從該第二區(qū)域中未被讀取的明文數(shù)據(jù)中讀取預(yù)定大小的明文數(shù)據(jù)塊,按照預(yù)定加密算法對(duì)讀取的該明文數(shù)據(jù)塊進(jìn)行加密,得到密文數(shù)據(jù)塊;
第二寫(xiě)入模塊440,用于將該數(shù)據(jù)加密模塊430加密得到的該密文數(shù)據(jù)塊寫(xiě)入該第一區(qū)域,并在該第一區(qū)域?qū)憹M后,繼續(xù)寫(xiě)入至該第二區(qū)域。
在一種可能的實(shí)現(xiàn)方式中,該內(nèi)存申請(qǐng)模塊410,包括:大小預(yù)計(jì)單元411和內(nèi)存申請(qǐng)單元412。
大小預(yù)計(jì)單元411,用于預(yù)計(jì)按照該預(yù)定加密算法對(duì)該明文數(shù)據(jù)進(jìn)行加密后得到的密文數(shù)據(jù)的大小,該密文數(shù)據(jù)包括與明文數(shù)據(jù)對(duì)應(yīng)的數(shù)據(jù)和預(yù)定的描述信息;
內(nèi)存申請(qǐng)單元412,用于申請(qǐng)大小等于大小預(yù)計(jì)單元411預(yù)計(jì)出的密文數(shù)據(jù)的大小的內(nèi)存。
在一種可能的實(shí)現(xiàn)方式中,該第二寫(xiě)入模塊440還可以用于:
從該第一區(qū)域中未被寫(xiě)入數(shù)據(jù)的起始位置,依序?qū)懭爰用艿玫降拿芪臄?shù)據(jù)塊。
在一種可能的實(shí)現(xiàn)方式中,該第二寫(xiě)入模塊440可以包括:檢測(cè)單元441、第一寫(xiě)入單元442和第三寫(xiě)入單元443。
檢測(cè)單元441,用于檢測(cè)該第一區(qū)域是否被寫(xiě)滿;
第一寫(xiě)入單元442,用于在該檢測(cè)單元441檢測(cè)到該第一區(qū)域被寫(xiě)滿時(shí),從該第二區(qū)域的起始位置,依次覆蓋寫(xiě)入加密得到的密文數(shù)據(jù)塊;
第二寫(xiě)入單元443,還用于在該檢測(cè)單元441檢測(cè)到該第一區(qū)域未被寫(xiě)滿時(shí),將該密文數(shù)據(jù)塊寫(xiě)入該第一區(qū)域。
在一種可能的實(shí)現(xiàn)方式中,該數(shù)據(jù)加密裝置還可以包括:描述信息寫(xiě)入模塊450。
描述信息寫(xiě)入模塊450,用于當(dāng)所有明文數(shù)據(jù)均被加密,且加密得到的所有密文數(shù)據(jù)均被寫(xiě)入該內(nèi)存后,則在該第二區(qū)域未被密文數(shù)據(jù)覆蓋的區(qū)域,覆蓋寫(xiě)入用于描述該密文數(shù)據(jù)的描述信息。
在一種可能的實(shí)現(xiàn)方式中,該數(shù)據(jù)加密裝置還可以包括:內(nèi)存釋放模塊460。
內(nèi)存釋放模塊460,用于當(dāng)該明文數(shù)據(jù)全部被加密完,且加密后的所有密文數(shù)據(jù)均被讀取后,則釋放申請(qǐng)的該內(nèi)存。
綜上所述,本發(fā)明實(shí)施例中提供的數(shù)據(jù)加密裝置,通過(guò)僅申請(qǐng)一段小于明文數(shù)據(jù)和對(duì)該明文數(shù)據(jù)進(jìn)行加密后的得到的密文數(shù)據(jù)之和的內(nèi)存,并先將明文數(shù)據(jù)寫(xiě)入該內(nèi)存,然后依序讀取明文數(shù)據(jù)塊,對(duì)讀取的明文數(shù)據(jù)塊進(jìn)行加密,得到加密后的密文數(shù)據(jù)塊,將得到的密文數(shù)據(jù)塊寫(xiě)入該內(nèi)存,由于在加密之前,可以將明文數(shù)據(jù)存儲(chǔ)至內(nèi)存,且存儲(chǔ)的明文數(shù)據(jù)并不影響密文數(shù)據(jù)的存儲(chǔ),因此減少了內(nèi)存開(kāi)銷(xiāo),保證了內(nèi)存比較小的低功耗嵌入式設(shè)備進(jìn)行加密存儲(chǔ)。
另外,通過(guò)預(yù)先根據(jù)預(yù)定加密算計(jì)計(jì)算出對(duì)明文數(shù)據(jù)進(jìn)行加密后得到的密文數(shù)據(jù)的大小,確定內(nèi)存的大小,也即該內(nèi)存只需要設(shè)置可以用于密文數(shù)據(jù)以及用于描述密文數(shù)據(jù)的描述信息的大小即可,從而在保證可以對(duì)明文數(shù)據(jù)進(jìn)行加密的同時(shí),盡可能的降低申請(qǐng)的內(nèi)存的空間。
通過(guò)在第一區(qū)域中未被寫(xiě)入數(shù)據(jù)的起始位置,依序?qū)懭爰用艿玫降拿芪臄?shù)據(jù)塊,可以保證密文數(shù)據(jù)的順序?qū)懭耄苊饬烁采w已經(jīng)寫(xiě)入的密文數(shù)據(jù)以及尚未被加密的明文數(shù)據(jù)的情況,使得對(duì)明文數(shù)據(jù)的加密和對(duì)密文數(shù)據(jù)的正確讀取提供了可能性。
通過(guò)在第一區(qū)域被寫(xiě)滿后,從第二區(qū)域的起始位置,依次覆蓋寫(xiě)入加密得到的密文數(shù)據(jù)塊;由于第二區(qū)域的起始位置所存儲(chǔ)的明文數(shù)據(jù)已經(jīng)被讀取且被加密過(guò),因此這些明文數(shù)據(jù)已經(jīng)沒(méi)有意義,此時(shí)則可以將密文數(shù)據(jù)覆蓋這些明文數(shù)據(jù),這樣,前期用于存儲(chǔ)明文數(shù)據(jù)的第二區(qū)域最終會(huì)被密文數(shù)據(jù)進(jìn)行覆蓋, 從而使得第二區(qū)域被明文數(shù)據(jù)和密文數(shù)據(jù)重復(fù)利用,因此為盡可能的降低數(shù)據(jù)對(duì)內(nèi)存的占用提供了可能性。
當(dāng)明文數(shù)據(jù)全部被加密后,內(nèi)存中存儲(chǔ)的明文數(shù)據(jù)則不具有存在的意義,此時(shí)可以將描述信息覆蓋寫(xiě)入目前用于存儲(chǔ)明文數(shù)據(jù)的區(qū)域,此時(shí),用于存儲(chǔ)密文數(shù)據(jù)的區(qū)域以及用于存儲(chǔ)描述信息的區(qū)域即為整個(gè)申請(qǐng)的內(nèi)存,描述信息的存入可以保證密文數(shù)據(jù)被讀取時(shí)進(jìn)行相關(guān)的操作。
通過(guò)在明文數(shù)據(jù)全部被加密完,且加密后的所有密文數(shù)據(jù)均被讀取后,釋放申請(qǐng)的該內(nèi)存,可以有效減少對(duì)內(nèi)存的占用時(shí)長(zhǎng),以便于設(shè)備中的其他業(yè)務(wù)可以繼續(xù)使用這些內(nèi)存,提高了設(shè)備的工作效率。
需要說(shuō)明的是:上述實(shí)施例中提供的數(shù)據(jù)加密裝置在對(duì)數(shù)據(jù)進(jìn)行加密時(shí),僅以上述各功能模塊的劃分進(jìn)行舉例說(shuō)明,實(shí)際應(yīng)用中,可以根據(jù)需要而將上述功能分配由不同的功能模塊完成,即將低功耗設(shè)備的內(nèi)部結(jié)構(gòu)劃分成不同的功能模塊,以完成以上描述的全部或者部分功能。另外,上述實(shí)施例提供的數(shù)據(jù)加密裝置與數(shù)據(jù)加密方法實(shí)施例屬于同一構(gòu)思,其具體實(shí)現(xiàn)過(guò)程詳見(jiàn)方法實(shí)施例,這里不再贅述。
上述本發(fā)明實(shí)施例序號(hào)僅僅為了描述,不代表實(shí)施例的優(yōu)劣。
本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例的全部或部分步驟可以通過(guò)硬件來(lái)完成,也可以通過(guò)程序來(lái)指令相關(guān)的硬件完成,所述的程序可以存儲(chǔ)于一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中,上述提到的存儲(chǔ)介質(zhì)可以是只讀存儲(chǔ)器,磁盤(pán)或光盤(pán)等。
以上所述僅為本發(fā)明的較佳實(shí)施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。