文件处理方法、装置、计算机设备和可读存储介质转让专利

申请号 : CN202211109721.7

文献号 : CN115481419B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 安晓江胡伯良蒋红宇

申请人 : 北京海泰方圆科技股份有限公司

摘要 :

本申请实施例提供一种文件处理方法、装置、计算机设备和可读存储介质,该方法应用于计算机设备,计算机设备包括位于用户态的第一加解密模块和位于内核态的第二加解密模块,该方法包括:第一加解密模块接收处理指令,处理指令中包括初始存储路径和目标存储路径;处理指令指示对待处理文件进行第一处理,第一处理为加密处理或解密处理;第一加解密模块确定初始存储路径对应的初始内容地址,并确定目标存储路径对应的目标内容地址;第一加解密模块将初始内容地址和目标内容地址发送至第二加解密模块;第二加解密模块根据初始内容地址,获取待处理文件并对待处理文件进行第一处理,将处理后的文件写入目标内容地址。该方法能提高加解密的效率。

权利要求 :

1.一种文件处理方法,应用于计算机设备,其特征在于,所述计算机设备包括位于用户态的第一加解密模块和位于内核态的第二加解密模块,所述方法包括:所述第一加解密模块接收处理指令,所述处理指令中包括初始存储路径和目标存储路径;所述处理指令用于指示对待处理文件进行第一处理,所述第一处理为加密处理或解密处理,所述初始存储路径为存储所述待处理文件的路径,所述目标存储路径为存储处理后的文件的路径;

所述第一加解密模块确定所述初始存储路径对应的初始内容地址,并确定所述目标存储路径对应的目标内容地址,包括:所述第一加解密模块通过内存映射函数确定所述初始存储路径对应的所述初始内容地址,并确定所述目标存储路径对应的所述目标内容地址;

所述第一加解密模块将所述初始内容地址和所述目标内容地址发送至所述第二加解密模块;所述第一加解密模块根据所述初始存储路径读取所述待处理文件的长度,并将所述待处理文件的长度发送至所述第二加解密模块;

所述第二加解密模块根据所述初始内容地址,获取所述待处理文件并对所述待处理文件进行所述第一处理,将处理后的文件写入所述目标内容地址,包括:所述第二加解密模块根据所述初始内容地址和所述待处理文件的长度,读取所述待处理文件,对所述待处理文件进行所述第一处理,并将处理后的文件写入所述目标内容地址。

2.根据权利要求1所述的方法,其特征在于,所述第一处理为加密处理,所述第二加解密模块包括加密单元,所述第二加解密模块根据所述初始内容地址和所述待处理文件的长度,读取所述待处理文件,对所述待处理文件进行所述第一处理,并将处理后的文件写入所述目标内容地址,包括:所述加密单元根据所述初始内容地址、所述待处理文件的长度和预设分段长度,分段依次获取所述待处理文件的内容,得到至少一个明文子文件;

所述加密单元依次对各个所述明文子文件进行加密处理,得到各个所述明文子文件对应的密文子文件;

所述加密单元根据所述目标内容地址,依次写入各个所述密文子文件。

3.根据权利要求2所述的方法,其特征在于,所述加密单元依次对各个所述明文子文件进行加密处理,得到各个所述明文子文件对应的密文子文件,包括:所述加密单元根据预设加密协议,获取第一密钥,并根据所述第一密钥对第一明文子文件进行加密处理,得到初始密文子文件;所述第一明文子文件为所述至少一个明文子文件中的任一个;

所述加密单元通过预设的第二密钥对所述第一密钥进行加密处理,得到第一加密密钥;

所述加密单元将所述第一加密密钥写入所述初始密文子文件的预设位置,得到所述第一明文子文件对应的密文子文件。

4.根据权利要求1所述的方法,其特征在于,所述第一处理为解密处理,所述第二加解密模块包括解密单元,所述待处理文件包括至少一个密文子文件,所述第二加解密模块根据所述初始内容地址和所述待处理文件的长度,读取所述待处理文件,对所述待处理文件进行所述第一处理,并将处理后的文件写入所述目标内容地址,包括:所述解密单元以所述初始内容地址作为起始地址,依次获取所述待处理文件的长度范围内的各个所述密文子文件;

所述解密单元依次对各个所述密文子文件进行解密处理,得到各个所述密文子文件对应的明文子文件;

所述解密单元根据所述目标内容地址,依次写入各个所述明文子文件。

5.根据权利要求4所述的方法,其特征在于,所述解密单元依次对各个所述密文子文件进行解密处理,得到各个所述密文子文件对应的明文子文件,包括:所述解密单元从第一密文子文件的预设位置获取第一加密密钥;所述第一密文子文件为所述至少一个密文子文件中的任一个;

所述解密单元通过预设的第二密钥对所述第一加密密钥进行解密处理,得到第一密钥;

所述解密单元通过所述第一密钥对所述第一密文子文件进行解密处理,得到所述第一密文子文件对应的明文子文件。

6.一种文件处理装置,应用于计算机设备,其特征在于,所述装置包括位于所述计算机设备中用户态的第一加解密模块和位于所述计算机设备中的内核态的第二加解密模块;

所述第一加解密模块用于接收处理指令,所述处理指令中包括初始存储路径和目标存储路径;所述处理指令用于指示对待处理文件进行第一处理,所述第一处理为加密处理或解密处理,所述初始存储路径为存储所述待处理文件的路径,所述目标存储路径为存储处理后的文件的路径;

所述第一加解密模块还用于确定所述初始存储路径对应的初始内容地址,确定所述目标存储路径对应的目标内容地址,通过内存映射函数确定所述初始存储路径对应的所述初始内容地址,并确定所述目标存储路径对应的所述目标内容地址;并将所述初始内容地址和所述目标内容地址发送至所述第二加解密模块;所述第一加解密模块用于根据所述初始存储路径读取所述待处理文件的长度,并将所述待处理文件的长度发送至所述第二加解密模块;

所述第二加解密模块用于根据所述初始内容地址,获取所述待处理文件并对所述待处理文件进行所述第一处理,将处理后的文件写入所述目标内容地址,包括:所述第二加解密模块用于根据所述初始内容地址和所述待处理文件的长度,读取所述待处理文件,对所述待处理文件进行所述第一处理,并将处理后的文件写入所述目标内容地址。

7.根据权利要求6所述的装置,其特征在于,所述第一处理为加密处理,所述第二加解密模块包括加密单元,所述加密单元用于根据所述初始内容地址、所述待处理文件的长度和预设分段长度,分段依次获取所述待处理文件的内容,得到至少一个明文子文件;

所述加密单元用于依次对各个所述明文子文件进行加密处理,得到各个所述明文子文件对应的密文子文件;

所述加密单元用于根据所述目标内容地址,依次写入各个所述密文子文件。

8.根据权利要求7所述的装置,其特征在于,所述加密单元用于根据预设加密协议,获取第一密钥,并根据所述第一密钥对第一明文子文件进行加密处理,得到初始密文子文件;

所述第一明文子文件为所述至少一个明文子文件中的任一个;

所述加密单元用于通过预设的第二密钥对所述第一密钥进行加密处理,得到第一加密密钥;

所述加密单元用于将所述第一加密密钥写入所述初始密文子文件的预设位置,得到所述第一明文子文件对应的密文子文件。

9.根据权利要求6所述的装置,其特征在于,所述第一处理为解密处理,所述第二加解密模块包括解密单元,所述解密单元用于以所述初始内容地址作为起始地址,依次获取所述待处理文件的长度范围内的各个所述密文子文件;

所述解密单元用于依次对各个所述密文子文件进行解密处理,得到各个所述密文子文件对应的明文子文件;

所述解密单元用于根据所述目标内容地址,依次写入各个所述明文子文件。

10.根据权利要求9所述的装置,其特征在于,所述解密单元用于从第一密文子文件的预设位置获取第一加密密钥;所述第一密文子文件为所述至少一个密文子文件中的任一个;

所述解密单元用于通过预设的第二密钥对所述第一加密密钥进行解密处理,得到第一密钥;

所述解密单元用于通过所述第一密钥对所述第一密文子文件进行解密处理,得到所述第一密文子文件对应的明文子文件。

11.一种计算机设备,包括:包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至5中任一项所述的方法的步骤。

12.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至5中任一项所述的方法的步骤。

说明书 :

文件处理方法、装置、计算机设备和可读存储介质

技术领域

[0001] 本申请涉及信息安全技术领域,具体地,涉及一种文件处理方法、装置、计算机设备和可读存储介质。

背景技术

[0002] 为了保证文件传输的安全性,经常需要对文件进行加密和解密。相关技术中,对于文件的加密和解密主要通过读(read)系统调用函数和写(write)系统调用函数实现。
[0003] 具体的,以文件加密过程为例来说,用户态的文件加密模块接收到文件加密指令后,通过调用read系统调用函数将文件从内核态的磁盘读出到内存,然后加密模块在内存中对文件进行加密。加密完成后,加密模块通过write系统调用函数将加密后的文件写入到磁盘中。解密过程与此过程类似。
[0004] 上述加密和解密过程需要经过多次用户态与内核态的上下文切换,存在效率低下的问题。

发明内容

[0005] 本申请实施例中提供了一种文件处理方法、装置、计算机设备和可读存储介质。
[0006] 本申请实施例的第一个方面,提供了一种文件处理方法,应用于计算机设备,计算机设备包括位于用户态的第一加解密模块和位于内核态的第二加解密模块,该方法包括:第一加解密模块接收处理指令,处理指令中包括初始存储路径和目标存储路径;处理指令用于指示对待处理文件进行第一处理,第一处理为加密处理或解密处理,初始存储路径为存储待处理文件的路径,目标存储路径为存储处理后的文件的路径;第一加解密模块确定初始存储路径对应的初始内容地址,并确定目标存储路径对应的目标内容地址;第一加解密模块将初始内容地址和目标内容地址发送至第二加解密模块;第二加解密模块根据初始内容地址,获取待处理文件并对待处理文件进行第一处理,将处理后的文件写入目标内容地址。
[0007] 在本申请一个可选的实施例中,第一加解密模块确定初始存储路径对应的初始内容地址,并确定目标存储路径对应的目标内容地址,包括:第一加解密模块通过内存映射函数确定初始存储路径对应的初始内容地址,并确定目标存储路径对应的目标内容地址。
[0008] 在本申请一个可选的实施例中,该方法还包括:第一加解密模块根据初始存储路径读取待处理文件的长度,并将待处理文件的长度发送至第二加解密模块;第二加解密模块根据初始内容地址,获取待处理文件并对待处理文件进行第一处理,将处理后的文件写入目标内容地址,包括:第二加解密模块根据初始内容地址和待处理文件的长度,读取待处理文件,对待处理文件进行第一处理,并将处理后的文件写入目标内容地址。
[0009] 在本申请一个可选的实施例中,第一处理为加密处理,第二加解密模块包括加密单元,第二加解密模块根据初始内容地址和待处理文件的长度,读取待处理文件,对待处理文件进行第一处理,并将处理后的文件写入目标内容地址,包括:加密单元根据初始内容地址、待处理文件的长度和预设分段长度,分段依次获取待处理文件的内容,得到至少一个明文子文件;加密单元依次对各个明文子文件进行加密处理,得到各个明文子文件对应的密文子文件;加密单元根据目标内容地址,依次写入各个密文子文件。
[0010] 在本申请一个可选的实施例中,加密单元依次对各个明文子文件进行加密处理,得到各个明文子文件对应的密文子文件,包括:加密单元根据预设加密协议,获取第一密钥,并根据第一密钥对第一明文子文件进行加密处理,得到初始密文子文件;第一明文子文件为至少一个明文子文件中的任一个;加密单元通过预设的第二密钥对第一密钥进行加密处理,得到第一加密密钥;加密单元将第一加密密钥写入初始密文子文件的预设位置,得到第一明文子文件对应的密文子文件。
[0011] 在本申请一个可选的实施例中,第一处理为解密处理,第二加解密模块包括解密单元,待处理文件包括至少一个密文子文件,第二加解密模块根据初始内容地址和待处理文件的长度,读取待处理文件,对待处理文件进行第一处理,并将处理后的文件写入目标内容地址,包括:解密单元以初始内容地址作为起始地址,依次获取待处理文件的长度范围内的各个密文子文件;解密单元依次对各个密文子文件进行解密处理,得到各个密文子文件对应的明文子文件;解密单元根据目标内容地址,依次写入各个明文子文件。
[0012] 在本申请一个可选的实施例中,解密单元依次对各个密文子文件进行解密处理,得到各个密文子文件对应的明文子文件,包括:解密单元从第一密文子文件的预设位置获取第一加密密钥;第一密文子文件为至少一个密文子文件中的任一个;解密单元通过预设的第二密钥对第一加密密钥进行解密处理,得到第一密钥;解密单元通过第一密钥对第一密文子文件进行解密处理,得到第一密文子文件对应的明文子文件。
[0013] 本申请实施例的第三个方面,提供了一种文件处理装置,应用于计算机设备,装置包括位于计算机设备中用户态的第一加解密模块和位于计算机设备中的内核态的第二加解密模块;
[0014] 第一加解密模块用于接收处理指令,处理指令中包括初始存储路径和目标存储路径;处理指令用于指示对待处理文件进行第一处理,第一处理为加密处理或解密处理,初始存储路径为存储待处理文件的路径,目标存储路径为存储处理后的文件的路径;
[0015] 第一加解密模块还用于确定初始存储路径对应的初始内容地址,确定目标存储路径对应的目标内容地址,并将初始内容地址和目标内容地址发送至第二加解密模块;
[0016] 第二加解密模块用于根据初始内容地址,获取待处理文件并对待处理文件进行第一处理,将处理后的文件写入目标内容地址。
[0017] 在本申请一个可选的实施例中,第一加解密模块通过内存映射函数确定初始存储路径对应的初始内容地址,并确定目标存储路径对应的目标内容地址。
[0018] 在本申请一个可选的实施例中,第一加解密模块用于根据初始存储路径读取待处理文件的长度,并将待处理文件的长度发送至第二加解密模块;
[0019] 第二加解密模块用于根据初始内容地址,获取待处理文件并对待处理文件进行第一处理,将处理后的文件写入目标内容地址,包括:
[0020] 第二加解密模块用于根据初始内容地址和待处理文件的长度,读取待处理文件,对待处理文件进行第一处理,并将处理后的文件写入目标内容地址。
[0021] 在本申请一个可选的实施例中,第一处理为加密处理,第二加解密模块包括加密单元,
[0022] 加密单元用于根据初始内容地址、待处理文件的长度和预设分段长度,分段依次获取待处理文件的内容,得到至少一个明文子文件;
[0023] 加密单元用于依次对各个明文子文件进行加密处理,得到各个明文子文件对应的密文子文件;
[0024] 加密单元用于根据目标内容地址,依次写入各个密文子文件。
[0025] 在本申请一个可选的实施例中,加密单元用于根据预设加密协议,获取第一密钥,并根据第一密钥对第一明文子文件进行加密处理,得到初始密文子文件;第一明文子文件为至少一个明文子文件中的任一个;
[0026] 加密单元用于通过预设的第二密钥对第一密钥进行加密处理,得到第一加密密钥;
[0027] 加密单元用于将第一加密密钥写入初始密文子文件的预设位置,得到第一明文子文件对应的密文子文件。
[0028] 在本申请一个可选的实施例中,第一处理为解密处理,第二加解密模块包括解密单元,解密单元用于以初始内容地址作为起始地址,依次获取待处理文件的长度范围内的各个密文子文件;
[0029] 解密单元用于依次对各个密文子文件进行解密处理,得到各个密文子文件对应的明文子文件;
[0030] 解密单元用于根据目标内容地址,依次写入各个明文子文件。
[0031] 在本申请一个可选的实施例中,解密单元用于从第一密文子文件的预设位置获取第一加密密钥;第一密文子文件为至少一个密文子文件中的任一个;
[0032] 解密单元用于通过预设的第二密钥对第一加密密钥进行解密处理,得到第一密钥;
[0033] 解密单元用于通过第一密钥对第一密文子文件进行解密处理,得到第一密文子文件对应的明文子文件。
[0034] 本申请实施例的第三个方面,提供了一种计算机设备,包括:包括存储器和处理器,存储器存储有计算机程序,处理器执行计算机程序时实现如上任一项方法的步骤。
[0035] 本申请实施例的第四个方面,提供了一种计算机可读存储介质,其上存储有计算机程序,其特征在于,计算机程序被处理器执行时实现如上任一项的方法的步骤。
[0036] 本申请实施例提供的文件处理方法、装置、计算机设备和计算机可读存储介质,通过用户态中的第一加解密模块接收处理指令,并确定处理指令中的初始存储路径和目标存储路径对应的初始内容地址和目标内容地址。第一加解密模块将初始内容地址和目标内容地址发送至内核态中的第二加解密模块。第二加解密模块根据初始内容地址获取待处理文件并进行加密处理或解密处理,并将处理后的文件写入目标内容地址。上述文件处理过程能够实现文件的加密或解密,且整个过程中,用户态和内核态只需要在发送初始内容地址和目标内容地址时进行一次上下文切换,对待处理文件的获取和第一处理,以及对处理后的文件的写入均由内核态的第二加解密模块实现,因而能够有效减少用户态和内核态的上下文切换次数,提高加密/解密效率。

附图说明

[0037] 此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
[0038] 图1为本申请实施例提供的一例计算机设备的结构示意图;
[0039] 图2为本申请实施例提供的一例计算机设备的软件架构图;
[0040] 图3为本申请实施例提供的一例文件处理方法的流程示意图;
[0041] 图4为本申请实施例提供的另一例文件处理方法的流程示意图;
[0042] 图5为本申请实施例提供的又一例文件处理方法的流程示意图;
[0043] 图6为本申请实施例提供的又一例文件处理方法的流程示意图;
[0044] 图7为本申请实施例提供的又一例文件处理方法的流程示意图;
[0045] 图8为本申请一个实施例提供的文件处理装置结构示意图。

具体实施方式

[0046] 在实现本申请的过程中,发明人发现,目前通过read系统调用函数和write系统调用函数的文件加密和解密方法,用户态和内核态的上下文切换次数较多,文件加密/解密效率低下。
[0047] 针对上述问题,本申请实施例中提供了一种文件处理方法,能够减少用户态和内核态的上下文切换次数,提高文件加密/解密的效率。
[0048] 本申请实施例中的方案可以采用各种计算机语言实现,例如,面向对象的程序设计语言Java和直译式脚本语言JavaScript等。
[0049] 为了使本申请实施例中的技术方案及优点更加清楚明白,以下结合附图对本申请的示例性实施例进行进一步详细的说明,显然,所描述的实施例仅是本申请的一部分实施例,而不是所有实施例的穷举。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
[0050] 以下对本申请实施例提供的文件处理方法的应用环境作简要说明:
[0051] 示例性的,图1为本申请实施例提供的一例计算机设备的结构示意图。该计算机设备可以是终端。如图1所示,该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质例如可以为磁盘。非易失性存储介质中存储有文件(可以为待处理的文件,也可以为处理后的文件)、操作系统和计算机程序等。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种文件处理方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
[0052] 示例性的,图2为本申请实施例提供的一例计算机设备的软件架构图。如图2所示,该计算机设备的操作系统可以包括用户态和内核态。其中,用户态也称为用户空间,内核态也称为内核空间。用户态向计算机设备中应用程序提供运行空间。内核态控制计算机设备的硬件资源,例如协调中央处理器(central processing unit,CPU)资源,分配内存资源等,并且提供稳定的环境供应用程序运行。内核态可以提供一组通用的访问接口,即系统调用函数,供用户态中的应用程序调用,以使应用程序能够访问到内核态所管理的资源。
[0053] 本申请实施例中,计算机设备包括位于用户态的第一加解密模块和位于内核态的第二加解密模块。其中,第一加解密模块也称为加解密程序,可以为应用程序,也可以为应用程序中的部分模块。第一加解密模块用于与用户交互,例如接收用户指令等。第二加解密模块也称为虚拟加解密设备,用于接受第一加解密模块的调用,实现对非易失性存储介质中文件的加密或解密。
[0054] 可选的,第二加解密模块可以包括加密单元和解密单元。加密单元也称为虚拟加密设备,解密单元也称为虚拟解密设备。另外,内核态还可以提供加密接口和解密接口,以使用户态的第一加解密模块能够与用户态的加密单元和解密单元交互。
[0055] 以下以本申请实施例提供的文件处理方法应用于具有如图1和图2所示结构的计算机设备为例,对该方法的实现过程进行说明。
[0056] 示例性的,图3为本申请实施例提供的一例文件处理方法的流程示意图,如图3所示,该方法包括以下步骤101‑步骤104:
[0057] 步骤101、第一加解密模块接收处理指令,处理指令中包括初始存储路径和目标存储路径。
[0058] 处理指令用于指示对待处理文件进行第一处理。第一处理为加密处理或解密处理。也就是说,第一处理指令可以为加密指令或解密指令。
[0059] 初始存储路径是指存储待处理文件的路径。目标存储路径是指存储处理后的文件的路径。以第一处理为加密处理来说,初始存储路径也即加密前的文件(即明文文件)的存储路径,目标存储路径也即加密后的文件(即密文文件)的存储路径。以第一处理为解密处理来说,初始存储路径也即解密前的文件(即密文文件)的存储路径,目标存储路径也即解密后的文件(即明文文件)的存储路径。存储路径是指在非易失性存储介质中的存储路径,如在磁盘中的存储路径。例如,初始存储路径可以为D:\第一文件夹\第二文件夹。目标存储路径可以为D:\第一文件夹\第三文件夹。
[0060] 可选的,处理指令可以由用户输入。例如,用户在计算机设备中选中某一文件,并点击右键,在弹出的选项中选择“加密”选项。第一加解密模块响应于用户的选择操作,确定用户输入了加密指令后,获取用户选中的文件当前所在的存储路径,将该路径作为初始存储路径。之后,第一加解密模块调用系统相关函数弹出目标存储路径的输入窗口。用户在该输入窗口输入目标存储路径。第一加解密模块获取该目标存储路径。至此,第一加解密模块接收了用户输入的加密指令,并确定了该加密指令中包含的初始存储路径和目标存储路径。可以理解,上述过程仅为举例,并不造成对本申请接收处理指令的任何限定,在其他实施例中,第一加解密模块也可以通过其他方式接收处理指令。
[0061] 步骤102、第一加解密模块确定初始存储路径对应的初始内容地址,并确定目标存储路径对应的目标内容地址。
[0062] 初始内容地址是指待处理文件对应的内容地址。目标内容地址是指处理后的文件对应的内容地址。可以理解,存储路径与内容地址可以具有映射关系,基于映射关系获取初始存储路径对应的初始内容地址,并获取初始目标存储路径对应的目标内容地址。
[0063] 步骤103、第一加解密模块将初始内容地址和目标内容地址发送至第二加解密模块。
[0064] 可选的,第一加解密模块可以通过对应的加解密接口(包括如上所述的加密接口和解密接口),将初始内容地址和目标内容地址写入第二加解密模块。
[0065] 步骤104、第二加解密模块根据初始内容地址,获取待处理文件并对待处理文件进行第一处理,将处理后的文件写入目标内容地址。
[0066] 第二加解密模块接收到第一加解密模块发送的初始内容地址后,可以按照该初始内容地址读取待处理文件,并对待处理文件进行第一处理。可选的,第二加解密模块可以通过预设的固定密钥对待处理文件进行第一处理,也可以通过预设的加密协议获取非固定的密钥,并通过该非固定的密钥对待处理文件进行第一处理。第二加解密模块将处理后的文件按照目标内容地址写入存储空间。
[0067] 需要说明的是,初始存储路径和目标存储路径可以相同也可以不同。在初始存储路径和目标存储路径相同的情况下,对应的初始内容地址和目标内容地址也相同,处理后的文件将写入初始文件原来的存储位置,也即,处理后的文件覆盖待处理文件。这样,无需额外保存待处理文件,节约存储空间。
[0068] 本实施例中,通过用户态中的第一加解密模块接收处理指令,并确定处理指令中的初始存储路径和目标存储路径对应的初始内容地址和目标内容地址。第一加解密模块将初始内容地址和目标内容地址发送至内核态中的第二加解密模块。第二加解密模块根据初始内容地址获取待处理文件并进行加密处理或解密处理,并将处理后的文件写入目标内容地址。上述文件处理过程能够实现文件的加密或解密,且整个过程中,用户态和内核态只需要在发送初始内容地址和目标内容地址时进行一次上下文切换,对待处理文件的获取和第一处理,以及对处理后的文件的写入均由内核态的第二加解密模块实现,因而能够有效减少用户态和内核态的上下文切换次数,提高加密/解密效率。
[0069] 以下结合附图对加密处理和解密处理分别进行进一步详细说明。
[0070] 1)加密处理
[0071] 本实施例中,加密处理过程可以由图2中所示的第二加解密模块中的加密单元实现。
[0072] 示例性的,图4为本申请实施例提供的一例文件加密过程的流程示意图。如图4所示,该过程包括如下步骤201‑步骤204:
[0073] 步骤201、第一加解密模块接收加密指令,加密指令中包括初始存储路径和目标存储路径。
[0074] 如上所述,初始存储路径也即存储明文文件的路径,目标存储路径也即存储密文文件的路径。该步骤与上述步骤101相同,不再赘述。
[0075] 步骤202、第一加解密模块根据初始存储路径获取待处理文件的长度。
[0076] 可选的,第一加解密模块可以根据初始存储路径打开待处理文件,并获取待处理文件的长度。待处理文件的长度例如可以通过字节数表示。
[0077] 步骤203、第一加解密模块确定初始存储路径对应的初始内容地址,并确定目标存储路径对应的目标内容地址。
[0078] 可选的,第一加解密模块可以通过内存映射函数(memory map,mmap)获取初始存储路径对应的初始内容地址,并获取目标存储路径对应的目标内容地址。该实现方式中,通过调用mmap函数,能够快速方便的获取初始存储路径和目标存储路径对应的内容地址,进一步提高加密/解密的效率。
[0079] 步骤204、第一加解密模块将待处理文件的长度、初始内容地址和目标内容地址发送至第二加解密模块中的加密单元。
[0080] 可选的,第一加解密模块可以通过加密接口将待处理文件的长度、初始内容地址和目标内容地址发送至内核态的加密单元。
[0081] 步骤205、第二加解密模块中的加密单元根据待处理文件的长度(称为第一长度)和初始内容地址获取待处理文件,并对待处理文件进行加密处理,将处理后的文件写入目标内容地址。
[0082] 可选的,加密单元以初始内容地址作为读取起始地址,读取第一长度的内容,即得到待处理文件。可选的,加密单元可以一次性读取待处理文件,对待处理文件进行一次性加密处理。加密单元也可以分段读取待处理文件,并分段对待处理文件进行加密处理。
[0083] 该实现方式中,通过获取待处理文件的长度,基于初始内容地址和待处理文件的长度,能够准确、快读的读取到待处理文件的所有内容,提高加密/解密的处理准确率和处理效率。
[0084] 以下结合图5,以分段获取待处理文件并分段加密处理为例,对步骤204进行进一步说明。
[0085] 如图5所示,图4中的步骤205、第二加解密模块中的加密单元根据第一长度和初始内容地址获取待处理文件,并对待处理文件进行加密处理,将处理后的文件写入目标内容地址,包括如下步骤301‑步骤303:
[0086] 步骤301、第二加解密模块中的加密单元根据初始内容地址、第一长度和预设分段长度,分段依次获取待处理文件的内容,得到至少一个明文子文件。
[0087] 具体的,加密单元可以以初始内容地址作为起始地址,获取1个预设分段长度的内容,得到第一个明文子文件。再以初始内容地址+1个预设分段长度对应的内容地址作为起始地址,获取1个预设分段长度的内容,得到第二个明文字子文件。然后以初始内容地址+2个预设分段长度对应的内容地址作为起始地址,获取1个预设分段长度的内容,得到第三个明文子文件。以此类推,直至获取的所有内容的长度为第一长度。此时,若最后一个段获取的内容不足1个预设分段长度,则将获取的内容补齐至1个预设分段长度,得到最后一个明文子文件。
[0088] 步骤302、第二加解密模块中的加密单元依次对各个明文子文件进行加密处理,得到各个明文子文件对应的密文子文件。
[0089] 以任意一个明文子文件(下称为第一明文子文件)进行非固定密钥加密为例进行说明:加密单元根据预设加密协议,获取第一密钥。加密单元根据第一密钥对第一明文子文件进行加密,得到初始密文子文件。加密单元通过预设的第二密钥对第一密钥进行加密,得到第一加密密钥。加密单元将第一加密密钥写入初始密文子文件的预设位置,得到第一明文子文件对应的密文子文件。
[0090] 可选的,第二密钥可以为固定密钥。预设位置例如可以为初始密文子文件的起始位置或末尾位置。
[0091] 该实现方式中,第一密钥根据预设加密协议产生,而非固定密钥,基于第一密钥对第一明文子文件进行加密,能够提高加密效果,即提高得到的密文子文件的安全性。另外,通过预设的第二密钥对第一密钥进行加密,将生成第一加密密钥写入初始密文子文件后,随初始密文子文件一同写入目标内容地址,这样无需单独发送密钥,提高加密和解密的处理效率。
[0092] 步骤303、第二加解密模块中的加密单元根据目标内容地址,依次写入各个密文子文件。
[0093] 具体的,加密单元以目标内容地址作为初始地址,按照先后顺序,依次将各个密文子文件写入存储空间,即先加密的密文子文件先写入,后加密的密文子文件后写入。
[0094] 需要说明的是,上述过程可以按照上述步骤依次完成,也可以逐一获取明文子文件并进行加密处理和写入。例如,获取第一个明文子文件,对第一个明文子文件加密生成第一个密文子文件,并将第一个密文子文件写入存储空间;之后按照上述过程获取并处理第二个明文子文件、第三个明文子文件......直至所有的明文子文件处理完。
[0095] 本实施例中,通过对待处理文件进行分段加密和分段写入,提高加密效果,进而提高了文件安全性,同时,也提高了加密效率。
[0096] 2)解密处理
[0097] 本实施例中,解密处理过程可以由图2中所示的第二加解密模块中的解密单元实现。示例性的,图6为本申请实施例提供的另一例文件加密过程的流程示意图。如图6所示,该过程包括如下步骤401‑步骤404:
[0098] 步骤401、第一加解密模块接收解密指令,解密指令中包括初始存储路径和目标存储路径。
[0099] 如上所述,初始存储路径也即存储密文文件的路径,目标存储路径也即存储明文文件的路径。该步骤与上述步骤101相同,不再赘述。
[0100] 步骤402、第一加解密模块根据初始存储路径获取待处理文件的长度。
[0101] 该步骤与上述步骤202类似,不再赘述。
[0102] 步骤403、第一加解密模块确定初始存储路径对应的初始内容地址,并确定目标存储路径对应的目标内容地址。
[0103] 该步骤与上述步骤203类似,不再赘述。
[0104] 步骤404、第一加解密模块将待处理文件的长度、初始内容地址和目标内容地址发送至第二加解密模块中的解密单元。
[0105] 可选的,第一加解密模块可以通过解密接口将待处理文件的长度、初始内容地址和目标内容地址发送至内核态的解密单元。
[0106] 步骤405、第二加解密模块中的解密单元根据待处理文件的长度(称为第二长度)和初始内容地址获取待处理文件,并对待处理文件进行解密处理,将处理后的文件写入目标内容地址。
[0107] 可选的,解密单元以初始内容地址作为读取起始地址,读取第二长度的内容,即得到待处理文件。可选的,根据加密方式的不同,解密单元对待处理文件的读取和解密方式不同。若加密时采用一次性加密的方式,则解密单元可以一次性读取待处理文件,对待处理文件进行一次性解密处理。若加密时采用分段加密的方式,则解密单元分段读取待处理文件,并分段对待处理文件进行解密处理。
[0108] 以下结合图7,以分段读取待处理文件并分段解密为例,对步骤404进行进一步说明。
[0109] 如图7所示,图6中的步骤405、第二加解密模块中的解密单元根据第二长度和初始内容地址获取待处理文件,并对待处理文件进行解密处理,将处理后的文件写入目标内容地址,包括如下步骤501‑步骤503:
[0110] 步骤501、第二加解密模块中的解密单元以初始内容地址作为起始地址,依次获取第二长度范围内的各个密文子文件。
[0111] 步骤502、第二加解密模块中的解密单元依次对各个密文子文件进行解密处理,得到各个密文子文件对应的明文子文件。
[0112] 以对任意一个密文子文件(下成为第一密文子文件)进行解密为例说明:解密单元从第一密文子文件的预设位置获取第一加密密钥。解密单元通过预设的第二密钥对第一加密密钥进行解密处理,得到第一密钥。通过第一密钥对第一密文子文件进行解密处理,得到第一密文子文件对应的明文子文件。
[0113] 该过程为上述步骤302所示过程的逆过程,具体实现过程和有益效果不再赘述。
[0114] 步骤503、第二加解密模块中的解密单元根据目标内容地址,依次写入各个明文子文件。
[0115] 该过程与步骤303过程类似,不再赘述。
[0116] 总而言之,本实施例中解密过程为上述加密过程的逆过程,具体的实现方式和有益效果可以参见上述实施例。
[0117] 需要说明的是,执行第一处理时,可以采用同步处理的方式,也可以采用异步处理的方式。若采用同步处理的方式,则第一加解密模块在将待处理文件的长度、初始内容地址和目标内容地址发送至第二加解密模块后,第一加解密模块会一直等待第一处理完成后再返回。若采用异步处理的方式,则第一加解密模块在将待处理文件的长度、初始内容地址和目标内容地址发送至第二加解密模块后,第一加解密模块会立即返回,后续第一加解密模块可以通过第二加解密模块的状态确定第一处理是否已完成。
[0118] 另外,可以理解的是,上述加密处理过程和解密处理过程可以同时进行。而且,加密处理和解密处理的待处理文件也可以为同一个文件。这种情况下,采用非固定密钥进行加密时,第一加密密钥可以写入初始密文子文件的末尾位置,如此,能够防止加密和解密处理过程冲突,提高加密和解密的准确性。
[0119] 应该理解的是,虽然流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
[0120] 请参见图8,本申请一个实施例提供了一种文件处理装置700,该装置应用于计算机设备。该装置700包括第一加解密模块701和第二加解密模块702,第一加解密模块位于用户态,第二加解密模块位于用户态;
[0121] 第一加解密模块701用于接收处理指令,处理指令中包括初始存储路径和目标存储路径;处理指令用于指示对待处理文件进行第一处理,第一处理为加密处理或解密处理,初始存储路径为存储待处理文件的路径,目标存储路径为存储处理后的文件的路径;
[0122] 第一加解密模块701还用于确定初始存储路径对应的初始内容地址,确定目标存储路径对应的目标内容地址,并将初始内容地址和目标内容地址发送至第二加解密模块702;
[0123] 第二加解密模块702用于根据初始内容地址,获取待处理文件并对待处理文件进行第一处理,将处理后的文件写入目标内容地址。
[0124] 在一个实施例中,第一加解密模块701具体用于通过内存映射函数确定初始存储路径对应的初始内容地址,并确定目标存储路径对应的目标内容地址。
[0125] 在一个实施例中,第一加解密模块701具体用于根据初始存储路径读取待处理文件的长度,并将待处理文件的长度发送至第二加解密模块702;第二加解密模块702具体用于根据初始内容地址和待处理文件的长度,读取待处理文件,对待处理文件进行第一处理,并将处理后的文件写入目标内容地址。
[0126] 在一个实施例中,第一处理为加密处理,第二加解密模块702包括加密单元7021,加密单元7021用于:根据初始内容地址、待处理文件的长度和预设分段长度,分段依次获取待处理文件的内容,得到至少一个明文子文件;依次对各个明文子文件进行加密处理,得到各个明文子文件对应的密文子文件;根据目标内容地址,依次写入各个密文子文件。
[0127] 在一个实施例中,加密单元7021具体用于:根据预设加密协议,获取第一密钥,并根据第一密钥对第一明文子文件进行加密处理,得到初始密文子文件;第一明文子文件为至少一个明文子文件中的任一个;通过预设的第二密钥对第一密钥进行加密处理,得到第一加密密钥;将第一加密密钥写入初始密文子文件的预设位置,得到第一明文子文件对应的密文子文件。
[0128] 在一个实施例中,第一处理为解密处理,第二加解密模块702包括解密单元7022,待处理文件包括至少一个密文子文件,解密单元7022具体用于:以初始内容地址作为起始地址,依次获取待处理文件的长度范围内的各个密文子文件;解密单元7022依次对各个密文子文件进行解密处理,得到各个密文子文件对应的明文子文件;解密单元7022根据目标内容地址,依次写入各个明文子文件。
[0129] 在一个实施例中,解密单元7022具体用于:从第一密文子文件的预设位置获取第一加密密钥;第一密文子文件为至少一个密文子文件中的任一个;通过预设的第二密钥对第一加密密钥进行解密处理,得到第一密钥;通过第一密钥对第一密文子文件进行解密处理,得到第一密文子文件对应的明文子文件。
[0130] 关于上述文件处理装置的具体限定可以参见上文中对于文件处理方法的限定,在此不再赘述。上述文件处理装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
[0131] 在一个实施例中,提供了一种计算机设备,该计算机设备的内部结构图可以如图1所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现如上的一种文件处理方法。包括:包括存储器和处理器,存储器存储有计算机程序,处理器执行计算机程序时实现如上车辆控制方法中的任一步骤。
[0132] 在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时可以实现如上车辆控制方法中的任一步骤。
[0133] 本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD‑ROM、光学存储器等)上实施的计算机程序产品的形式。
[0134] 本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0135] 这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0136] 这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0137] 尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
[0138] 显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。