一种云端存储文件的方法和系统的制作方法

xiaoxiao2020-10-23  18

一种云端存储文件的方法和系统的制作方法
【技术领域】
[0001] 本发明属于云存储领域,尤其设及一种云端存储文件的方法和系统。
【背景技术】
[0002] 云存储技术是近几年在云计算的概念上延伸和发展出来的一个新概念。云存储主 要用于企业、个人的数据备份,W此可W减轻用户在数据存储方面的投资。虽然云存储技术 带来了廉价的存储服务,然后云存储的安全性、可靠性却让很多企业用户和个人用户对云 存储技术望而却步。据相关数据统计,当前国内一线云存储服务商每天新增的用户数据已 经达到PB单位级,可W用户对云存储的需求是十分巨大的。云存储的未来隐患是十分值得 我们思考的:
[0003] 1、数据保密性差,用户的数据和文件在云存储服务器上大都W明文的方式存在, 就很容易导致用户的数据被非法用户W非正常手段窃取(如icloud明星艳照口事件)甚 至被云存储服务商非法盗用。
[0004] 2、数据可靠性差,墨菲定律指出任何事情如果存在变坏的可能,则不管该种概率 多小,它一定会发生。所W-旦云服务器的软硬件发生故障,则极有可能造成用户数据的丢 失。该种后果是非常可怕的。
[0005] 3、数据传输效率低,目前市场上的云服务对上传文件和数据的去重率极低甚至未 进行去重,该必然导致数据的传输效率低的问题。

【发明内容】

[0006] 鉴于此,本发明提供一种云端存储文件的方法和系统,W解决现有技术存储效率 慢、数据保密性差的技术问题。
[0007] 本发明实施例是该样实现的,一种云端存储文件的方法,所述方法包括W下步 骤:
[000引通过Balancer进程对MongoDB系统的所有存储服务器中的存储的数据块进行扫 描,根据所述数据块的数量确定需要进行负载均衡的存储服务器和每个数据块的访问操作 的类型和次数;
[0009] 对待存储文件进行切块,获取多个明文块;
[0010] 对所述明文块进行明文块去重;
[0011] 将所述经过明文块去重的明文块加密为密文块;
[0012] 对所述密文块进行密文块去重;
[0013] 通过冗余算法将经过去重的密文块随机存储到多个云存储服务器。
[0014] 本发明实施例还提供一种云端存储文件的系统,所述系统包括:
[0015] 明文块获取单元,用于对待存储文件进行切块,获取多个明文块;
[0016] 明文块去重单元,用于对所述明文块获取单元获取的明文块进行明文块去重;
[0017] 密文块获取单元,用于将经过所述明文块去重单元去重的明文块加密为密文块;
[0018] 密文块去重单元,用于对所述密文块获取单元获取的密文块进行密文块去重;
[0019] 存储单元,用于通过冗余算法将经过所述密文块去重单元去重的密文块随机存储 到多个云存储服务器。
[0020] 本发明实施例,对待存储文件进行切块,获取多个明文块,对明文块进行明文块去 重,将经过明文块去重的明文块加密为密文块,对密文块进行密文块去重,通过冗余算法将 密文块随机存储到多个云存储服务器,通过切块和去重,提高了云端存储的存储效率,且通 过加密提高了云存储的安全性。
【附图说明】
[0021] 为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描 述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一 些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可W根据该 些附图获得其他的附图。
[0022] 图1是本发明实施例提供的云端存储文件方法的流程图;
[0023] 图2a是本发明实施例提供的计算明文哈希值的示意图;
[0024] 图化是本发明实施例提供的明文块去重的示意图;
[0025] 图2c是本发明实施例提供的密文块去重的示意图;
[0026] 图2d是本发明实施例提供的文件上传的示意图;
[0027] 图2e是本发明实施例提供的下载文件的流程图;
[002引图3是本发明实施例提供的云端存储文件系统的结构图。
【具体实施方式】
[0029] 为了使本发明的目的、技术方案及优点更加清楚明白,W下结合附图及实施例,对 本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用W解释本发明,并 不用于限定本发明。
[0030] 为了说明本发明所述的技术方案,下面通过具体实施例来进行说明。
[0031] 实施例一
[0032] 如图1所示为本发明实施例提供的云端存储文件方法的流程图,所述方法包括W 下步骤:
[0033] 步骤S101,对待存储文件进行切块,获取多个明文块。
[0034] 在本发明实施例中,首先对待处理文件进行切块处理,将该待处理文件切割为多 个明文块,明文块的大小可W根据实际应用的需要而进行设置,在此不做限定。
[0035] 步骤S102,对所述明文块进行明文块去重。
[0036] 在本发明实施例中,由于存储到云端的文件可能有多个相同的明文块,而存储多 个相同的明文块则会降低云端存储的效率,因此需要对明文块进行明文块去重处理。所述 对所述明文块进行明文块去重,具体为:
[0037] 1、对所述明文块进行哈希计算,获取所述明文块的明文哈希值;
[003引 2、根据所述明文哈希值对所述明文块进行明文块去重。
[0039] 在本发明实施例中,首先对明文块进行哈希计算,即可获取该明文块的明文哈希 值,然后将该明文哈希值进行去重对比,如果有多个明文哈希值相同的明文块,则只保留其 中的一个。
[0040] 步骤S103,将所述经过明文块去重的明文块加密为密文块。
[0041] 在本发明实施例中,在将去重后的文件存储到云端之前,需要对文件进行加密,W 使文件在存储的过程中不会被泄露出去。所述将所述经过明文块去重的明文块加密为密文 块的步骤,具体为:
[0042] 将所述明文哈希值作为密钥,对所述明文块进行对称加密,获取密文块。
[0043] 在本发明实施例中,W明文哈希值作为密钥,对明文块进行堆成加密,即可获取密 文块。
[0044] 步骤S104,对所述密文块进行密文块去重。
[0045] 在本发明实施例中,由于存储到云端的文件可能有多个相同的密文块,而存储多 个相同的密文块则会降低云端存储的效率,因此需要对密文块进行密文块去重处理。所述 对所述密文块进行密文块去重,具体为:
[0046] 1、对所述密文块进行哈希计算,获取所述密文块的密文哈希值;
[0047] 2、根据所述密文哈希值对所述密文块进行密文块去重。
[0048] 存储到云端的密文哈希值是唯一的,因此可W通过该密文哈希值进行密文块去 重。
[0049] 步骤S105,通过冗余算法将经过去重的密文块随机存储到多个云存储服务器。
[0化0] 在本发明实施例中,经过去重的密文块即可存储到云存储服务器。通过冗余算法 将所述密文块随机存储到多个云存储服务器,具体为:
[0化1] 将所述密文哈希值作为云存储文件名,通过冗余算法将所述密文块随机存储到 多个云存储服务器。
[0052] 本发明实施例,对待存储文件进行切块,获取多个明文块,对明文块进行明文块去 重,将经过明文块去重的明文块加密为密文块,对密文块进行密文块去重,通过冗余算法将 密文块随机存储到多个云存储服务器,通过切块和去重,提高了云端存储的存储效率,且通 过加密提高了云存储的安全性。
[0化3] 作为本发明的一个可选实施例,在所述通过冗余算法将所述密文块随机存储到多 个云存储服务器的步骤之后,所述方法还包括:
[0化4] 向云端服务器发送下载请求,从所述云端服务器获取待下载文件。
[0055] 在本发明实施例中,云端服务器端获取文件的步骤,具体为:
[0化6] 1、通过密文哈希值从云存储服务器获取待下载文件;
[0化7] 2、通过密文哈希值对比确定所述待下载文件是否完整,如果不完整,则从其他云 存储服务器获取待下载文件;
[005引 3、如果完整,则通过明文哈希值将所述密文块解密为明文块;
[0化9] 4、将所述明文块还原为待下载文件。
[0060] 上传文件举例说明:
[0061] 1)、准备工作,在用户中屯、新建表user_file_inf0(表1),在管理中屯、新建表 cloud_file_info(表 2);
[0062] ..................................................................................................................................................................................................................................................... ................................................................................................
[00化]表2
[0066] 2)、对欲上传文件进行切块,得到明文块列表plaintext_block_list<b_ offset, b_length, block〉,将文件的文件名、文件类型存储到user_file_info中的f_name 和f_type字段中,遍历plaintext_block_list并进行哈希计算,得到plaintext_block_ hashcode,将plaintext_block_offset、plaintext_block_length、pliantext_block_ hashcode,将这些值分别存储到user_file_info中的b_offset、b_length、plaintext_HC 字段中,如图2a所示为本发明实施例提供的计算明文哈希值的示意图;
[0067] 3)、对pliantext_block_list进行去重。遍历2)中得到新的明文块和明 文块哈希值列表pliantext_block_hashcode_list<plaintext_hashcode,block〉, 对plaintext_block_hashcode_list进行去重,得到新的de_plaintext_block_ hashcode_list<plaintext_hashcode, block〉;结束此过程,则完成了源端去重(source deduplication),如图化所示为本发明实施例提供的明文块去重的示意图;
[0068] 4)、将plaintext_hashcode作为密钥,对de_plaintext_block_hashcode_list 中的block分别进行对称加密,得到密文块哈希值和密文块ciphertext_block_hashcode_ list〈ciphertext_hashcode,ciphertext-block〉并将ciphertext_block_hashcode分蔚J 对应的存储到user_file_info和cloud_file_info中的ciphertext_HC字段。在存入cloud_file_info时要进行唯一性判断(可能存在与其它文件一样的ciphertext_block), cloud_file_info中ciphertext_HC是唯一的,如果检测到已经有相同的ciphertext_ block_hashcode存在,则不再存入,并将该ciphertext_block从ciphertext_block_ hashcode_list中移除,完成密文去重工作,如图2c所示为本发明实施例提供的密文块去 重的示意图;
[0069] 5)、把密文块传输到云服务器上。通过4)得到去重后的de_ciphertext_block_ hashcode_list〈ciphertext_hashcode,ciphertext-block〉。臥ciphertext-hashcode 为云存储Key,通过冗余算法将ciphertext_block随机存储到多个云存储服务器上,并 将存储的bucket(云端文件夹)和云存储服务器的相关信息存入cloiKi_file_info中的 cloucLinfo字段当中(如存储到了S个云存储服务器云A、云B、云C,任意去bucket名 为bucketName,则在cloud_info字段中存入"云A/bucketName,云B/bucketName,云C/ bucketName")。依次遍历整个de_ciphe:rtext_block_hashcode_list,完成文件的上传,如 图2d所示为本发明实施例提供的文件上传的示意图。
[0070] 下载文件举例说明,如图2e所示为本发明实施例提供的下载文件的流程图:
[0071] 1)、首先用户发起下载文件请求,从用户请求中得到文件名和文件类型,臥文件 名和文件类型为参数,从用户中屯、的user_file_info表中查询到所有的block_record_ list<record〉。根据文件名和文件类型建立新的空文件new_file ;
[0072] 2)、从block_record_list中取出完整的ciphertext_HC集合(元素互异)的值 列表ciphertext_block_hashcode_list〈ciphertext_hashcode〉;
[0073] 3)、将 2)中得到的ciphertext_block_hashcode_list发送给管理中屯、,根据 ciphertext_block_hashcode_list中的ciphertext_hashcode从管理服务器cloud_file_ info表中查询到对应的ciphertext_hashcode_cloudinfo_list〈ciphertext_hashcode, cloud_info〉的列表;
[0074] 4)、根据 3)中的得到的ciphertext_hashcode_cloudinfo_list,从云端下载 数据块,臥ciphei'tetxjiashcode为云存储端Key,从cloud_info中取出一个相关的云 存储服务器相关信息,据臥上信息即可从云存储服务器上获取到Key为ciphertext, hashcode的ciphertext_block,对得到的cipei'textjDlock进行哈希计算,对比计算值与 ciphertext_hashcode,如果不一致说明数据块在云端已经损坏,便可臥从cloud_info中 取其它值再次下载,可臥提高数据块的完整性和可靠性。依次遍历ciphertext_hashcode_ cloudinfo_list便可臥得到密文哈希值和密文块对应的数据块列表ciphertext_ hashcode_block_list〈ciphertext_hashcode,ciphertext-block〉;
[0075] 5)、对密文块解密。依据1)中得到的block_record_list可臥筛选出一一对 应的明文块哈希值和密文块哈希值列表plaintext_hashcode_ciphertext_hashcode_ list<plaintext_hashcode,ciphertext_hashco de〉,臥该列表中明文块哈希值 plaintext_hashcode为密钥对应的对4)中得到的ciphertext_hashcode_block_list 中的密文块进行解密,得到明文块哈希值和明文块列表plaintext_hashcode_block_ list〈plaintext_hashcode,block〉;
[0076] 6)、对文件进行还原。根据1)中block_record_list得到文件块偏移量等信息 对应元数据列表block_offset_length_hashcode_list<b_offset,b_length,plaintext-hashcode〉,结合4中plaintext_hashcode_block_li st可W得到新的文件块移量、文件块 大小、文件块列表block_offset_length_list<b_offset,t)_length,block〉。根据该些信 息,将文件块写入1)中新建的new_file。
[0077]实施例二
[007引如图3所示为本发明实施例提供的云端存储文件系统的结构图,为了便于说明, 仅示出与本发明实施例相关的部分,包括:
[0079] 明文块获取单元301,用于对待存储文件进行切块,获取多个明文块。
[0080] 在本发明实施例中,首先对待处理文件进行切块处理,将该待处理文件切割为多 个明文块,明文块的大小可W根据实际应用的需要而进行设置,在此不做限定。
[0081] 明文块去重单元302,用于对所述明文块获取单元301获取的明文块进行明文块 去重。
[0082] 在本发明实施例中,由于存储到云端的文件可能有多个相同的明文块,而存储多 个相同的明文块则会降低云端存储的效率,因此需要对明文块进行明文块去重处理。所述 明文块去重单元302,包括;
[0083] 明文哈希值获取子单元3021,用于对所述明文块进行哈希计算,获取所述明文块 的明文哈希值;
[0084] 明文块去重子单元3022,用于根据所述明文哈希值获取子单元3021获取的明文 哈希值对所述明文块进行明文块去重。
[0085] 在本发明实施例中,首先对明文块进行哈希计算,即可获取该明文块的明文哈希 值,然后将该明文哈希值进行去重对比,如果有多个明文哈希值相同的明文块,则只保留其 中的一个。
[0086] 密文块获取单元303,用于将经过所述明文块去重单元302去重的明文块加密为 密文块。
[0087] 在本发明实施例中,在将去重后的文件存储到云端之前,需要对文件进行加密,W 使文件在存储的过程中不会被泄露出去。所述密文块获取单元303加密为密文块,具体为: [008引将所述明文哈希值作为密钥,对所述明文块进行对称加密,获取密文块。
[0089] 在本发明实施例中,W明文哈希值作为密钥,对明文块进行堆成加密,即可获取密 文块。
[0090] 密文块去重单元304,用于对所述密文块获取单元303获取的密文块进行密文块 去重。
[0091] 在本发明实施例中,由于存储到云端的文件可能有多个相同的密文块,而存储多 个相同的密文块则会降低云端存储的效率,因此需要对密文块进行密文块去重处理。所述 密文块去重单元304,包括;
[0092] 密文哈希值获取子单元3041,用于对所述密文块进行哈希计算,获取所述密文块 的密文哈希值;
[0093] 密文块去重子单元3042,用于根据所述密文哈希值获取子单元3041获取的密文 哈希值对所述密文块进行明文块去重。
[0094] 存储到云端的密文哈希值是唯一的,因此可W通过该密文哈希值进行密文块去 重。
[0095] 存储单元305,用于通过冗余算法将经过所述密文块去重单元304去重的密文块 随机存储到多个云存储服务器。
[0096] 在本发明实施例中,经过去重的密文块即可存储到云存储服务器。所述存储单元 305存储密文块具体为:
[0097] 将所述密文哈希值作为云存储密钥,通过冗余算法将所述密文块随机存储到多个 云存储服务器。
[009引本发明实施例,对待存储文件进行切块,获取多个明文块,对明文块进行明文块去 重,将经过明文块去重的明文块加密为密文块,对密文块进行密文块去重,通过冗余算法将 密文块随机存储到多个云存储服务器,通过切块和去重,提高了云端存储的存储效率,且通 过加密提高了云存储的安全性。
[0099] 本领域普通技术人员可W理解为上述实施例二所包括的各个单元只是按照功能 逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能 单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
[0100] 本领域普通技术人员还可W理解,实现上述实施例方法中的全部或部分步骤是可 W通过程序来指令相关的硬件来完成,所述的程序可W在存储于一计算机可读取存储介质 中,所述的存储介质,包括ROM/RAM、磁盘、光盘等。
[0101] W上所述仅为本发明的较佳实施例而已,并不用W限制本发明,凡在本发明的精 神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
【主权项】
1. 一种云端存储文件的方法,其特征在于,所述方法包括以下步骤: 对待存储文件进行切块,获取多个明文块; 对所述明文块进行明文块去重; 将所述经过明文块去重的明文块加密为密文块; 对所述密文块进行密文块去重; 通过冗余算法将经过去重的密文块随机存储到多个云存储服务器。2. 如权利要求1所述的方法,其特征在于,所述对所述明文块进行明文块去重,具体 为: 对所述明文块进行哈希计算,获取所述明文块的明文哈希值; 根据所述明文哈希值对所述明文块进行明文块去重。3. 如权利要求2所述的方法,其特征在于,所述将所述经过明文块去重的明文块加密 为密文块的步骤,具体为: 将所述明文哈希值作为密钥,对所述明文块进行对称加密,获取密文块。4. 如权利要求3所述的方法,其特征在于,所述对所述密文块进行密文块去重,具体 为: 对所述密文块进行哈希计算,获取所述密文块的密文哈希值; 根据所述密文哈希值对所述密文块进行明文块去重。5. 如权利要求4所述的方法,其特征在于,通过冗余算法将所述密文块随机存储到多 个云存储服务器,具体为: 将所述密文哈希值作为云存储密钥,通过冗余算法将所述密文块随机存储到多个云存 储服务器。6. -种云端存储文件的系统,其特征在于,所述系统包括: 明文块获取单元,用于对待存储文件进行切块,获取多个明文块; 明文块去重单元,用于对所述明文块获取单元获取的明文块进行明文块去重; 密文块获取单元,用于将经过所述明文块去重单元去重的明文块加密为密文块; 密文块去重单元,用于对所述密文块获取单元获取的密文块进行密文块去重; 存储单元,用于通过冗余算法将经过所述密文块去重单元去重的密文块随机存储到多 个云存储服务器。7. 如权利要求6所述的系统,其特征在于,所述明文块去重单元,包括: 明文哈希值获取子单元,用于对所述明文块进行哈希计算,获取所述明文块的明文哈 希值; 明文块去重子单元,用于根据所述明文哈希值获取子单元获取的明文哈希值对所述明 文块进行明文块去重。8. 如权利要求7所述的系统,其特征在于,所述密文块获取单元加密为密文块,具体 为: 将所述明文哈希值作为密钥,对所述明文块进行对称加密,获取密文块。9. 如权利要求8所述的系统,其特征在于,因此需要对密文块进行密文块去重处理。所 述密文块去重单元,包括: 密文哈希值获取子单元,用于对所述密文块进行哈希计算,获取所述密文块的密文哈 希值; 密文块去重子单元,用于根据所述密文哈希值获取子单元获取的密文哈希值对所述密 文块进行密文块去重。10.如权利要求9所述的系统,其特征在于,所述存储单元存储密文块具体为: 将所述密文哈希值作为云存储文件名,通过冗余算法将所述密文块随机存储到多个云 存储服务器。
【专利摘要】本发明适用于云存储领域,提供了一种云端存储文件的方法和系统,所述方法包括:对待存储文件进行切块,获取多个明文块;对所述明文块进行明文块去重;将所述经过明文块去重的明文块加密为密文块;对所述密文块进行密文块去重;通过冗余算法将经过去重的密文块随机存储到多个云存储服务器。本发明实施例,对待存储文件进行切块,获取多个明文块,对明文块进行明文块去重,将经过明文块去重的明文块加密为密文块,对密文块进行密文块去重,通过冗余算法将密文块随机存储到多个云存储服务器,通过切块和去重,提高了云端存储的存储效率,且通过加密提高了云存储的安全性。
【IPC分类】H04L29/08
【公开号】CN104902010
【申请号】CN201510220551
【发明人】蒋晓宁, 赵文文, 苏敏, 应超杰, 石慧, 甘志刚, 蒋献, 沈文丽
【申请人】浙江工商大学
【公开日】2015年9月9日
【申请日】2015年4月30日

最新回复(0)