文件加密方法、解密方法及装置
技术领域
本申请涉及信息安全技术领域,具体而言,涉及一种文件加密方法、解密方法及装置。
背景技术
随着计算机技术应用的普及,计算机在人们的生产、生活中有着举足轻重的地位。计算机在使用过程中,往往会受到各种挑战,其中,计算机上的各种文件的安全就是一个非常大的挑战。
为了保证文件的安全,发展出了各种行之有效的加解密技术。现有技术中,为了保证文件的安全性,常常会采用各种加密算法给文件加密,从而避免文件被非法篡改以保证文件的安全性。但是,现有的这些加解密方法处理的文件中,如果别人获取了该文件的解密密钥,可能会对文件进行一些非法篡改,这种加密处理的文件的安全性不能得到保证。
发明内容
为了克服现有技术中的上述不足,本申请的目的在于提供一种文件加密方法,所述文件加密方法包括:
获取待加密文件;
根据所述待加密文件生成包括预分块信息及第一校验码的第一子数据,所述第一校验码根据所述待加密文件计算获得;
根据所述第一子数据生成包括第二校验码的第二子数据,所述第二校验码根据所述第一子数据计算获得;
采用第一密钥对所述第一子数据进行加密,获得第一子数据密文;
根据所述第一子数据密文和所述第二子数据获得加密文件元数据;
按照所述预分块信息划分所述待加密文件,获得多个块文件以及分块元数据;
采用第二密钥对所述多个块文件分别进行加密,获得与每个所述块文件对应的加密块文件;
将所述加密文件元数据、每个所述加密块文件以及所述分块元数据按照第一预设顺序组成加密文件。
可选地,所述采用第一密钥对所述第一子数据进行加密的步骤中,加密所述第一子数据的方法为对称加密;
所述采用第二密钥对所述多个块文件分别进行加密的步骤中,加密所述多个块文件的方法为对称加密。
可选地,所述方法还包括,在所述根据所述待加密文件生成包括预分块信息及第一校验码的第一子数据的步骤前,获取目的地址的扇区大小;
所述根据所述待加密文件生成包括预分块信息及第一校验码的第一子数据的步骤包括:
根据所述待加密文件计算与所述待加密文件对应的第一校验码;
根据所述待加密文件及所述目的地址的扇区大小获取预分块信息;
生成包括所述预分块信息及所述第一校验码的所述第一子数据。
可选地,所述方法还包括,
在所述生成包括所述预分块信息及所述第一校验码的所述第一子数据的步骤前,根据所述待加密文件计算与所述待加密文件对应的第三校验码;
所述第一子数据还包括所述第三校验码。
可选地,所述按照所述预分块信息对所述待加密文件进行分块,获得多个块文件以及分块元数据的步骤,包括:
根据所述预分块信息对所述待加密文件进行分块,获得多个块文件;
根据所述预分块信息及每个所述块文件获得分别与每个块文件对应的分块元数据。
可选地,所述将所述加密文件元数据、所述加密块文件以及所述分块元数据按照第一预设顺序组成加密文件的步骤包括:
分别将每个所述加密块文件与其对应的分块元数据组成一个与该块文件对应的单位块;
将每个所述单位块以及所述加密文件元数据按照第一预设顺序组成加密文件。
本发明的另一目的还在于提供一种文件解密方法,应用于以上任一项所述加密方法所获得的文件的解密,包括:
获取加密文件;
从所述加密文件中获取包括第一子数据密文和第二子数据的加密文件元数据,解密所述第一子数据密文,获得第一子数据以及第一校验码;从所述第二子数据中获取第二校验码;
根据所述第一子数据获取第一验证码;
利用所述第二校验码对所述第一验证码进行校验;
如果所述第一验证码校验成功,则解密所述加密文件中的多个加密块文件,并组成临时文件;
根据所述临时文件获取第二验证码,利用所述第一校验码对所述第二验证码进行校验;
如果所述第二验证码校验成功,则根据所述临时文件获得解密文件。
可选地,所述解密所述加密文件中的多个加密块文件,组成临时文件的步骤包括:
分别将多个加密块文件解密,得到多个解密后的块文件;
根据第二预设顺序将所述解密后的块文件组成所述临时文件。
本发明的另一目的还在于提供一种加密装置,所述加密装置包括第一获取模块、第一生成模块、第一加密模块、第二生成模块、划分模块、第二加密模块和第三生成模块;
所述第一获取模块,用于获取待加密文件;
所述第一生成模块,用于根据所述待加密文件生成包括预分块信息及第一校验码的第一子数据,所述第一校验码根据所述待加密文件计算获得;
根据所述第一子数据生成包括第二校验码的第二子数据,所述第二校验码根据所述第一子数据计算获得;
所述第一加密模块,用于采用第一密钥对所述第一子数据进行加密,获得第一子数据密文;
所述第二生成模块,用于根据所述第一子数据密文和所述第二子数据获得加密文件元数据;
所述划分模块,用于按照所述预分块信息划分所述待加密文件,获得多个块文件以及分块元数据;
所述第二加密模块,用于采用第二密钥对所述多个块文件分别进行加密,获得与每个所述块文件对应的加密块文件;
所述第三生成模块,用于将所述加密文件元数据、每个所述加密块文件以及所述分块元数据按照第一预设顺序组成加密文件。
本发明的另一目的还在于提供一种解密装置,所述解密装置包括第二获取模块、第一解密模块、第一校验模块、第二解密模块、第二校验模块和第四生成模块;
所述第二获取模块,用于获取加密文件;
所述第一解密模块,用于从所述加密文件中获取包括第一子数据密文和第二子数据的加密文件元数据,解密所述第一子数据密文,获得第一子数据以及第一校验码;从所述第二子数据中获取第二校验码;
所述第一校验模块,用于根据所述第一子数据获取第一验证码;利用所述第二校验码对所述第一验证码进行校验;
所述第二解密模块,用于在所述第一验证码校验成功时,解密所述加密文件中的多个加密块文件,并组成临时文件;
所述第二校验模块,用于根据所述临时文件获取第二验证码,利用所述第一校验码对所述第二验证码进行校验;
所述第四生成模块,用于在所述第二验证码校验成功时,根据所述临时文件获得解密文件。
相对于现有技术而言,本申请具有以下有益效果:
本申请实施例的加密方法首先根据待加密文件生成包括预分块信息和第一校验码的第一子数据,根据第一子数据生成包括第二校验码的第二子数据,然后对第一子数据进行加密后与第二子数据一起组成加密文件元数据;再将待加密文件分为多个块文件后分别对每个块文件进行加密。最后将加密文件元数据和块文件组成加密文件。本申请实施例的解密方法中,在获取加密文件后,首先将第一子数据密文进行解密获得第一子数据,根据第一子数据计算第一验证码,然后根据第二校验码验证第一验证码,并在第一验证码验证成功的情况下,进行加密文件的分块和解密过程,并将解密后的块文件组成临时文件,根据临时文件计算第二验证码,利用第一校验码验证第二验证码,最后,在第二验证码验证成功的情况下,生成解密文件。本申请实施例通过设置第一子数据的校验机制和解密后的文件的校验机制,能够大大减小文件被非法修改的概率,大大提高文件的安全性。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本申请实施例提供的文件加密方法流程示意图;
图2为本申请实施例提供的文件解密方法流程示意图;
图3为本申请实施例提供的文件加密装置结构框图;
图4为本申请实施例提供的文件解密装置结构框图。
图标:11-第一获取模块;12-第一生成模块;13-第一加密模块;14-第二生成模块;15-划分模块;16-第二加密模块;17-第三生成模块;21-第二获取模块;22-第一解密模块;23-第一校验模块;24-第二解密模块;25-第二校验模块;26-第四生成模块。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。
因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
在本申请的描述中,还需要说明的是,除非另有明确的规定和限定,术语“设置”、“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本申请中的具体含义。
请参见图1,图1是本申请实施例提供的文件加密方法的流程图,以下结合附图对文件加密方法进行详细描述。
步骤S110,获取待加密文件。
步骤S120,根据所述待加密文件生成包括预分块信息及第一校验码的第一子数据,所述第一校验码根据所述待加密文件计算获得。
步骤S120包括:
根据待加密文件计算与待加密文件对应的第一校验码。
根据待加密文件生成包括预分块信息及第一校验码的第一子数据。
在该实施方式中,文件预分块信息可以包括块文件的数量、块文件的大小及尾块文件的实际大小。
在一种实施方式中,步骤S120前还可以包括,获取目的地址的扇区大小。该实施方式中,步骤S120包括:
根据所述待加密文件计算与所述待加密文件对应的第一校验码。
根据所述待加密文件及所述目的地址的扇区大小获取预分块信息。
生成包括所述预分块信息及所述第一校验码的所述第一子数据。
在本实施方式中,预分块信息可以包括块文件的数量、块文件的大小、尾块文件的实际大小和目的地址的扇区大小。
本实施方式中,根据目的地址的扇区大小生成预分块信息,能够使得对待加密文件加密根据扇区大小来划分。
在另一种实施方式中,在步骤S120前,还包括根据所述待加密文件计算与所述待加密文件对应的第三校验码。
在该实施方式中,所述第一子数据还可以包括所述第三校验码。
在第一子数据中设置第三校验码,能够用于在解密过程中,对文件进行进一步的校验。
步骤S130,根据所述第一子数据生成包括第二校验码的第二子数据,所述第二校验码根据所述第一子数据计算获得。
本实施例中的第二校验码用于在解密时验证第一子数据是否被修改。
在本实施例中,计算第一子数据的第二校验码,然后根据第二校验码组成第二子数据,使得第二校验码构成第二子数据的一部分。其中,第二子数据中还可以包括文件的加密算法等信息。
步骤S140,采用第一密钥对所述第一子数据进行加密,获得第一子数据密文。
对第一子数据进行加密,能够降低第一子数据被修改的概率。
步骤S150,根据所述第一子数据密文和所述第二子数据获得加密文件元数据。将第一子数据密文和第二子数据组成加密文件元数据,可以降低第一校验码被修改的概率,从而,提高对文件校验的准确性。
步骤S160,按照所述预分块信息划分所述待加密文件,获得多个块文件以及分块元数据。
在一种实施方式中,该步骤具体包括:
根据所述预分块信息对所述待加密文件进行分块,获得多个块文件。
根据所述预分块信息及每个所述块文件获得分别与每个块文件对应的分块元数据。
本实施方式中,当块文件为尾块时,可以使用预设好的数据来填充该块文件的空白部分。例如,可以采用零来填充该块文件的空白部分。
分块元数据可以包括:标记块文件是否为尾块的标记信息以及块文件的大小信息。
本实施方式中,所述根据所述预分块信息及每个所述块文件获得分别与每个块文件对应的分块元数据的步骤前还可以包括,分别计算与多个块文件中每个块文件对应的第四校验码。
该实施方式中,分块元数据包括标记块文件是否为尾块的标记信息、块文件的大小信息以及第四校验码。每个块文件的第四校验码可以用于对每个对应的块文件进行校验。
步骤S170,采用第二密钥对所述多个块文件分别进行加密,获得与每个所述块文件对应的加密块文件。
步骤S180,将所述加密文件元数据、每个所述加密块文件以及所述分块元数据按照第一预设顺序组成加密文件。
本实施例中,步骤S180具体包括:
分别将每个所述加密块文件与其对应的分块元数据组成一个与该块文件对应的单位块。
将每个所述单位块以及所述加密文件元数据按照第一预设顺序组成加密文件。
在一种实施方式中,如果步骤S120前包括获取目的地址的扇区大小时,则单位块的大小可以与目的地址的扇区大小相等。这样,在将加密文件写入目的地址时,每次可以将一个单位块写入一个扇区,从而能够提高文件写入速度。
第一预设顺序是根据实际需要由人为设定的顺序。例如,将加密文件元数据放置在加密文件的最前部,其余单位块根据该单位块对应的块文件在待加密文件中的顺序依次排列。
本申请实施例还提供一种文件解密方法,应用于以上任一项所述加密方法所获得的文件的解密,包括:
步骤S210,获取加密文件。
本步骤用于获取采用上述加密方法加密的加密文件。
步骤S210,从加密文件中获取包括第一子数据密文和第二子数据的加密文件元数据,解密所述第一子数据密文,获得第一子数据以及第一校验码;从所述第二子数据中获取第二校验码。
步骤S220,根据所述第一子数据获取第一验证码。
该步骤用于根据第一子数据计算第一验证码,计算第一验证码时,采用与加密方法中计算第一校验码对应的方法计算第一验证码。
步骤S230,利用所述第二校验码对所述第一验证码进行校验。
在该步骤中,将对第一验证码进行校验时,将第一验证码与第二校验码进行比较,如果第一验证码与第二校验码一致,则第一校验码校验成功。
步骤S240,如果所述第一验证码校验成功,则解密多个加密块文件,并组成临时文件。
步骤S240具体包括,分别将多个加密块文件解密,得到多个解密后的块文件。
根据第二预设顺序将所述解密后的块文件组成所述临时文件。
第二预设顺序为解密后获得的各个块文件在待加密文件中对应顺序。
步骤S250,根据所述临时文件获取第二验证码,利用所述第一校验码对所述第二验证码进行校验。
步骤S260,如果所述第二验证码校验成功,则根据所述临时文件获得解密文件。
如图3,本申请实施例还提供一种加密装置,所述加密装置包括第一获取模块11、第一生成模块12、第一加密模块13、第二生成模块14、划分模块15、第二加密模块16和第三生成模块17。
所述第一获取模块11,用于获取待加密文件。
本实施例中,第一获取模块11用于执行图1所示的步骤S110,关于第一获取模块11的具体描述可参照对步骤S110的描述。
所述第一生成模块12,用于根据所述待加密文件生成包括预分块信息及第一校验码的第一子数据,所述第一校验码根据所述待加密文件计算获得。
根据所述第一子数据生成包括第二校验码的第二子数据,所述第二校验码根据所述第一子数据计算获得。
本实施例中,第一生成模块12用于执行图1所示的步骤S120、步骤S130,关于第一生成模块12的具体描述可参照对步骤S120、步骤S130的描述。
所述第一加密模块13,用于采用第一密钥对所述第一子数据进行加密,获得第一子数据密文。
本实施例中,第一加密模块13用于执行图1所示的步骤S140,关于第一加密模块13的具体描述可参照对步骤S140的描述。
所述第二生成模块14,用于根据所述第一子数据密文和所述第二子数据获得加密文件元数据。
本实施例中,第二生成模块14用于执行图1所示的步骤S150,关于第二生成模块14的具体描述可参照对步骤S150的描述。
所述划分模块15,用于按照所述预分块信息划分所述待加密文件,获得多个块文件以及分块元数据。
本实施例中,划分模块15用于执行图1所示的步骤S160,关于划分模块15的具体描述可参照对步骤S160的描述。
所述第二加密模块16,用于采用第二密钥对所述多个块文件分别进行加密,获得与每个所述块文件对应的加密块文件。
本实施例中,第二加密模块16用于执行图1所示的步骤S170,关于第二加密模块16的具体描述可参照对步骤S170的描述。
所述第三生成模块17,用于将所述加密文件元数据、每个所述加密块文件以及所述分块元数据按照第一预设顺序组成加密文件。
本实施例中,第三生成模块17用于执行图1所示的步骤S180,关于第三生成模块17的具体描述可参照对步骤S180的描述。
如图4,本申请实施例还提供一种解密装置,所述解密装置包括第二获取模块21、第一解密模块22、第一校验模块23、第二解密模块24、第二校验模块25和第四生成模块26。
所述第二获取模块21,用于获取加密文件。
本实施例中,第二获取模块21用于执行图2所示的步骤S210,关于第二获取模块21的具体描述可参照对步骤S210的描述。
所述第一解密模块22,用于从加密文件中获取包括第一子数据密文和第二子数据的加密文件元数据,解密所述第一子数据密文,获得第一子数据以及第一校验码;从所述第二子数据中获取第二校验码。
本实施例中,第一解密模块22用于执行图2所示的步骤S220,关于第一解密模块22的具体描述可参照对步骤S220的描述。
所述第一校验模块23,用于根据所述第一子数据获取第一验证码;利用所述第二校验码对所述第一验证码进行校验。
本实施例中,第一校验模块23用于执行图2所示的步骤S230,关于第一校验模块23的具体描述可参照对步骤S230的描述。
所述第二解密模块24,用于在所述第一验证码校验成功时,解密多个加密块文件,并组成临时文件。
本实施例中,第二解密模块24用于执行图2所示的步骤S240,关于第二解密模块24的具体描述可参照对步骤S240的描述。
所述第二校验模块25,用于根据所述临时文件获取第二验证码,利用所述第一校验码对所述第二验证码进行校验。
本实施例中,第二校验模块25用于执行图2所示的步骤S250,关于第二校验模块25的具体描述可参照对步骤S250的描述。
所述第四生成模块26,用于在所述第二验证码校验成功时,根据所述临时文件获得解密文件。
本实施例中,第四生成模块26用于执行图2所示的步骤S260,关于第四生成模块26的具体描述可参照对步骤S260的描述。
综上所述,本申请实施例的加密方法首先根据待加密文件生成包括预分块信息和第一校验码的第一子数据,根据第一子数据生成包括第二校验码的第二子数据,然后对第一子数据进行加密后与第二子数据一起组成加密文件元数据,再将待加密文件分为多个块文件后分别对每个块文件进行加密。最后将加密文件元数据和块文件组成加密文件。本申请实施例的解密方法中,在获取加密文件后,首先将第一子数据密文进行解密获得第一子数据,根据第一子数据计算第一验证码,然后根据第二校验码验证第一验证码,并在第一验证码验证成功的情况下,进行加密文件的分块和解密过程,并将解密后的块文件组成临时文件,根据临时文件计算第二验证码,利用第一校验码验证第二验证码,最后,在第二验证码验证成功的情况下,生成解密文件。本申请实施例通过设置第一子数据的校验机制和解密后的文件的校验机制,能够大大减小文件被非法修改的概率,大大提高文件的安全性。
在本申请所提供的实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本申请的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应所述以权利要求的保护范围为准。