数据加密方法及装置与流程

文档序号:11133857阅读:659来源:国知局
数据加密方法及装置与制造工艺

本发明涉及加密技术领域,特别涉及一种数据加密方法及装置。



背景技术:

为了保证数据的安全性,通常需要对数据进行加密。

常见的一种加密方式为:首先,在设备的内存中申请两段内存,其中一段内存用于存储明文,该段内存记为第一内存,其中另一段内存用于存储密文,该段内存记为第二内存;然后,从第一内存中读取明文数据,按照预定的加密方式对读取的明文数据进行加密,将加密后的数据密文存储至第二内存中。

在实现本发明的过程中,发明人发现相关技术至少存在以下问题:由于上述加密方式中需要申请两段内存,因此并不适用于内存比较小的设备,比如内容一般仅为256个字节的低功耗的嵌入式设备。



技术实现要素:

为了解决相关技术中因在加密时需要申请两段内存,并不适用于内存比较小的设备的问题,本发明实施例提供了一种数据加密方法及装置。所述技术方案如下:

第一方面,提供了一种数据加密方法,所述方法包括:

按照预定方式为需要加密的明文数据申请一段内存,所述内存包括位于所述内存头部的第一区域和位于所述内存尾部的第二区域,所述内存的大小等于对所述明文数据加密后得到的密文数据的大小;

将所述明文数据写入所述第二区域;

依序从所述第二区域中未被读取的明文数据中读取预定大小的明文数据块,按照预定加密算法对读取的所述明文数据块进行加密,得到密文数据块;

将所述密文数据块写入所述第一区域,并在所述第一区域写满后,继续写入至所述第二区域。

上述技术方案带来的有益效果是:通过仅申请一段小于明文数据和对该明文数据进行加密后的得到的密文数据之和的内存,并先将明文数据写入该内存,然后依序读取明文数据块,对读取的明文数据块进行加密,得到加密后的密文数据块,将得到的密文数据块写入该内存,由于在加密之前,可以将明文数据存储至内存,且存储的明文数据并不影响密文数据的存储,因此减少了内存开销,保证了内存比较小的低功耗嵌入式设备进行加密存储。

可选的,所述按照预定方式为需要加密的明文数据申请一段内存,包括:

预计按照所述预定加密算法对所述明文数据进行加密后得到的密文数据的大小,所述密文数据包括与所述明文数据对应的数据和预定的描述信息;

申请大小等于所述密文数据的大小的内存。

上述技术方案带来的有益效果是:通过预先根据预定加密算计计算出对明文数据进行加密后得到的密文数据的大小,确定内存的大小,也即该内存只需要设置可以存放密文数据的大小即可,从而在保证可以对明文数据进行加密的同时,尽可能的降低申请的内存的空间。

可选的,所述将所述密文数据块写入所述第一区域,包括:

从所述第一区域中未被写入数据的起始位置,依序写入加密得到的密文数据块。

上述技术方案带来的有益效果是:通过在第一区域中未被写入数据的起始位置,依序写入加密得到的密文数据块,可以保证密文数据的顺序写入,避免了覆盖已经写入的密文数据以及尚未被加密的明文数据的情况,使得对明文数据的加密和对密文数据的正确读取提供了可能性。

可选的,所述将所述密文数据块写入所述第一区域,并在所述第一区域写满后,继续写入至所述第二区域,包括:

检测所述第一区域是否被写满;

若所述第一区域被写满,则从所述第二区域的起始位置,依次覆盖写入加密得到的密文数据块;

若所述第一区域未被写满,则将所述密文数据块写入所述第一区域。

上述技术方案带来的有益效果是:通过在第一区域被写满后,从第二区域的起始位置,依次覆盖写入加密得到的密文数据块;由于第二区域的起始位置所存储的明文数据已经被读取且被加密过,因此这些明文数据已经没有意义, 此时则可以将密文数据覆盖这些明文数据,这样,前期用于存储明文数据的第二区域最终会被密文数据进行覆盖,从而使得第二区域被明文数据和密文数据重复利用,因此为尽可能的降低数据对内存的占用提供了可能性。

可选的,所述方法还包括:

当所有明文数据均被加密,且加密得到的所有密文数据均被写入所述内存后,则在所述第二区域未被密文数据覆盖的区域,覆盖写入用于所述描述信息。

上述技术方案带来的有益效果是:当明文数据全部被加密后,内存中存储的明文数据则不具有存在的意义,此时可以将描述信息覆盖写入目前用于存储明文数据的区域,此时,用于存储密文数据的区域以及用于存储描述信息的区域即为整个申请的内存,描述信息的存入可以保证密文数据被读取时进行相关的操作。

可选的,所述方法还包括:

当所述明文数据全部被加密完,且加密后的所有密文数据均被读取后,则释放申请的所述内存。

上述技术方案带来的有益效果是:通过在明文数据全部被加密完,且加密后的所有密文数据均被读取后,释放申请的该内存,可以有效减少对内存的占用时长,以便于设备中的其他业务可以继续使用这些内存,提高了设备的工作效率。

第二方面,提供了一种数据加密装置,所述装置包括:

内存申请模块,用于按照预定方式为需要加密的明文数据申请一段内存,所述内存包括位于所述内存头部的第一区域和位于所述内存尾部的第二区域,所述内存的大小等于对所述明文数据加密后得到的密文数据的大小;

第一写入模块,用于将所述明文数据写入所述第二区域;

数据加密模块,用于依序从所述第二区域中未被读取的明文数据中读取预定大小的明文数据块,按照预定加密算法对读取的所述明文数据块进行加密,得到密文数据块;

第二写入模块,用于将所述数据加密模块加密得到的所述密文数据块写入所述第一区域,并在所述第一区域写满后,继续写入至所述第二区域。

上述技术方案带来的有益效果是:通过仅申请一段小于明文数据和对该明文数据进行加密后的得到的密文数据之和的内存,并先将明文数据写入该内存, 然后依序读取明文数据块,对读取的明文数据块进行加密,得到加密后的密文数据块,将得到的密文数据块写入该内存,由于在加密之前,可以将明文数据存储至内存,且存储的明文数据并不影响密文数据的存储,因此减少了内存开销,保证了内存比较小的低功耗嵌入式设备进行加密存储。

可选的,所述内存申请模块,包括:

大小预计单元,用于预计按照所述预定加密算法对所述明文数据进行加密后得到的密文数据的大小,所述密文数据包括与所述明文数据对应的数据和预定的描述信息;

内存申请单元,用于申请大小等于所述大小预计单元预计出的所述密文数据的大小的内存。

上述技术方案带来的有益效果是:通过预先根据预定加密算计计算出对明文数据进行加密后得到的密文数据的大小,确定内存的大小,也即该内存只需要设置可以存放密文数据以及用于描述密文数据的描述信息中的前一种或全部两种的大小即可,从而在保证可以对明文数据进行加密的同时,尽可能的降低申请的内存的空间。

可选的,所述第二写入模块,还用于:

从所述第一区域中未被写入数据的起始位置,依序写入加密得到的密文数据块。

上述技术方案带来的有益效果是:通过在第一区域中未被写入数据的起始位置,依序写入加密得到的密文数据块,可以保证密文数据的顺序写入,避免了覆盖已经写入的密文数据以及尚未被加密的明文数据的情况,使得对明文数据的加密和对密文数据的正确读取提供了可能性。

可选的,所述第二写入模块,包括:

检测单元,用于检测所述第一区域是否被写满;

第一写入单元,用于在所述检测单元检测到所述第一区域被写满时,从所述第二区域的起始位置,依次覆盖写入加密得到的密文数据块;

第二写入单元,还用于在所述检测单元检测到所述第一区域未被写满时,将所述密文数据块写入所述第一区域。

上述技术方案带来的有益效果是:通过在第一区域被写满后,从第二区域的起始位置,依次覆盖写入加密得到的密文数据块;由于第二区域的起始位置 所存储的明文数据已经被读取且被加密过,因此这些明文数据已经没有意义,此时则可以将密文数据覆盖这些明文数据,这样,前期用于存储明文数据的第二区域最终会被密文数据进行覆盖,从而使得第二区域被明文数据和密文数据重复利用,因此为尽可能的降低数据对内存的占用提供了可能性。

可选的,所述装置还包括:

描述信息写入模块,用于当所有明文数据均被加密,且加密得到的所有密文数据均被写入所述内存后,则在所述第二区域未被密文数据覆盖的区域,覆盖写入用于描述所述密文数据的描述信息。

上述技术方案带来的有益效果是:当明文数据全部被加密后,内存中存储的明文数据则不具有存在的意义,此时可以将描述信息覆盖写入目前用于存储明文数据的区域,此时,用于存储密文数据的区域以及用于存储描述信息的区域即为整个申请的内存,描述信息的存入可以保证密文数据被读取时进行相关的操作。

可选的,所述装置还包括:

内存释放模块,用于当所述明文数据全部被加密完,且加密后的所有密文数据均被读取后,则释放申请的所述内存。

上述技术方案带来的有益效果是:通过在明文数据全部被加密完,且加密后的所有密文数据均被读取后,释放申请的该内存,可以有效减少对内存的占用时长,以便于设备中的其他业务可以继续使用这些内存,提高了设备的工作效率。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明一个实施例中提供的数据加密方法的方法流程图;

图2A是本发明另一个实施例中提供的数据加密方法的方法流程图;

图2B是本发明一个实施例中提供的按照预定方式为需要加密的明文数据申请一段内存的流程图;

图2C是本发明一个实施例中提供的申请到的内存在存储明文数据和密文数据时的区域分配示意图;

图2D是本发明一个实施例中提供的向第一区域写入密文数据块的示意图;

图2E是本发明一个实施例中提供的向第二区域写入密文数据块的示意图;

图3是本发明一个实施例中提供的数据加密装置的结构示意图;

图4是本发明另一个实施例中提供的数据加密装置的结构示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。

图1是本发明一个实施例中提供的数据加密方法的方法流程图。该数据加密方法可以应用于低功耗的嵌入式设备中,这里所讲的低功耗嵌入式设备为内存非常小,对内存的使用要求非常高的设备。该数据加密方法可以包括:

步骤101,按照预定方式为需要加密的明文数据申请一段内存,该内存包括位于该内存头部的第一区域和位于该内存尾部的第二区域,该内存的大小等于对该明文数据加密后得到的密文数据的大小。

步骤102,将该明文数据写入该第二区域。

步骤103,依序从该第二区域中未被读取的明文数据中读取预定大小的明文数据块,按照预定加密算法对读取的该明文数据块进行加密,得到密文数据块。

步骤104,将该密文数据块写入该第一区域,并在该第一区域写满后,继续写入至该第二区域。

综上所述,本发明实施例中提供的数据加密方法,通过仅申请一段小于明文数据和对该明文数据进行加密后的得到的密文数据之和的内存,并先将明文数据写入该内存,然后依序读取明文数据块,对读取的明文数据块进行加密,得到加密后的密文数据块,将得到的密文数据块写入该内存,由于在加密之前,可以将明文数据存储至内存,且存储的明文数据并不影响密文数据的存储,因此减少了内存开销,保证了内存比较小的低功耗嵌入式设备进行加密存储。

图2A是本发明另一个实施例中提供的数据加密方法的方法流程图。该数据 加密方法可以应用于低功耗设备中,这里所讲的低功耗设备为内存非常小,对内存的使用要求非常高的设备,比如低功耗的嵌入式设备。该数据加密方法可以包括:

步骤201,按照预定方式为需要加密的明文数据申请一段内存,该内存包括位于该内存头部的第一区域和位于该内存尾部的第二区域,该内存的大小等于对该明文数据加密后得到的密文数据的大小。

在实际应用中,低功耗嵌入式设备每为一段明文数据进行加密,均会根据该段明文数据的字节数,申请一段内存。

一般来讲,低功耗设备的内存通常非常小,比如仅为256个字节,因此为了尽可能的降低加密时对内存的占用,本发明各个实施例在为需要加密的明文数据进行加密时,仅申请一端内存,且申请的内存的大小等于对该明文数据加密后得到的密文数据的大小。

相较于相关技术中,需要申请两段内存,其中一段内存用于存储需要加密的明文数据,另一段内存用于存储对该明文数据进行加密后的密文数据,这里的内存大小显示小于相关技术中的这两段内存之和,因此节省了对内存的占用。

为了便于在申请的内存中有序的写入明文数据以及生成的密文数据,通常可以将内存设置为两个区域,也即申请的内容可以包括位于该内存头部的第一区域和位于该内存尾部的第二区域。

可选的,第一区域的结束位置的下一个位置为第二区域的起始位置。

在一种可能的实现方式中,可以先预算下内存的大小,然后根据预算的大小申请内存,具体可以参见图2B所示,其是本发明一个实施例中提供的按照预定方式为需要加密的明文数据申请一段内存的流程图。在图2B中,低功耗设备在按照预定方式为需要加密的明文数据申请一段内存,可以包括如下步骤:

步骤201a,预计按照预定加密算法对该明文数据进行加密后得到的密文数据的大小,该密文数据包括与明文数据对应的数据和预定的描述信息。

这里的预定加密算法是低功耗设备对明文数据进行加密的算法,该预定加密算法通常由对明文数据的加密要求来决定,本实施例不对预定加密算法的方式进行限定。

一般来讲,对明文数据加密后得到的密文数据,其占用的字节通常大于对应的明文数据所占用的字节,因此,在为申请内存时,可以先预算处密文数据 所占用的字节,然后以密文数据所占用的字节来确定需要申请的内存。

通常,为了保证密文数据的接收端能够得知密文数据的加密方式,以便对接收到的密文数据进行解密,低功耗设备通常还会在申请的内存中写入加密算法等描述信息,以便于将内存中读取的描述信息发送至密文数据的接收端。这里所讲的描述信息可以为用于描述对密文数据进行加密的加密方式的描述信息,也可以为用于描述所有密文数据所占用字节的信息等,本实施例不对描述信息的具体内容进行限定。

一般来讲,这些描述信息等均作为密文数据的一部分,也即密文数据除了包括对明文数据进行加密后的数据,还包括其他描述信息。

因此在申请内存时,通常还需要考虑到用于描述该密文数据的描述信息所占用的大小,这里的描述信息通常为8bit-10bit。

步骤201b,申请大小等于该密文数据的大小的内存。

为了尽可能降低对内存的占用,且考虑到密文数据可以依序根据明文数据进行加密,因此在初始化阶段,密文数据可以不占用内存,随着密文数据的生成,密文数据开始逐步占用内存。因此,在申请内存时,申请大小等于该密文数据的大小的内存。

一般的,内存中的第二区域一般设置为明文数据的大小。可选的,从内存的尾部位置向前移位预定大小,指向第二区域的起始位置,这里所讲的预定大小即为明文数据的大小。

可选的,请参见图2C所示,其是根据本发明一个实施例中提供的申请到的内存在存储明文数据和密文数据时的区域分配示意图,在图2C中,申请的内存包括第一区域22和第二区域24,其中第二区域24的大小等于明文数据所占用的字节。

一般的,对明文数据加密后得到的密文数据通常是大于该明文数据的,因此在申请大小等于密文数据的大小的内存时,第二区域显示可以用于存储全部的明文数据。

步骤202,将该明文数据写入该第二区域。

在将该明文数据写入该第二区域时,可以从第二区域的起始位置,依次将明文数据写入第二区域。

可选的,在将明文数据写入该第二区域时,可以设置第一写入指针,该第 一写入指针的起始位置为第二区域的起始位置,在写入明文数据的过程中,在每写入一个字节,该第一写入指针做指示的位置加1,直到该第一写入指针指向第二区域的结束位置,完成明文数据的写入。

步骤203,依序从该第二区域中未被读取的明文数据中读取预定大小的明文数据块,按照预定加密算法对读取的该明文数据块进行加密,得到密文数据块。

当明文数据全部写入第二区域后,开始对明文数据进行加密,此时可以从第二区域的起始位置依序读取明文数据,一般的,在读取明文数据时,可以按照预定大小读取明文数据,将具有预定大小的明文数据记为明文数据块。

每读取出明文数据块,则按照预定加密算法对读取的明文数据块进行加密,得到加密后的密文数据,将一个预定大小的明文数据加密后的密文数据记为密文数据块。

可选的,在将从该第二区域读取明文数据块时,可以设置第一读取指针,该第一读取指针的起始位置为第二区域的起始位置,在读取明文数据的过程中,在每读取一个字节,该第一读取指针做指示的位置加1,直到该第一读取指针移动了预定大小的字节,完成对一个明文数据块的读取。

为了有序读取明文数据,避免遗漏明文数据,可以依序从该第二区域中未被读取的明文数据中读取预定大小的明文数据块,按照预定加密算法对读取的该明文数据块进行加密,得到密文数据块。

步骤204,检测该第一区域是否被写满。

当得到密文数据块之后,需要将密文数据块写入第一区域,但由于内存是按照所有密文数据所占用的内存申请的,且明文数据已经占用了内存中的第二区域,因此,在写入部分密文数据之后,第一区域可能已经被写满。因此,在得到密文数据块之后,需要先检测该第一区域是否已经被写满。

显然,在每写入密文数据块中的一个字节,均可以检测该第一区域是否被写满。

步骤205,若该第一区域未被写满,则将该密文数据块写入该第一区域。

若该第一区域未被写满,则可以将得到的密文数据块写入该第一区域,低功耗设备在将密文数据块写入该第一区域时,为了避免在后得到的密文数据块覆盖了在前写入的密文数据块,则需要从该第一区域中未被写入数据的起始位置,依序写入加密得到的密文数据块。

可选的,在将密文数据写入该第一区域时,可以设置第二写入指针,该第二写入指针的起始位置为第一区域的起始位置,在写入密文数据的过程中,在每写入一个字节,该第二写入指针做指示的位置加1。

在检测该第一区域是否被写满时,可以检测该第二写入指针是否指向第一区域的结束位置,若第二写入指针正指向第一区域的结束位置,则表明第一区域已被写满,当第二写入指针指向第一区域结束位置之前的位置,则表明第一区域尚未被写满。

请参见图2D所示,其是本发明一个实施例中提供的向第一区域写入密文数据块的示意图,从图2D中的第二区域24利用第一读取指针P1读取出预定大小的明文数据块26,对读取出的明文数据块26进行加密,得到密文数据块28,利用第二写入指针P2将得到的密文数据块28写入第一区域22中,在写入第一区域22时,从该第一区域22中未被写入数据的起始位置29处(即在写入密文数据块28前,第二写入指针P2所指向的位置)写入该密文数据块28,每写入密文数据块28中的一个字节,第二写指针P2则向后移动一位,直到该密文数据块28全部被写完。

步骤206,若该第一区域被写满,则从该第二区域的起始位置,依次覆盖写入加密得到的密文数据块。

由于明文数据是按序从第二区域的起始位置被写入的,且被写入第二区域的明文数据也是依序从第二区域的起始位置开始读取,因此,第二区域起始位置的明文数据已经被加密并写入至第一区域,也即第二区域起始位置处的明文数据不再具有意义,此时则可以在第一区域被写满之后,从该第二区域的起始位置开始,依次覆盖写入加密得到的密文数据块。

请参见图2E所示,其是本发明一个实施例中提供的向第二区域写入密文数据块的示意图,从图2E中的第二区域24利用第一读取指针P1读取出预定大小的明文数据块26’,对读取出的明文数据块26’进行加密,得到密文数据块28’,利用第二写入指针P2将得到的密文数据块28’写入第二区域24中,在写入第二区域24,每写入密文数据块28’中的一个字节,第二写指针P2则向后移动一位,直到该密文数据块28’全部被写完。

步骤207,当所有明文数据均被加密,且加密得到的所有密文数据均被写入该内存后,则在该第二区域未被密文数据覆盖的区域,覆盖写入用于描述该密 文数据的描述信息。

根据步骤201a和步骤201b可知,申请的内存的大小可以容纳所有密文数据(即与明文数据对应的数据)以及用于描述密文数据的描述信息,因此在从内存的起始位置写完了所有的密文数据之后,内存中还有剩余部分内容,该部分内容可以用于写入描述信息。显然,如果内存仅为密文数据的大小,则在密文数据全部被写完后,则该第二区域不会存在未被密文数据覆盖的区域,因此也不用写入用于描述该密文数据的描述信息。

因此,当所有明文数据均被加密,且加密得到的所有密文数据均被写入该内存后,则在该第二区域未被密文数据覆盖的区域,覆盖写入用于描述该密文数据的描述信息。

步骤208,当该明文数据全部被加密完,且加密后的所有密文数据均被读取后,则释放申请的该内存。

当该明文数据全部被加密完,且加密后的所有密文数据均被读取后,为了使被申请的内容被回收利用,则可以释放掉申请的内存。

综上所述,本发明实施例中提供的数据加密方法,通过仅申请一段小于明文数据和对该明文数据进行加密后的得到的密文数据之和的内存,并先将明文数据写入该内存,然后依序读取明文数据块,对读取的明文数据块进行加密,得到加密后的密文数据块,将得到的密文数据块写入该内存,由于在加密之前,可以将明文数据存储至内存,且存储的明文数据并不影响密文数据的存储,因此减少了内存开销,保证了内存比较小的低功耗嵌入式设备进行加密存储。

另外,通过预先根据预定加密算计计算出对明文数据进行加密后得到的密文数据的大小,确定内存的大小,也即该内存只需要设置可以用于密文数据以及用于描述密文数据的描述信息的大小即可,从而在保证可以对明文数据进行加密的同时,尽可能的降低申请的内存的空间。

通过在第一区域中未被写入数据的起始位置,依序写入加密得到的密文数据块,可以保证密文数据的顺序写入,避免了覆盖已经写入的密文数据以及尚未被加密的明文数据的情况,使得对明文数据的加密和对密文数据的正确读取提供了可能性。

通过在第一区域被写满后,从第二区域的起始位置,依次覆盖写入加密得到的密文数据块;由于第二区域的起始位置所存储的明文数据已经被读取且被 加密过,因此这些明文数据已经没有意义,此时则可以将密文数据覆盖这些明文数据,这样,前期用于存储明文数据的第二区域最终会被密文数据进行覆盖,从而使得第二区域被明文数据和密文数据重复利用,因此为尽可能的降低数据对内存的占用提供了可能性。

当明文数据全部被加密后,内存中存储的明文数据则不具有存在的意义,此时可以将描述信息覆盖写入目前用于存储明文数据的区域,此时,用于存储密文数据的区域以及用于存储描述信息的区域即为整个申请的内存,描述信息的存入可以保证密文数据被读取时进行相关的操作。

通过在明文数据全部被加密完,且加密后的所有密文数据均被读取后,释放申请的该内存,可以有效减少对内存的占用时长,以便于设备中的其他业务可以继续使用这些内存,提高了设备的工作效率。

图3是本发明一个实施例中提供的数据加密装置的结构示意图。该数据加密装置可以应用于低功耗的嵌入式设备中,这里所讲的低功耗嵌入式设备为内存非常小,对内存的使用要求非常高的设备。该数据加密装置可以包括:内存申请模块310、第一写入模块320、数据加密模块330和第二写入模块340。

内存申请模块310,用于按照预定方式为需要加密的明文数据申请一段内存,该内存包括位于该内存头部的第一区域和位于该内存尾部的第二区域,该内存的大小小于该明文数据的大小加上对该明文数据加密后得到的密文数据的大小之和;

第一写入模块320,用于将该明文数据写入该第二区域;

数据加密模块330,用于依序从该第二区域中未被读取的明文数据中读取预定大小的明文数据块,按照预定加密算法对读取的该明文数据块进行加密,得到密文数据块;

第二写入模块340,用于将该数据加密模块330加密得到的该密文数据块写入该第一区域,并在该第一区域写满后,继续写入至该第二区域。

综上所述,本发明实施例中提供的数据加密装置,通过仅申请一段小于明文数据和对该明文数据进行加密后的得到的密文数据之和的内存,并先将明文数据写入该内存,然后依序读取明文数据块,对读取的明文数据块进行加密,得到加密后的密文数据块,将得到的密文数据块写入该内存,由于在加密之前, 可以将明文数据存储至内存,且存储的明文数据并不影响密文数据的存储,因此减少了内存开销,保证了内存比较小的低功耗嵌入式设备进行加密存储。

图4是本发明另一个实施例中提供的数据加密装置的结构示意图。该数据加密装置可以应用于低功耗的嵌入式设备中,这里所讲的低功耗嵌入式设备为内存非常小,对内存的使用要求非常高的设备。该数据加密装置可以包括:内存申请模块410、第一写入模块420、数据加密模块430和第二写入模块440。

内存申请模块410,用于按照预定方式为需要加密的明文数据申请一段内存,该内存包括位于该内存头部的第一区域和位于该内存尾部的第二区域,该内存的大小小于该明文数据的大小加上对该明文数据加密后得到的密文数据的大小之和;

第一写入模块420,用于将该明文数据写入该第二区域;

数据加密模块430,用于依序从该第二区域中未被读取的明文数据中读取预定大小的明文数据块,按照预定加密算法对读取的该明文数据块进行加密,得到密文数据块;

第二写入模块440,用于将该数据加密模块430加密得到的该密文数据块写入该第一区域,并在该第一区域写满后,继续写入至该第二区域。

在一种可能的实现方式中,该内存申请模块410,包括:大小预计单元411和内存申请单元412。

大小预计单元411,用于预计按照该预定加密算法对该明文数据进行加密后得到的密文数据的大小,该密文数据包括与明文数据对应的数据和预定的描述信息;

内存申请单元412,用于申请大小等于大小预计单元411预计出的密文数据的大小的内存。

在一种可能的实现方式中,该第二写入模块440还可以用于:

从该第一区域中未被写入数据的起始位置,依序写入加密得到的密文数据块。

在一种可能的实现方式中,该第二写入模块440可以包括:检测单元441、第一写入单元442和第三写入单元443。

检测单元441,用于检测该第一区域是否被写满;

第一写入单元442,用于在该检测单元441检测到该第一区域被写满时,从该第二区域的起始位置,依次覆盖写入加密得到的密文数据块;

第二写入单元443,还用于在该检测单元441检测到该第一区域未被写满时,将该密文数据块写入该第一区域。

在一种可能的实现方式中,该数据加密装置还可以包括:描述信息写入模块450。

描述信息写入模块450,用于当所有明文数据均被加密,且加密得到的所有密文数据均被写入该内存后,则在该第二区域未被密文数据覆盖的区域,覆盖写入用于描述该密文数据的描述信息。

在一种可能的实现方式中,该数据加密装置还可以包括:内存释放模块460。

内存释放模块460,用于当该明文数据全部被加密完,且加密后的所有密文数据均被读取后,则释放申请的该内存。

综上所述,本发明实施例中提供的数据加密装置,通过仅申请一段小于明文数据和对该明文数据进行加密后的得到的密文数据之和的内存,并先将明文数据写入该内存,然后依序读取明文数据块,对读取的明文数据块进行加密,得到加密后的密文数据块,将得到的密文数据块写入该内存,由于在加密之前,可以将明文数据存储至内存,且存储的明文数据并不影响密文数据的存储,因此减少了内存开销,保证了内存比较小的低功耗嵌入式设备进行加密存储。

另外,通过预先根据预定加密算计计算出对明文数据进行加密后得到的密文数据的大小,确定内存的大小,也即该内存只需要设置可以用于密文数据以及用于描述密文数据的描述信息的大小即可,从而在保证可以对明文数据进行加密的同时,尽可能的降低申请的内存的空间。

通过在第一区域中未被写入数据的起始位置,依序写入加密得到的密文数据块,可以保证密文数据的顺序写入,避免了覆盖已经写入的密文数据以及尚未被加密的明文数据的情况,使得对明文数据的加密和对密文数据的正确读取提供了可能性。

通过在第一区域被写满后,从第二区域的起始位置,依次覆盖写入加密得到的密文数据块;由于第二区域的起始位置所存储的明文数据已经被读取且被加密过,因此这些明文数据已经没有意义,此时则可以将密文数据覆盖这些明文数据,这样,前期用于存储明文数据的第二区域最终会被密文数据进行覆盖, 从而使得第二区域被明文数据和密文数据重复利用,因此为尽可能的降低数据对内存的占用提供了可能性。

当明文数据全部被加密后,内存中存储的明文数据则不具有存在的意义,此时可以将描述信息覆盖写入目前用于存储明文数据的区域,此时,用于存储密文数据的区域以及用于存储描述信息的区域即为整个申请的内存,描述信息的存入可以保证密文数据被读取时进行相关的操作。

通过在明文数据全部被加密完,且加密后的所有密文数据均被读取后,释放申请的该内存,可以有效减少对内存的占用时长,以便于设备中的其他业务可以继续使用这些内存,提高了设备的工作效率。

需要说明的是:上述实施例中提供的数据加密装置在对数据进行加密时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将低功耗设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的数据加密装置与数据加密方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。

以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1