掌桥专利:专业的专利平台
掌桥专利
首页

加密方法、解密方法、加密装置及解密装置

文献发布时间:2023-06-19 18:29:06


加密方法、解密方法、加密装置及解密装置

技术领域

本申请涉及数据加密技术领域,尤其涉及一种加密方法、解密方法、加密装置及解密装置。

背景技术

数据隐私保护一直是人们所关心的问题。目前,基于区块链技术的蓬勃发展,人们更倾向于将数据在本地主机加密后,以加密块的形式上传至基于云的存储或分布式文件系统,例如,星际文件系统(IPFS,Interplanetary File System),然后将指向加密块的指针发送到区块链帐本上,从而实现对数据的隐私保护。但相关人员在实际操作中发现采用上述方式存在缺陷:一方面,采用上述方式得到的加密数据无法知晓加密数据所属的所有者;另一方面,采用上述方式对文件进行加密或者后续对加密文件进行解密时,相关使用人员必须要在明确了加解密方案之后,采用软件开发工具包(SDK,Software Development Kit)中的加密工具对区块链代码进行改写或复写以实现对数据的加解密,如此使得相关使用人员与加解密方案之间耦合性高,对数据的加解密十分不便。

发明内容

有鉴于此,本申请的主要目的在于提供一种加密方法、解密方法、加密装置及解密装置,能够能使待加密文件与其所有者关联起来,并且解耦了该加解密方案的使用者与加解密方法本身之间的耦合。

为达到上述目的,本申请的技术方案是这样实现的:

第一方面,本申请实施例提供一种加密方法,应用于第一主机中安装的第一虚拟机,方法包括:

获取待加密文件;

使用设定自加密方式对所述待加密文件进行加密,获得多个加密文件块和与所述多个加密文件块对应的第一数据映射;所述第一数据映射包含每一个加密文件块与对应的加密密钥之间的第一映射关系和所述每一个加密文件块与在所述第一虚拟机中所处位置的地址信息之间的第二映射关系;

将所述第一数据映射传输至所述第一主机,以使所述第一主机能够基于所述第二映射关系将所述每一个加密文件块映射至区块链,并能够通过所述第一数据映射中的所述第一映射关系解密所述多个加密文件块。

在上述方案中,所述使用设定自加密方式对所述待加密文件进行加密,获得多个加密文件块和与所述多个加密文件块对应的第一数据映射,包括:

基于所述待加密文件所属加密者的身份标识确定所述待加密文件包含的文件块的加密密钥及初始化向量;

基于每一个文件块的加密密钥及初始化向量按照所述设定自加密方式分别对每一个文件块进行加密,获得多个加密文件块和所述第一数据映射。

在上述方案中,从所述第一主机链接的区块链获取所述身份标识;其中,所述身份标识包括通用唯一标识符。

在上述方案中,所述基于所述待加密文件所属加密者的身份标识确定所述待加密文件包含的文件块的加密密钥,包括:

将所述待加密文件划分成按照顺序排列的至少三个文件块;

获取所述身份标识的第一哈希结果;

获取所述至少三个文件块中与第一文件块相邻的前一文件块的第二哈希结果;

对所述第一哈希结果和所述第二哈希结果进行逻辑运算处理,获得处理结果;

获取所述处理结果中的第一长度的数据作为所述第一文件块对应的加密密钥;

其中,所述第一文件块为所述至少三个文件块中的任一文件块。

在上述方案中,所述方法还包括:

基于所述处理结果中的第一长度的数据对应的第二哈希结果,从所述第二哈希结果中获得所述第一文件块对应的初始化向量,其中,所述第一长度的数据对应的第二哈希结果为所述第二哈希结果的真子集。

在上述方案中,所述基于每一个文件块的加密密钥及初始化向量按照所述设定自加密方式分别对每一个文件块进行加密,获得多个加密文件块,包括:

获取第一文件块;所述第一文件块为所述每一个文件块中的任一个;

基于所述第一文件块对应的加密密钥及初始化向量按照设定加密策略对所述第一文件块进行加密处理,得到所述第一文件块对应的预加密文件块;

对所述预加密文件块进行混淆处理,获得所述第一文件块对应的加密文件块;

基于每一个所述第一文件块对应的加密文件块,获得多个加密文件块。

在上述方案中,所述对所述预加密文件块进行混淆处理,获得所述第一文件块对应的加密文件块,包括:

获取所述第一文件块对应的第三哈希结果、所述第一文件块相邻的前一文件块对应的第四哈希结果以及所述第一文件块相邻的后一文件块对应的第五哈希结果;

基于所述第一文件块对应的加密密钥及初始化向量确定所述第四哈希结果中的未使用部分;

对所述第三哈希结果、所述第四哈希结果的未使用部分以及所述第五哈希结果进行连接处理,得到所述第一文件块对应的处理结果;

将所述处理结果与所述第一文件块对应的预加密文件块进行异或处理,得到所述第一文件块对应的加密文件块。

第二方面,本申请实施例还提供一种解密方法,应用于第一主机中安装的第一虚拟机,方法包括:

从所述第一主机获取与待解密文件相关的多个区块编号和与所述待解密文件对应的第二数据映射;所述多个区块编号中的每一个区块编号指向一个存储有与所述待解密文件关联的子待解密文件块;所述第二数据映射包含每一个所述子待解密文件块与对应的解密密钥的映射关系;

使用所述多个区块编号中的每一个区块编号获取对应的所述子待解密文件块;

基于所述每一个所述子待解密文件块的解密密钥使用设定解密方式分别解密对应的子待解密文件块,获得每一个子待解密文件块对应的子解密文件块;

基于每一个所述子解密文件块获得所述待解密文件的解密文件。

第三方面,本申请实施例还提供一种加密装置,应用于第一主机中安装的第一虚拟机,所述装置包括:

第一获取模块,用于获取待加密文件;

加密模块,用于使用设定自加密方式对所述待加密文件进行加密,获得多个加密文件块和与所述多个加密文件块对应的第一数据映射;所述第一数据映射包含每一个加密文件块与对应的加密密钥之间的第一映射关系和所述每一个加密文件块与在所述第一虚拟机中所处位置的地址信息之间的第二映射关系;

传输模块,用于将所述第一数据映射传输至所述第一主机,以使所述第一主机能够基于所述第二映射关系将所述每一个加密文件块映射至区块链,并能够通过所述第一数据映射中的所述第一映射关系解密所述多个加密文件块。

第四方面,本申请实施例还提供一种解密装置,应用于第一主机中安装的第一虚拟机,所述装置包括:

映射模块,用于从所述第一主机获取与待解密文件相关的多个区块编号和与所述待解密文件对应的第二数据映射;所述多个区块编号中的每一个区块编号指向一个存储有与所述待解密文件关联的子待解密文件块;所述第二数据映射包含每一个所述子待解密文件块与对应的解密密钥的映射关系;

第二获取模块,用于使用所述多个区块编号中的每一个区块编号获取对应的所述子待解密文件块;

解密模块,用于基于所述每一个所述子待解密文件块的解密密钥使用设定解密方式分别解密对应的子待解密文件块,获得每一个子待解密文件块对应的子解密文件块;

所述解密模块,还用于基于每一个所述子解密文件块获得所述待解密文件的解密文件。

本申请实施例提供的加密方法、解密方法、加密装置及解密装置。其中,所述加密方法包括:获取待加密文件;使用设定自加密方式对所述待加密文件进行加密,获得多个加密文件块和与所述多个加密文件块对应的第一数据映射;所述第一数据映射包含每一个加密文件块与对应的加密密钥之间的第一映射关系和所述每一个加密文件块与在所述第一虚拟机中所处位置的地址信息之间的第二映射关系;将所述第一数据映射传输至所述第一主机,以使所述第一主机能够基于所述第二映射关系将所述每一个加密文件块映射至区块链,并能够通过所述第一数据映射中的所述第一映射关系解密所述多个加密文件块。本申请提供的加密方法,第一虚拟机通过从第一主机中获取待加密文件,以设定自加密方式对待加密文件进行加密,得到多个加密文件块和与多个加密文件块对应的第一数据映射,然后仅将第一数据映射传输至第一主机,使得第一主机能够基于第一数据映射中的第二映射关系将每一个加密文件映射至区块链。如此,在加密过程中,使得主机使用者无需了解具体的加密策略,仅需通过传输待加密文件给第一虚拟机即可(由第一虚拟机按照设定的加密方式进行加密),主机使用者仅需通过反馈的第二映射关系中的地址信息将加密文件块映射至区块链,从而解耦了主机使用者与第一虚拟机中的加解密方法本身之间的耦合。

附图说明

图1是本申请实施例提供的加密方法的应用场景示意图;

图2A-图2B是本申请实施例提供的加密方法的一个可选的流程示意图;

图3是本申请实施例提供的加密方法的一个加密过程示意图;

图4是本申请实施例提供的第一虚拟机与第一主机之间的代码调用示意图;

图5是本申请实施例提供的加密及解密方法的一个流程示意图;

图6是本申请实施例提供的一种加密装置的结构示意图;

图7是本申请实施例提供的一种解密装置的结构示意图。

具体实施方式

为了更清楚地阐述本申请实施例的目的、技术方案及优点,以下将结合附图对本申请实施例的实施例进行详细的说明。应当理解,下文对于实施例的描述旨在对本申请实施例的总体构思进行解释和说明,而不应当理解为是对本申请实施例的限制。在说明书和附图中,相同或相似的附图标记指代相同或相似的部件或构件。为了清晰起见,附图不一定按比例绘制,并且附图中可能省略了一些公知部件和结构。

在相关技术中,在实现文件的可靠存储,往往将文件存储在区块链中。由于区块链受攻击最多的组成部分是智能合约,因此,在处理用户私人文件时,需要采用一种替代方法来处理敏感文件,而不仅仅是将其原始文件发送到区块链账本。对于该问题,在将原始文件发送到区块链账本之前,对原始文件进行本地数据加密是一种解决方案,也就是,对于该问题,相关技术中,采用对原始文件在本地主机进行加密,然后,将加密块存储到IPFS,将指向加密块的指针发送到区块链账本上。但上述方案存在以下问题:

1、原始文件本身并未以任何方式链接待其所有者,导致加密时无法知晓其加密者。

2、实现上述方案需要采用SDK等加密工具对本地主机链接的区块链的智能合约的代码进行改写或复写。这对于区块链而言是一种侵入式的改造,且相关人员在进行改写时,必须要先了解加密方法才能对代码进行改写,使得相关人员与加密方案之间耦合性高,不具有灵活性。

基于相关技术中存在的至少之一的问题,本申请实施例提供一种加密方法,应用于第一虚拟机,通过获取待加密文件;使用设定自加密方式对所述待加密文件进行加密,获得多个加密文件块和与所述多个加密文件块对应的第一数据映射;所述第一数据映射包含每一个加密文件块与对应的加密密钥之间的第一映射关系和所述每一个加密文件块与在所述第一虚拟机中所处位置的地址信息之间的第二映射关系;将所述第一数据映射传输至所述第一主机,以使所述第一主机能够基于所述第二映射关系将所述每一个加密文件块映射至区块链,并能够通过所述第一数据映射中的所述第一映射关系解密所述多个加密文件块。本申请提供的加密方法是在第一虚拟机中进行的,具体加密过程包括:第一虚拟机从第一主机获取待加密文件;加密时,第一虚拟机使用设定自加密方式对待加密文件进行加密,然后将加密得到的多个加密文件块和与多个加密文件块对应的第一数据映射传输至第一主机,其中,第一数据映射包含每一个加密文件块与对应的加密密钥之间的第一映射关系,而加密密钥是基于待加密文件所属的加密者身份标识得到的,从而能够基于加密密钥将加密文件块链接到其所有者。此外,第一数据映射还包含每一个加密文件块与对应的地址信息之间的第二映射关系,通过第二映射关系,可使主机使用者访问第一虚拟机获得其存储的加密文件块。这样的设置,使得主机使用者无需了解具体的加密方法,由第一虚拟机执行加密过程并存储加密文件,解耦了加解密方案的使用者(主机使用者)与加解密方法本身之间的耦合。

下面结合附图详细的说明本申请的技术方案。

图1是本申请实施例提供的加密方法的应用场景示意图。如图1所示,该应用场景100包括第一主机1001和通过虚拟机安装工具安装在所述第一主机1001上的第一虚拟机1002,其中;

该第一主机1001可以实施为笔记本电脑、平板电脑、台式计算机、移动设备等各种类型的终端,也可以实施为服务器。其中,用户可以在所述第一主机1001上创建文件或接收文件。该虚拟机安装工具可以是用于安装虚拟机的一款应用程序(APP,Application)。第一虚拟机1002可以通过与第一主机1001间配置的功能接口进行数据传输,比如,通过功能接口从第一主机1001上获取待加密文件;再比如,通过功能接口将第一数据映射反馈给第一主机等等。

结合图1所示的应用场景,参见图2A,图2A是本申请实施例提供的加密方法的一个可选的流程示意图。将结合图2A示出的步骤进行说明。

步骤101:获取待加密文件。

在一些实施例中,该待加密文件可以是如图1所示的所述第一主机中的创建的或接收的任何文件。比如,该待加密文件可以是所述第一用户根据实际需求在第一主机上自行定义的文件;再比如,该待加密文件也可以是第一主机的系统配置文件。

步骤102:使用设定自加密方式对所述待加密文件进行加密,获得多个加密文件块和与所述多个加密文件块对应的第一数据映射;所述第一数据映射包含每一个加密文件块与对应的加密密钥之间的第一映射关系和所述每一个加密文件块与在所述第一虚拟机中所处位置的地址信息之间的第二映射关系。

需要说明的是,所述设定自加密方式可以是指一种基于身份标识的自加密方式,其中,所说的自加密方式作为加密文件的一种手段,不需要用户干预可基于用户的设定自动实现。具体的,自加密方式是将文件转换为比特流(将文件划分为至少三个文件块),通过从比特流中随机选择比特来提取密钥,然后使用该密钥对各个比特流进行加密,并将密钥和加密文件分开存放,例如密钥可以本地存储,而加密文件可以发送到服务器。

为进一步对步骤102进行详细说明,参见图2B,图2A中示出的步骤:使用设定自加密方式对所述待加密文件进行加密,获得多个加密文件块和与所述多个加密文件块对应的第一数据映射。可通过图2B进行说明,图2B是本申请实施例提供的加密方法的一个可选的流程示意图。

步骤1021、基于所述待加密文件所属加密者的身份标识确定所述待加密文件包含的文件块的加密密钥及初始化向量。

在一些实施例中,该身份标识为能够唯一确定加密者的身份的任何标志。在实际应用过程中,所述身份标识可以是加密者的邮箱或者是电话号码。在具体操作中,从第一主机链接的区块链获取身份标识;其中,身份标识包括通用唯一标识符(UUID,UniversallyUnique Identifier),通用唯一标识符是一种特定形式的标识符,比如,将邮箱或者电话号码转换为特定形式即可得到通用唯一标识符。

在一些实施例中,所述基于所述待加密文件所属加密者的身份标识确定所述待加密文件包含的文件块的加密密钥,可以包括:

将所述待加密文件划分成按照顺序排列的至少三个文件块;

获取所述身份标识的第一哈希结果;

获取所述至少三个文件块中与第一文件块相邻的前一文件块的第二哈希结果;

对所述第一哈希结果和所述第二哈希结果进行逻辑运算处理,获得处理结果;

获取所述处理结果中的第一长度的数据作为所述第一文件块对应的加密密钥;

其中,所述第一文件块为所述至少三个文件块中的任一文件块。

为了更好地说明本过程,参见图3,图3是本申请实施例提供的加密方法的一个加密过程示意图。

在一些实施例中,针对待加密文件进行块的划分时,可以根据待加密文件的大小自行设定文件块的大小(例如文件块的大小设置为长度为1兆(M)),然后对待加密文件按从头到尾的顺序进行划分,得到按照顺序排列的多个文件块。当然,在文件块较大时,可选择性的对其进行压缩(Optional Compress),以减小块占用的内存。需要说明的是,图3中仅示出至少三个文件块中的块n-3、块n-2…块n-1、块n、块n+1。在对至少三个文件块中的每一个文件块进行加密时,首先要获取身份标识,然后对获取的身份标识进行哈希处理,得到身份标识对应的第一哈希结果,并将第一哈希结果传输至各个文件块对应的生成器中,该生成器用于生成加密密钥和初始化向量。

由于每一个文件块的加密过程相似,作为示例,以块n作为第一文件块,对本实施例进行详细说明。

在对第一文件块进行加密时,首先需要获取块n-1对应的第二哈希结果,然后对第一哈希结果和第二哈希结果进行逻辑运算处理,即异或(XOR)计算,获得处理结果,该过程可表示为

加密密钥可表示为

在一些实施例中,基于块n-1得到块n的加密密钥后,还必须得到块n加密时所需的初始化向量,基于加密密钥和初始化向量两个参数才能实现对块n的加密。在具体操作中,初始化向量可通过以下方式获得:基于所述处理结果中的第一长度的数据对应的第二哈希结果,从所述第二哈希结果中获得所述第一文件块对应的初始化向量,其中,所述第一长度的数据对应的第二哈希结果为所述第二哈希结果的真子集。

上述过程也就是,基于第二哈希结果,在第二哈希结果中取第一长度的数据对应的哈希结果生成了加密密钥,然后在剩余的第二哈希结果中取一定位数(例如32位至48位任一位或几位)的数据得到初始化向量,初始化向量可表示为[H(C

在得到了加密密钥和初始化向量后,按照设定加密策略对块n进行加密的过程可表示为

基于此,在一些实施例中,所述基于每一个文件块的加密密钥及初始化向量按照所述设定自加密方式分别对每一个文件块进行加密,获得多个加密文件块,包括:

获取第一文件块;所述第一文件块为所述每一个文件块中的任一个;

基于所述第一文件块对应的加密密钥及初始化向量按照设定加密策略对所述第一文件块进行加密处理,得到所述第一文件块对应的预加密文件块;

对所述预加密文件块进行混淆处理,获得所述第一文件块对应的加密文件块;

基于每一个所述第一文件块对应的加密文件块,获得多个加密文件块。

需要说明的是,第一文件块为至少三个文件块中的任意一个,比如前述的块n。也就是说,采用第一文件块说明获得多个加密文件块的过程。获得多个加密文件块过程也就是:将每一个文件块基于对应的加密密钥及初始化向量按照设定加密策略分别进行加密,得到每一个文件块对应的预加密文件块,然后为避免哈希碰撞,再对每一个预加密文件块进行混淆处理,得到每一个文件块对应的加密文件块,如此能够得到待加密文件对应的多个加密文件块。

参考图3,以块n作为第一文件块作为示例。在对块n进行加密时,利用块n对应的加密密钥k

在一些实施例中,所述对所述预加密文件块进行混淆处理,获得所述第一文件块对应的加密文件块,可以包括:

获取所述第一文件块对应的第三哈希结果、所述第一文件块相邻的前一文件块对应的第四哈希结果以及所述第一文件块相邻的后一文件块对应的第五哈希结果;

基于所述第一文件块对应的加密密钥及初始化向量确定所述第四哈希结果中的未使用部分;

对所述第三哈希结果、所述第四哈希结果的未使用部分以及所述第五哈希结果进行连接处理,得到所述第一文件块对应的处理结果;

将所述处理结果与所述第一文件块对应的预加密文件块进行异或处理,得到所述第一文件块对应的加密文件块。

作为示例,继续参考图3。还是以块n为例。图3中,在得到了块n对应的预加密文件块后,还需要获取块n对应的哈希结果(第三哈希结果)、块n-1对应的哈希结果(第四哈希结果)以及块n+1对应的哈希结果(第五哈希结果),基于加密密钥及初始化向量确定第四哈希结果中的未使用部分,例如当第四哈希结果中的未使用部分仅剩16位时,该未使用部分可表示为H(C

步骤103:将所述第一数据映射传输至所述第一主机,以使所述第一主机能够基于所述第二映射关系将所述每一个加密文件块映射至区块链,并能够通过所述第一数据映射中的所述第一映射关系解密所述多个加密文件块。

在一些实施例中,第一虚拟机通过前述的功能接口将第一数据映射传输至第一主机。之后,第一主机基于第二映射关系将每一个加密文件块映射至区块链。对于映射的方式可以有两种方式,下面分别说明。

方式一:当第一虚拟机完成加密后,会将加密文件块存储在第一虚拟机的内存中,同时会生成每个加密文件块在第一虚拟机中存储位置对应的地址,并将每一个加密文件块与在第一虚拟机中所处位置的地址信息写入第一数据映射,也即形成第二映射关系。第一虚拟机通过与第一主机配置的功能接口将第一数据映射传输至第一主机,也即:将第一映射关系和第二映射关系传输到第一主机。之后,第一主机在获取到第二映射关系后会将多个地址信息直接传输至区块链中,使得第一主机能够将每一个加密文件块映射至区块链。也就是,第一种映射方式为:第一主机将第二映射关系中的各个地址信息直接传输至区块链。由于存储在区块链中的数据不可篡改,地址信息存储在区块链可以安全的存储,因此将地址传输至区块链可以确保数据安全。

方式二:当第一虚拟机将第一数据映射传输至第一主机后,第一主机会基于第二映射在第一虚拟机中获取多个加密文件块,然后将多个加密文件块上传至IPFS。IPFS为每一个加密文件块分配存储地址并存储每一个加密文件块,并向区块链反馈每一个加密文件块对应的唯一标识符,以实现将每一个加密文件块映射至区块链。也就是,第二种映射方式为:第一主机先通过第二映射关系中的每一个地址信息获得对应的每一个加密文件块,然后将每一个加密文件块传输至IPFS。最后,由IPFS将每一个加密文件块对应的唯一标识符传输至区块链,其中,唯一标识符用于定位IPFS中对应的加密文件块。

需要说明的是,由于第一数据映射中还包含第一映射关系,第一映射关系是每一个加密文件块与对应的加密密钥之间的映射关系。在一些实施例中,加密密钥和解密密钥可以相同,因此可基于第一数据映射关系解密多个加密文件块。

为了说明本申请中的前一种映射方式。下面,基于图4所示的第一虚拟机和第一主机的交互关系进行说明。图4是本申请实施例提供的第一虚拟机与第一主机之间的代码调用示意图。需要说明的是,图中箭头表征软件功能单元间具有被调用关系;图中各模块或单元并不代表基于硬件的任何实施,仅示意软件模块或单元的相互调用。容易理解的是,接口定义了一个功能函数需要的参数,或者能够返回的数据,即,接口也是一种函数实现方法。本申请实施例中所述的接口,都可以在软件上实施为一种方法,接口中包括方法单元。

在一些实施例中,第一主机上安装有第一虚拟机,同时,第一虚拟机中能够运行如本申请实施例提供的加密方法。第一主机中能够运行实现和第一虚拟机数据交互的计算机程序(实现单元调用的代码)。在实际操作中,第一主机中运行的代码还可用于将本地数据上传到区块链。

当第一主机基于调用单元指示进行加密操作时,调用单元能够调用第一虚拟机中的加密单元;加密单元获取待加密文件并加密该待加密文件(基于上述加密方法,获得多个加密文件块),之后,第一虚拟机通过分配单元为多个加密文件块分配用于存储的地址信息,按照分配的地址信息将多个加密文件块分别写入到第一虚拟机的内存中。第一虚拟机并生成加密文件块与对应地址信息的第二映射关系,以便第一主机或第一虚拟机快速定位加密文件块。存储加密文件块的过程可以如下:第一虚拟机在通过加密单元完成加密后,通过分配单元为每一个加密文件块分配一个存储区域;每一个存储区域对应的地址即为存储在该存储区域的加密文件块对应的地址信息;在得到多个地址信息后,通过分配单元分配一段缓冲区域,该缓冲区域用于缓存多个地址信息;然后通过分配单元将多个地址信息传输到第一主机的内存中,如此,第一主机能够通过地址信息在第一虚拟机中定位到存储的加密文件块。在传输结束或第一主机中本地应用关闭时,第一主机中的关闭单元调用第一虚拟机的释放单元将原先分配的缓冲区域释放。

为保证数据安全性,第一主机在获得了多个地址信息后,基于写于本地应用中的代码,能够将地址信息传输到区块链进行存储,以保证每一个地址不会被篡改。需要说明的是,区块链基于调用单元实现与区块外数据的互通,由于区块链有其固定的接口使用规范,因此必须经转换器对接口使用方法进行转换,使得新的接口能够跟已有区块链的接口使用方法兼容。

本申请实施例提供的加密方法,应用于第一虚拟机,通过从第一主机中获取待加密文件,以设定自加密方式对待加密文件进行加密,得到多个加密文件块和与多个加密文件块对应的第一数据映射,然后将第一数据映射传输至第一主机,使得第一主机能够获得每一个加密文件块在第一虚拟机中的地址,然后将每一个地址传输到区块链,使得第一主机能够将每一个加密文件块映射到区块链中。如此,在加密过程中,由于第一数据映射中的加密密钥是根据待加密文件所属所有者的身份标识得到的,因此可基于加密密钥使加密文件块链接到其所有者。另外,第一主机基于第二映射关系能够获得每一个加密文件块,使得主机使用者无需明确具体的加密方法就能得到加密文件,解耦了该加密方案的使用者与加密方法本身之间的耦合。

基于类似的发明构思,本申请实施例还提供一种解密方法,应用于第一主机中安装的第一虚拟机,所述方法包括:

从所述第一主机获取与待解密文件相关的多个区块编号和与所述待解密文件对应的第二数据映射;所述多个区块编号中的每一个区块编号指向一个存储有与所述待解密文件关联的子待解密文件块;所述第二数据映射包含每一个所述子待解密文件块与对应的解密密钥的映射关系;

使用所述多个区块编号中的每一个区块编号获取对应的所述子待解密文件块;

基于所述每一个所述子待解密文件块的解密密钥使用设定解密方式分别解密对应的子待解密文件块,获得每一个子待解密文件块对应的子解密文件块;

基于每一个所述子解密文件块获得所述待解密文件的解密文件。

本申请实施例所提供的解密方法,一个区块编号对应区块链中的一个区块,该区块中包括加密文件块对应的地址信息或IPFS反馈的唯一标识符。基于每一个区块编号中的地址信息或IPFS反馈的唯一标识符可在第一虚拟机中或星际文件系统中获取到每一个子待解密文件块,并利用第二数据映射中的解密密钥对每一个子待解密文件块进行解密,从而能够便捷地实现对待解密文件的解密操作。

下面继续参见图4,基于图4中第一虚拟机和第一主机的交互关系说明本申请实施例采用前一种映射方式时解密过程的示例性应用,

当第一主机基于调用单元指示进行解密操作时,调用单元首先会在区块链中获取需要解密的文件对应的地址,然后调用第一虚拟机中的解密单元,使得解密单元能够基于地址定位到对应的加密文件块,然后解密加密文件快,并将解密得到的文件通过调用单元返回给第一主机。

需要说明的是,在一些实施例中,程序编写人员可采用C语言、RUST语言等任何一种语言形式编写实现加密或解密方法的程序,图中示例为C++编程语言。为解决不同编写语言在第一虚拟机中无法兼容的问题,可将各种编写语言编写的程序通过编译器统一编译成中间代码,使得第一虚拟机不用关心上层语言的类型均可识别加密或解密程序并运行。

为了说明本申请中的后一种映射方式,第一虚拟机在完成加密后,第一主机基于第二映射关系获取到加密文件块后,会将加密文件块传输至基于云的文件存储系统,例如星际文件系统。下面,基于图5,说明本申请实施例在一个实际的应用场景中的示例性应用。图5是本申请实施例提供的加密及解密方法的一个流程示意图。下面分步骤进行说明。

对于加密过程:包括:步骤1至4,其中;

步骤1:第一主机调用以下命令:Claeng add[file][key_out_put_path];获取待加密文件;向所述第一虚拟机传输待加密文件。

其中,file是需要加密的文件的绝对路径,key out put path是存储密钥的位置的绝对路径。

步骤2:第一虚拟机获取身份标识。

需要说明的是,区块链中智能合约允许定义账本上的资产,例如定义一个三个字段的资产,包括身份标识,用户公钥以及标识符。在实际操作中,步骤2中的身份标识可基于本申请实施例步骤1021中所述的方法获取,在此不做赘述。

步骤3:第一虚拟机获取待加密文件;第一虚拟机基于身份标识对待加密文件进行加密,获得多个加密文件块。

需要说明的是,图5中将获取的原始文件作为待加密文件。在实际的获取操作中,步骤3中获取待加密文件可基于本申请实施例图2A中,步骤101所述的方法获取待加密文件,在此不做赘述。步骤3中的加密过程可基于本申请实施例图2B中步骤1021至步骤1022所述的方法获得多个加密文件块,在此不做赘述。

步骤4.1:第一主机将加密文件块上传至IPFS。

需要说明的是,步骤4.1对应于本申请实施例步骤103中所述的第二种映射方式,通过第一主机将加密文件块上传至IPFS,然后IPFS会将每个加密文件块放入一个存档中以保留每个加密文件块的名称,并向区块链反馈对应于每一个加密文件块的唯一标识符(CID)。唯一标识符可以是内容标识符或内容寻址标识符。对于步骤4.1之前,第一虚拟机还需将加密文件块传输到第一主机上,具体如何传输前述已经描述,这里不再赘述。

步骤4.2:区块链利用加密文件块的唯一标识符、公钥和身份标识创建每一个加密文件块对应的资产,并保存各资产到各区块中;反馈给区块对应的区块编码给第一主机。

需要说明的是,基于预先定义在账本上的资产,预先已写入用户身份标识及用户公钥两个已知参数,现将加密文件块的唯一标识符写入该资产中即可创建完整的资产。同时,将每个唯一标识符存储于不同区块中,并将区块编号返回至第一主机,使得第一主机能够依据区块编号定位每一个唯一标识符,从而根据唯一标识符获取到星际文件系统中的加密文件块。

步骤4.3:第一虚拟机返回第一数据映射。

需要说明的是,步骤3中在获得多个加密文件块的同时,也会获得每个加密文件块对应的第一数据映射,该第一数据映射中包含每一个加密文件块与对应的加密密钥之间的第一映射关系。向第一主机返回第一数据映射后,由于加密与解密互为逆过程,因此,可以说,加密密钥也是解密密钥,因此可使第一主机根据第一映射关系中的加密密钥(或者说解密密钥)解密加密文件块。

对于解密过程,包括:步骤5至9,其中;

步骤5:第一主机调用以下命令:Claeng get[block][key][destination],获得区块编号和第二数据映射;向第一虚拟机传输区块编号和第二数据映射。

其中,block是区块链中包含加密块CID的资产的区块,key是解密密钥的绝对路径,destination是写入解密文件的位置的绝对路径。需要说明的是,第二数据映射和第一数据映射相同。

步骤6:第一虚拟机接收区块编号和第二数据映射,并基于区块编号获取各个加密文件块的唯一标识符和公钥,并利用公钥确定各唯一标识符未被篡改。

需要说明的是,基于步骤4.2所创建的资产,可通过区块编号获取到同一个区块内的唯一标识符和公钥,其中唯一标识符用于定位加密文件块,公钥用于验证唯一标识符的数据是否被篡改。

步骤7:第一虚拟机基于每个唯一标识符从星际文件系统获取加密文件块。

步骤8:第一虚拟机通过第二数据映射中的解密密钥解密对应的加密文件块。

需要说明的是,解密密钥即第一数据映射中第一映射关系对应的加密密钥。

步骤9:第一虚拟机向第一主机返回解密文件。

上述解密过程也就是,利用区块编号可获取唯一标识符,通过唯一标识符可获取到星际文件系统中的加密文件块,第二数据映射中包含解密每个加密文件块对应的解密密钥,因此,可通过解密密钥解密加密文件块得到解密文件并返回给第一主机。

基于相同的发明构思,本申请实施例还提供一种加密装置,参考图6,图6是本申请实施例提供的一种加密装置的结构示意图。所述装置60包括:第一获取模块601、加密模块602和传输模块603。

其中,所述第一获取模块601,用于获取待加密文件。

所述加密模块602,使用设定自加密方式对所述待加密文件进行加密,获得多个加密文件块和与所述多个加密文件块对应的第一数据映射;所述第一数据映射包含每一个加密文件块与对应的加密密钥之间的第一映射关系和所述每一个加密文件块与在所述第一虚拟机中所处位置的地址信息之间的第二映射关系。

所述传输模块603,用于将所述第一数据映射传输至所述第一主机,以使所述第一主机能够基于所述第二映射关系将所述每一个加密文件块映射至区块链,并能够通过所述第一数据映射中的所述第一映射关系解密所述多个加密文件块。

在一些实施例中,所述加密模块602还用于基于所述待加密文件所属加密者的身份标识确定所述待加密文件包含的文件块的加密密钥及初始化向量;基于每一个文件块的加密密钥及初始化向量按照所述设定自加密方式分别对每一个文件块进行加密,获得多个加密文件块和所述第一数据映射。

在一些实施例中,所述加密模块602从所述第一主机链接的区块链获取所述身份标识;其中,所述身份标识包括通用唯一标识符。

在一些实施例中,所述加密模块602还用于将所述待加密文件划分成按照顺序排列的至少三个文件块;获取所述身份标识的第一哈希结果;获取所述至少三个文件块中与第一文件块相邻的前一文件块的第二哈希结果;对所述第一哈希结果和所述第二哈希结果进行逻辑运算处理,获得处理结果;获取所述处理结果中的第一长度的数据作为所述第一文件块对应的加密密钥;其中,所述第一文件块为所述至少三个文件块中的任一文件块。

在一些实施例中,所述加密模块602还用于基于所述处理结果中的第一长度的数据对应的第二哈希结果,从所述第二哈希结果中获得所述第一文件块对应的初始化向量,其中,所述第一长度的数据对应的第二哈希结果为所述第二哈希结果的真子集。

在一些实施例中,所述加密模块602还用于获取第一文件块;所述第一文件块为所述每一个文件块中的任一个;基于所述第一文件块对应的加密密钥及初始化向量按照设定加密策略对所述第一文件块进行加密处理,得到所述第一文件块对应的预加密文件块;对所述预加密文件块进行混淆处理,获得所述第一文件块对应的加密文件块;基于每一个所述第一文件块对应的加密文件块,获得多个加密文件块。

在一些实施例中,所述加密模块602还用于获取所述第一文件块对应的第三哈希结果、所述第一文件块相邻的前一文件块对应的第四哈希结果以及所述第一文件块相邻的后一文件块对应的第五哈希结果;基于所述第一文件块对应的加密密钥及初始化向量确定所述第四哈希结果中的未使用部分;对所述第三哈希结果、所述第四哈希结果的未使用部分以及所述第五哈希结果进行连接处理,得到所述第一文件块对应的处理结果;将所述处理结果与所述第一文件块对应的预加密文件块进行异或处理,得到所述第一文件块对应的加密文件块。

基于相同的发明构思,本申请实施例还提供一种解装置,参考图7,图7是本申请实施例提供的一种解密装置的结构示意图。所述装置70包括:映射模块701、第二获取模块702和解密模块703。

其中,所述映射模块701,用于从所述第一主机获取与待解密文件相关的多个区块编号和与所述待解密文件对应的第二数据映射;所述多个区块编号中的每一个区块编号指向一个存储有与所述待解密文件关联的子待解密文件块;所述第二数据映射包含每一个所述子待解密文件块与对应的解密密钥的映射关系。

所述第二获取模块702,用于使用所述多个区块编号中的每一个区块编号获取对应的所述子待解密文件块。

所述解密模块703,用于基于所述每一个所述子待解密文件块的解密密钥使用设定解密方式分别解密对应的子待解密文件块,获得每一个子待解密文件块对应的子解密文件块。

所述解密模块703,还用于基于每一个所述子解密文件块获得所述待解密文件的解密文件。

需要说明的是,本申请实施例装置的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果,因此不做赘述。对于本装置实施例中未披露的技术细节,请参照本申请方法实施例的描述而理解。

需要说明的是,本申请实施例中,如果以软件功能模块的形式实现上述的加密方法或者解密方法,并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台终端执行本申请各个实施例所述方法的全部或部分。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read Only Memory)、磁碟或者光盘等各种可以存储程序代码的介质。这样,本申请实施例不限制于任何特定的硬件和软件结合。

本申请实施例还提供一种电子设备,所述电子设备至少包括:处理器和配置为存储可执行指令的计算机可读存储介质,其中处理器通常控制所述电子设备的总体操作。计算机可读存储介质配置为存储由处理器可执行的指令和应用,还可以缓存待处理器和电子设备中各模块待处理或已处理的数据,可以通过闪存或随机访问存储器(RAM,RandomAccess Memory)实现。

本申请实施例提供一种存储有可执行指令的存储介质,其中存储有可执行指令,当可执行指令被处理器执行时,将引起处理器执行本申请实施例提供的加密、解密方法。

在一些实施例中,存储介质可以是计算机可读存储介质,例如,铁电存储器(FRAM,Ferromagnetic Random Access Memory)、只读存储器(ROM,Read Only Memory)、可编程只读存储器(PROM,Programmable Read Only Memory)、可擦除可编程只读存储器(EPROM,Erasable Programmable Read Only Memory)、带电可擦可编程只读存储器(EEPROM,Electrically Erasable Programmable Read Only Memory)、闪存、磁表面存储器、光盘、或光盘只读存储器(CD-ROM,Compact Disk-Read Only Memory)等存储器;也可以是包括上述存储器之一或任意组合的各种设备。

在一些实施例中,可执行指令可以采用程序、软件、软件模块、脚本或代码的形式,按任意形式的编程语言(包括编译或解释语言,或者声明性或过程性语言)来编写,并且其可按任意形式部署,包括被部署为独立的程序或者被部署为模块、组件、子例程或者适合在计算环境中使用的其它单元。

作为示例,可执行指令可以但不一定对应于文件系统中的文件,可以可被存储在保存其它程序或数据的文件的一部分,例如,存储在超文本标记语言(HTML,Hyper TextMarkup Language)文档中的一个或多个脚本中,存储在专用于所讨论的程序的单个文件中,或者,存储在多个协同文件(例如,存储一个或多个模块、子程序或代码部分的文件)中。作为示例,可执行指令可被部署为在一个计算设备上执行,或者在位于一个地点的多个计算设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算设备上执行。

需要说明的是,本申请实施例各实施例所记载的技术方案中各技术特征之间,在不冲突的情况下,可以任意组合。

应理解,说明书通篇中提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本申请的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。

以上所述,仅为本申请的实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

相关技术
  • 空调机组加密解密方法、装置和加密解密终端
  • 非易失性存储器的加密方法及装置、解密方法及装置
  • 图像加密隐藏方法及装置、图像解密方法及装置
  • 一种数据加密方法、解密方法、加密系统及解密系统
  • 数据加密方法、解密方法、加密系统及解密系统
  • 加密装置、解密装置、加密方法、解密方法、加密程序和解密程序
  • 加密装置、解密装置、加密方法、加密程序、解密方法和解密程序
技术分类

06120115586767