CN106599723B - 一种文件加密方法及装置、文件解密方法及装置 - Google Patents

一种文件加密方法及装置、文件解密方法及装置 Download PDF

Info

Publication number
CN106599723B
CN106599723B CN201611178233.6A CN201611178233A CN106599723B CN 106599723 B CN106599723 B CN 106599723B CN 201611178233 A CN201611178233 A CN 201611178233A CN 106599723 B CN106599723 B CN 106599723B
Authority
CN
China
Prior art keywords
module
encryption
file
encryption module
encrypted
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201611178233.6A
Other languages
English (en)
Other versions
CN106599723A (zh
Inventor
丁鹏
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Wuhan Douyu Network Technology Co Ltd
Original Assignee
Wuhan Douyu Network Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Wuhan Douyu Network Technology Co Ltd filed Critical Wuhan Douyu Network Technology Co Ltd
Priority to CN201611178233.6A priority Critical patent/CN106599723B/zh
Publication of CN106599723A publication Critical patent/CN106599723A/zh
Application granted granted Critical
Publication of CN106599723B publication Critical patent/CN106599723B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6209Protecting access to data via a platform, e.g. using keys or access control rules to a single file or object, e.g. in a secure envelope, encrypted and accessed using a key, or with access control rules appended to the object itself
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2107File encryption

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)

Abstract

本发明提供了一种文件加密方法及装置、文件解密方法及装置,其中,该方法包括:获取用户选择的待加密文件;根据加密应用的版本号,从服务器获取加密模块列表;根据用户从加密模块列表选择的加密模块信息,获取对应的加密模块,获取用户对加密模块进行排序的模块排序信息;根据加密模块及模块排序信息,对待加密文件进行加密。本发明通过加密模块的组合来对待加密文件进行加密,使用户能够自由选择一个或多个加密模块,并自定义加密模块的排列顺序,通过用户自己选择的加密模块的组合,对待加密文件进行嵌套加密,加密复杂度很高,很难被破解,增加了加密文件的安全性。

Description

一种文件加密方法及装置、文件解密方法及装置
技术领域
本发明涉及数据加密技术领域,具体而言,涉及一种文件加密方法及装置、文件解密方法及装置。
背景技术
目前,用户经常会有一些很重要的文件,如隐私文件或涉及商业秘密的文件等。用户不希望他人获知这些文件的内容,因此需要对文件进行加密。
当前,相关技术中通常使用加密算法对文件进行加密。当需要对文件进行加密时,根据用户提交的密码,通过预先设置的加密算法对文件进行运算,得到文件的密文。
但相关技术中仅通过加密算法对文件本身进行运算加密,加密方式过于单一,很容易被恶意份子破解,安全性很低。
发明内容
有鉴于此,本发明实施例的目的在于提供一种文件加密方法及装置、文件解密方法及装置,通过加密模块的组合来对待加密文件进行加密,使用户能够自由选择一个或多个加密模块,并自定义加密模块的排列顺序,通过用户自己选择的加密模块的组合,对待加密文件进行嵌套加密,加密复杂度很高,很难被破解,增加了加密文件的安全性。
第一方面,本发明实施例提供了一种文件加密方法,所述方法包括:
获取用户选择的待加密文件;
根据加密应用的版本号,从服务器获取加密模块列表;
根据所述用户从所述加密模块列表选择的加密模块信息,获取对应的加密模块,获取所述用户对所述加密模块进行排序的模块排序信息;
根据所述加密模块及所述模块排序信息,对所述待加密文件进行加密。
结合第一方面,本发明实施例提供了上述第一方面的第一种可能的实现方式,其中,所述根据所述用户从所述加密模块列表选择的加密模块信息,获取对应的加密模块,包括:
根据所述用户从所述加密模块列表选择的加密模块信息,确定本地是否存在所述加密模块信息对应的加密模块;
当确定本地不存在所述加密模块信息对应的加密模块时,根据所述加密模块信息,从所述服务器下载对应的加密模块。
结合第一方面,本发明实施例提供了上述第一方面的第二种可能的实现方式,其中,所述根据所述加密模块及所述用户提交的模块排序信息,对所述待加密文件进行加密,包括:
根据所述用户提交的模块排序信息,对所述加密模块进行排序;
根据所述模块排序信息和所述加密模块信息,生成密钥;
通过排序后的所述加密模块对所述待加密文件进行加密;
通过所述密钥对加密后的所述待加密文件进行再次加密。
结合第一方面的第二种可能的实现方式,本发明实施例提供了上述第一方面的第三种可能的实现方式,其中,所述通过排序后的所述加密模块对所述待加密文件进行加密,包括:
通过第一加密模块对所述待加密文件进行加密,所述第一加密模块为排序后排在第一位的加密模块;
通过第二加密模块,对与所述第二加密模块相邻的前一个加密模块输出的密文进行加密,所述第二加密模块为排序后排在所述第一加密模块之后的加密模块。
结合第一方面的第二种可能的实现方式,本发明实施例提供了上述第一方面的第四种可能的实现方式,其中,所述通过所述密钥对加密后的所述待加密文件进行再次加密之后,还包括:
对所述密钥进行哈希运算,转换为消息摘要算法MD5编码;
将所述MD5编码和再次加密后的所述待加密文件进行打包。
第二方面,本发明实施例提供了一种文件解密方法,所述方法包括:
获取用户选择的待解密文件;
获取用户选择的加密模块及模块排序信息;
根据所述加密模块及所述模块排序信息对所述待解密文件进行解密。
结合第二方面,本发明实施例提供了上述第二方面的第一种可能的实现方式,其中,所述根据所述加密模块及所述模块排序信息对所述待解密文件进行解密,包括:
根据所述模块排序信息及所述加密模块包括的加密模块信息,生成密钥;
从所述待解密文件中获取MD5编码,将所述密钥转换为MD5字符串;
当确定所述MD5字符串与所述MD5编码相同时,根据所述密钥对所述待解密文件包括的密文进行解密;
根据所述模块排序信息和所述加密模块,对解密后的所述密文进行再次解密。
结合第二方面的第一种可能的实现方式,本发明实施例提供了上述第二方面的第二种可能的实现方式,其中,所述根据所述模块排序信息和所述加密模块,对解密后的所述密文进行再次解密,包括:
根据所述模块排序信息对所述加密模块进行排序,所述模块排序信息指示的排序顺序与加密过程中的模块排序顺序相反;
通过排序后的所述加密模块,对解密后的所述密文进行再次解密。
第三方面,本发明实施例提供了一种文件加密装置,所述装置包括:
获取模块,用于获取用户选择的待加密文件;根据加密应用的版本号,从服务器获取加密模块列表;根据所述用户从所述加密模块列表选择的加密模块信息,获取对应的加密模块,获取所述用户对所述加密模块进行排序的模块排序信息;
加密模块,用于根据所述加密模块及所述模块排序信息,对所述待加密文件进行加密。
第四方面,本发明实施例提供了一种文件解密装置,所述装置包括:
获取模块,用于获取用户选择的待解密文件;获取用户选择的加密模块及模块排序信息;
解密模块,用于根据所述加密模块及所述模块排序信息对所述待解密文件进行解密。
在本发明实施例提供的方法及装置中,获取用户选择的待加密文件;根据加密应用的版本号,从服务器获取加密模块列表;根据用户从加密模块列表选择的加密模块信息,获取对应的加密模块,获取用户对加密模块进行排序的模块排序信息;根据加密模块及模块排序信息,对待加密文件进行加密。本发明通过加密模块的组合来对待加密文件进行加密,使用户能够自由选择一个或多个加密模块,并自定义加密模块的排列顺序,通过用户自己选择的加密模块的组合,对待加密文件进行嵌套加密,解密时只能使用加密时的加密模块,并按照与加密时相反的顺序才能进行解密,因此对文件进行加密的复杂度很高,很难被破解,增加了加密文件的安全性。
为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出了本发明实施例1所提供的一种文件加密方法的流程图;
图2示出了本发明实施例2所提供的一种文件解密方法的流程图;
图3示出了本发明实施例3所提供的一种文件加密装置的结构示意图;
图4示出了本发明实施例4所提供的一种文件解密装置的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
考虑到相关技术中仅通过加密算法对文件本身进行运算加密,加密方式过于单一,很容易被恶意份子破解,安全性很低。基于此,本发明实施例提供了一种文件加密方法及装置、文件解密方法及装置,下面通过实施例进行描述。
实施例1
参见图1,本发明实施例提供了一种文件加密方法,该方法具体包括以下步骤:
步骤101:获取用户选择的待加密文件。
本发明实施例的执行主体为手机或PAD等终端,终端上安装有用于加密文件的加密应用。当用户需要通过终端加密文件时,需要先选取需要加密的待加密文件。在本发明实施例中,待加密文件可以是单个的文件,也可以是包括多个文件的文件夹。
在本发明实施例中,通过安卓系统自带的文件浏览器来向用户显示本地文件,显示本地文件的代码如下所示:
Intent intent=new Intent(Intent.ACTION_GET_CONTENT);//初始化连接的intent(意图);
intent.setType("*/*");//设置类型,该类型可以是任意类型;
intent.addCategory(Intent.CATEGORY_OPENABLE);//指示一个GET_CONTENT意图,该意图用来打开选择文件的界面;
startActivityForResult(intent,1);//开始执行。
通过执行上述显示本地文件的代码,向用户显示文件选择界面,用户浏览文件选择界面中包括的文件,通过点击其中的一个文件,来选择被点击的文件作为待加密文件。终端当检测到用户点击文件选择界面中的一文件时,通过回调函数onActivityResult()来获取用户选择的文件的绝对地址,即获取到待加密文件的绝对地址。
由于在用户选择完待加密文件后,可能会存在一些误操作误将待加密文件从内存中删除,因此本发明实施例在上述获取到待加密文件的绝对地址后,还通过执行如下代码来判断待加密文件是否存在,代码示例如下:
File f=new File("/storage/sdcard/test.pdf");//根据获取的待加密文件的绝对地址新建一个文件对象;
f.exists()//通过新建的文件对象判断待加密文件是否存在。
上述通过基于待加密文件的绝对地址新建的文件对象来执行函数exists(),通过函数exists()判断待加密文件是否存在。若函数exists()的返回值为false,则表明待加密文件不存在。如果函数exists()的返回值为true,则表明待加密文件存在。
当函数exists()的返回值为false,确定用户选择的待加密文件不存在时,再次显示文件选择界面给用户,指示用户重新选择一个文件作为待加密文件。当用户重新选择一个文件时,再次通过上述方式确定用户重新选择的文件是否存在,直到确定用户选择的待加密文件存在于内存中为止。
当确定用户选择的待加密文件存在时,根据上述获取的待加密文件的绝对地址,获取待加密文件的所有文件内容。
通过本步骤的操作获取到待加密文件后,通过如下步骤102-104的操作来对待加密文件进行加密,得到待加密文件对应的密文。
步骤102:根据加密应用的版本号,从服务器获取加密模块列表。
当终端检测到用户提交的加密请求时,终端获取本地安装的加密应用的版本号,发送该版本号给服务器。服务器接收到该版本号后,获取各个加密模块对应的版本号,依次将各个加密模块对应的版本号与终端发送的版本号进行比较,确定出版本号低于或等于终端发送的版本号的加密模块。服务器获取确定出的加密模块的加密模块信息,将获取的加密模块信息组成加密模块列表,发送该加密模块列表给终端。
在本发明实施例中,加密模块可以包括纯数字密码加密模块、图形密码加密模块及人脸识别加密模块等。服务器中存储有这些加密模块,且服务器中还会存储着各个加密模块所对应的加密应用的版本号,其存储结构如表1所示:
表1
名称 类型 说明
Id Int 模块标识
Name String 模块名称
Function_id int 模块功能标识
Version Int 对应的版本号
其中,Version为加密模块对应的加密应用的版本号,只有当Version所指示的版本号低于或等终端上安装的加密应用的版本号时,终端才能使用Version对应的加密模块,否则Version对应的加密模块可能会造成不兼容无法使用的情况。因此服务器接收到终端发送的版本号后,根据终端发送的版本号,获取版本号低于或等于终端发送的版本号的加密模块的加密模块信息。上述加密模块信息可以包括上述表1中的模块名和模块标识。
在本发明实施例中,加密模块列表为json(JavaScript Object Notation,轻量级数据交换格式)数据,其结构如下:
Figure BDA0001184870780000091
步骤103:根据用户从加密模块列表选择的加密模块信息,获取对应的加密模块,获取用户对加密模块进行排序的模块排序信息。
终端从服务器获取到上述json格式的加密模块列表后,根据该加密模块列表显示可用的加密模块的加密模块信息给用户。显示的加密模块信息包括加密模块的模块名称和模块标识。
用户根据显示的加密模块信息包括的模块名称,从中选择需使用的加密模块,可以单选也可以多选。终端检测到用户选择一个加密模块时,将用户选择的加密模块的模块标识加入上述json数据中的加密模块的下载链接中,根据添加了模块标识的下载链接,下载用户选择的加密模块。
例如,假设用户选择了模块名称为"复杂符号密码盘加密"及"人脸识别加密"的两个加密模块,则终端将"复杂符号密码盘加密"对应的模块标识"4367"及"人脸识别加密"对应的模块标识"2321"添加在前述json数据包括的下载链接url中,得到的下载地址分别为http://XXXX?id=4367及http://XXXX?id=2321。终端根据这两个下载地址从服务器下载复杂符号密码盘加密模块和人脸识别加密模块。
在本发明实施例中,根据用户从加密模块列表选择的加密模块信息,先确定本地是否已存在加密模块信息对应的加密模块。若本地已存在加密模块信息对应的加密模块,则直接调用本地存在的加密模块。当确定本地不存在加密模块信息对应的加密模块时,按照上述方式根据加密模块信息,从服务器下载对应的加密模块。本发明实施例中对加密模块的下载是通过安卓自带的下载器来下载的。
模块排序信息为用户设定的各个加密模块在加密过程中的排列顺序。本发明实施例就是根据用户自定义的加密模块的排列顺序,实现多个加密模块的组合进行复杂的文件加密。终端获取到用户选择的加密模块后,获取用户对这些加密模块进行排序生成的模块排序信息。
步骤104:根据加密模块及模块排序信息,对待加密文件进行加密。
终端根据用户提交的模块排序信息,对加密模块进行排序;根据模块排序信息和加密模块信息,生成密钥;通过排序后的加密模块对待加密文件进行加密;通过密钥对加密后的待加密文件进行再次加密。
通过上述方式对待加密文件加密后,还对密钥进行哈希运算,转换为MD5(MessageDigest Algorithm,消息摘要算法)编码,将该MD5编码和再次加密后的待加密文件进行打包。在进行打包时可以将该MD5编码添加到再次加密后的待加密文件的头部。
在本发明实施例中,终端依次从各个加密模块的加密模块信息中获取出各个加密模块的模块标识,将获取的模块标识按照模块排序信息所指示的排列顺序组成一个字符串,将该字符串确定为密钥。
终端通过排序后的加密模块对待加密文件进行加密时,通过第一加密模块对待加密文件进行加密,第一加密模块为排序后排在第一位的加密模块;然后通过第二加密模块,对与第二加密模块相邻的前一个加密模块输出的密文进行加密,第二加密模块为排序后排在第一加密模块之后的加密模块。
在通过排序后的加密模块对待加密文件进行加密时,排在第一位的加密模块对待加密文件进行加密后,将得到的密文输入排在第二位的加密模块中,通过排在第二位的加密模块进行加密后再输入排在第三位的加密模块中,如此前一个加密模块的输出作为后一个加密模块的输入进行嵌套加密,直到用户选择的每个加密模块都完成加密操作后得到待加密文件对应的嵌套加密的密文。即除排在第一位的加密模块外的其他每个加密模块,都是以相邻的前一个加密模块的加密结果作为输入进行再次加密,如此通过用户选择的多个加密模块,按照模块排序信息所指示的排列顺序,将待加密文件进行多次嵌套加密。最后再通过上述生成的密钥对嵌套加密得到的密文进行加密,得到最终的密文。
在本发明实施例中,每个加密模块都是一个单独可执行的插件。在通过一个加密模块进行加密操作时,首先启动该加密模块,向该加密模块传入加密文件的路径。对于排在第一位的加密模块,需传入待加密文件的绝对地址。加密模块首先根据传入的路径确定需加密的文件是否存在,并在确定存在时根据传入的路径获取到需加密的文件的数据,提示用户输入本次加密的密码。例如,复杂符号密码盘加密模块提示用户通过复杂符号密码盘输入复杂符号密码,或者人脸识别加密模块提示用户将脸部对准摄像头,通过摄像头拍下用户的头像作为本次加密的密码。加密模块得到本次加密的密码后,通过得到的密码对获取的需加密的文件的数据进行加密,输出加密得到的密文至预先设置的文件路径。预先设置的文件路径可以与待加密文件的绝对地址相同,也可以由用户自定义设置。
在本发明实施例中,每个加密模块的加密算法和加密方式都是相互独立的,因此可以在服务器端随时更换加密模块的加密算法和加密方式。另外,由于加密模块既可以进行加密操作也可以进行解密操作,所以本发明实施例中在通过加密模块进行加密,向加密模块中传入需加密的文件的路径时,还向加密模块传入加密标识,该加密标识用于指示该加密模块本次操作为加密操作。
为了进一步理解上述加密过程,下面举例进行说明。例如,假设用户选择的加密模块为复杂符号密码盘加密模块和人脸识别加密模块,假设用户提交的模块排序信息所指示的排列顺序为人脸识别加密模块排在复杂符号密码盘加密模块前面。复杂符号密码盘加密模块的模块标识为"4367",人脸识别加密模块的模块标识为"2321"。则按照模块排序信息生成的密钥为“23214367”。首先通过人脸识别加密模块对待加密文件进行加密,在加密过程中通过摄像头录入用户的头像,将用户的头像作为本次加密的密码对待加密文件进行第一次加密。将人脸识别加密模块加密得到的密文作为复杂符号密码盘加密模块的输入数据,通过复杂符号密码盘接收用户提交的复杂符号密码,通过该复杂符号密码对人脸识别加密模块加密得到的密文进行再次加密。最后再通过上述生成的密钥“23214367”对复杂符号密码盘加密模块输出的密文进行加密得到待加密文件对应的最终的密文。然后将密钥“23214367”转换为MD5编码,将该MD5编码与待加密文件对应的最终的密文打包在一起。
通过本发明实施例对待加密文件进行嵌套加密后得到的密文为层级加密文件,经过多个加密模块加密后得到的密文,其数据已经无法反编译,只能根据与加密过程中加密模块的顺序相反的顺序来解密。
通过本发明实施例实现动态加密文件,即使用户可以自由选择加密模块来加密,可以单个加密模块加密,也可以组合多个加密模块加密。通过本发明实施例对用户的敏感数据或者隐私数据加密,更能增加文件的加密复杂度,非常难以破解。且每个加密模块的加密算法在服务器中是进行定期更新的,因此破解难度就更大了。
在本发明实施例中,获取用户选择的待加密文件;根据加密应用的版本号,从服务器获取加密模块列表;根据用户从加密模块列表选择的加密模块信息,获取对应的加密模块,获取用户对加密模块进行排序的模块排序信息;根据加密模块及模块排序信息,对待加密文件进行加密。本发明通过加密模块的组合来对待加密文件进行加密,使用户能够自由选择一个或多个加密模块,并自定义加密模块的排列顺序,通过用户自己选择的加密模块的组合,对待加密文件进行嵌套加密,解密时只能使用加密时的加密模块,并按照与加密时相反的顺序才能进行解密,因此对文件进行加密的复杂度很高,很难被破解,增加了加密文件的安全性。
实施例2
参见图2,本发明实施例提供了一种文件解密方法,该方法具体包括以下步骤:
步骤201:获取用户选择的待解密文件。
本发明实施例的执行主体为手机或PAD等终端,终端上安装有用于加密文件的加密应用。当用户需要通过终端解密文件时,需要先选取需要解密的待解密文件。
本发明实施例中获取用户选择的待解密文件的方式与实施例1中的步骤101获取待加密文件的方式相同,在此不再赘述。
通过本步骤的操作获取到待解密文件后,通过如下步骤202和203的操作来对待解密文件进行解密,得到待解密文件对应的明文。
步骤202:获取用户选择的加密模块及模块排序信息。
当终端检测到用户提交的解密请求时,终端获取本地安装的加密应用的版本号,根据该版本号,从服务器获取加密模块列表。获取加密模块列表的具体操作,与实施例1中步骤102的操作相同,在此不再赘述。
终端获取到加密模块列表后,显示加密模块列表给用户。用户从显示的加密模块列表中选择加密模块信息,用户选择的加密模块信息需为待解密文件在加密过程中所使用的加密模块对应的加密模块信息。终端根据用户选择的加密模块信息获取对应的加密模块,具体获取过程,与实施例1中步骤103的操作相同,在此不再赘述。
终端获取到加密模块后,接收用户提交的模块排序信息,该模块排序信息指示的排序顺序与加密过程中的模块排序顺序相反。
例如,假设待解密文件在加密过程中使用了复杂符号密码盘加密模块和人脸识别加密模块进行加密,且加密顺序为人脸识别加密模块排在复杂符号密码盘加密模块之前。则在解密过程中也需要使用复杂符号密码盘加密模块和人脸识别加密模块,但用户提交的模块排序信息所指示的顺序应为复杂符号密码盘加密密码排在人脸识别加密模块之前。
步骤203:根据加密模块及模块排序信息对待解密文件进行解密。
根据模块排序信息及加密模块包括的加密模块信息,生成密钥;从待解密文件中获取MD5编码,将密钥转换为MD5字符串;当确定MD5字符串与MD5编码相同时,根据密钥对待解密文件包括的密文进行解密;根据模块排序信息和加密模块,对解密后的密文进行再次解密。
上述生成密钥的操作,与步骤104中生成密钥的操作相同,在此不再赘述。生成密钥后,从待解密文件的头部获取MD5编码。将生成的密钥中包括的各个加密模块的模块标识,按照与模块排序信息所指示的排列顺序相反的顺序进行排列,得到一个字符串,对该字符串进行哈希运算,转换为MD5字符串。比较该MD5字符串与待解密文件中包括的MD5编码是否相同,如果是,则根据上述生成的密钥对待解密文件包括的密文进行解密。如果否,则表明用户选择的加密模块与加密过程中所使用的的加密模块不同,或者用户提交的模块排序信息所指示的排列顺序与加密过程的排列顺序的相反顺序不同,此时显示用于指示模块选择错误或者排序错误的提示信息给用户。
通过密钥对待解密文件中的密文进行解密后,根据模块排序信息对加密模块进行排序;通过排序后的加密模块,对解密后的密文进行再次解密。
终端通过排序后的加密模块对待解密文件进行解密时,先通过排序后排在第一位的加密模块对待解密文件进行解密,然后通过排序后排在第一位的加密模块之后的解密模块,对相邻的前一个加密模块输出的密文进行解密。
在通过排序后的加密模块对待解密文件进行解密时,排在第一位的加密模块对待解密文件进行解密后,将得到的密文输入排在第二位的加密模块中,通过排在第二位的加密模块进行解密后再输入排在第三位的加密模块中,如此前一个加密模块的输出作为后一个加密模块的输入进行嵌套解密,直到用户选择的每个加密模块都完成解密操作后得到待解密文件对应的明文。即除排在第一位的加密模块外的其他每个加密模块,都是以相邻的前一个加密模块的解密结果作为输入进行再次解密,如此通过用户选择的多个加密模块,按照模块排序信息所指示的排列顺序,将待解密文件进行多次嵌套解密,得到最终的明文。
在本发明实施例中,每个加密模块都是一个单独可执行的插件。在通过一个加密模块进行解密操作时,首先启动该加密模块,向该加密模块传入解密文件的路径。对于排在第一位的加密模块,需传入待解密文件的绝对地址。加密模块首先根据传入的路径确定需解密的文件是否存在,并在确定存在时根据传入的路径获取到需解密的文件的数据,提示用户输入本次解密的密码。例如,复杂符号密码盘加密模块提示用户通过复杂符号密码盘输入复杂符号密码,或者人脸识别加密模块提示用户将脸部对准摄像头,通过摄像头拍下用户的头像作为本次解密的密码。加密模块得到本次解密的密码后,通过得到的密码对获取的需解密的文件的数据进行解密,输出解密得到的文件至预先设置的文件路径。预先设置的文件路径可以与待解密文件的绝对地址相同,也可以由用户自定义设置。
在本发明实施例中,在加密模块中输入的解密密码需与加密过程中在该加密模块中输入的加密密码相同。
在本发明实施例中,每个加密模块的解密算法和解密方式都是相互独立的,因此可以在服务器端随时更换加密模块的解密算法和解密方式。另外,由于加密模块既可以进行加密操作也可以进行解密操作,所以本发明实施例中在通过加密模块进行解密,向加密模块中传入需解密的文件的路径时,还向加密模块传入解密标识,该解密标识用于指示该加密模块本次操作为解密操作。
为了进一步理解上述解密过程,下面举例进行说明。例如,假设加密过程中使用的加密模块为复杂符号密码盘加密模块和人脸识别加密模块,加密过程的模块排序信息所指示的排列顺序为人脸识别加密模块排在复杂符号密码盘加密模块前面。复杂符号密码盘加密模块的模块标识为"4367",人脸识别加密模块的模块标识为"2321"。则在解密过程中,也需获取复杂符号密码盘加密模块和人脸识别加密模块这两个加密模块,用户提交的解密过程的模块排序信息所指示的排序顺序应为人脸识别加密模块排在复杂符号密码盘加密模块后面。按照解密过程的模块排序信息生成的密钥为“43672321”。首先通过密钥“43672321”对待解密文件中的密文进行解密,然后通过复杂符号密码盘接收用户提交的复杂符号密码,通过该复杂符号密码对上述解密得到的文件进行再次解密。最后再通过人脸识别加密模块对复杂符号密码盘加密模块的解密结果进行再次解密,在解密过程中通过摄像头录入用户的头像,将用户的头像作为本次解密的密码进行解密,得到待解密文件对应的明文。
通过多个加密模块的组合嵌套加密后得到的层级加密文件,其数据已经无法反编译,只能通过本发明实施例提供的解密方法,根据与加密过程中加密模块的顺序相反的顺序来解密。
在本发明实施例中,获取用户选择的待解密文件;获取用户选择的加密模块及模块排序信息;根据加密模块及模块排序信息对待解密文件进行解密。本发明通过加密模块的组合来对待加密文件进行加密,使用户能够自由选择一个或多个加密模块,并自定义加密模块的排列顺序,通过用户自己选择的加密模块的组合,对待加密文件进行嵌套加密,解密时只能使用加密时的加密模块,并按照与加密时相反的顺序才能进行解密,因此对文件进行加密的复杂度很高,很难被破解,增加了加密文件的安全性。
实施例3
参见图3,本发明实施例提供了一种文件加密装置,该装置用于执行实施例1所提供的文件加密方法,该装置包括:
获取模块301,用于获取用户选择的待加密文件;根据加密应用的版本号,从服务器获取加密模块列表;根据用户从加密模块列表选择的加密模块信息,获取对应的加密模块,获取用户对加密模块进行排序的模块排序信息;
加密模块302,用于根据加密模块及模块排序信息,对待加密文件进行加密。
上述获取模块301包括:
确定单元,用于根据用户从加密模块列表选择的加密模块信息,确定本地是否存在加密模块信息对应的加密模块;
下载单元,用于当确定本地不存在加密模块信息对应的加密模块时,根据加密模块信息,从服务器下载对应的加密模块。
加密模块302包括:
排序单元,用于根据用户提交的模块排序信息,对加密模块进行排序;
生成单元,用于根据模块排序信息和加密模块信息,生成密钥;
加密单元,用于通过排序后的加密模块对待加密文件进行加密;通过密钥对加密后的待加密文件进行再次加密。
上述加密单元,用于通过第一加密模块对待加密文件进行加密,第一加密模块为排序后排在第一位的加密模块;通过第二加密模块,对与第二加密模块相邻的前一个加密模块输出的密文进行加密,第二加密模块为排序后排在第一加密模块之后的加密模块。
在本发明实施例中,该装置还包括:
打包模块,用于对密钥进行哈希运算,转换为消息摘要算法MD5编码;将MD5编码和再次加密后的待加密文件进行打包。
在本发明实施例中,获取用户选择的待加密文件;根据加密应用的版本号,从服务器获取加密模块列表;根据用户从加密模块列表选择的加密模块信息,获取对应的加密模块,获取用户对加密模块进行排序的模块排序信息;根据加密模块及模块排序信息,对待加密文件进行加密。本发明通过加密模块的组合来对待加密文件进行加密,使用户能够自由选择一个或多个加密模块,并自定义加密模块的排列顺序,通过用户自己选择的加密模块的组合,对待加密文件进行嵌套加密,解密时只能使用加密时的加密模块,并按照与加密时相反的顺序才能进行解密,因此对文件进行加密的复杂度很高,很难被破解,增加了加密文件的安全性。
实施例4
参见图4,本发明实施例提供了一种文件解密装置,该装置用于执行上述实施例2所提供的文件解密方法,该装置包括:
获取模块401,用于获取用户选择的待解密文件;获取用户选择的加密模块及模块排序信息;
解密模块402,用于根据加密模块及模块排序信息对待解密文件进行解密。
上述解密模块402包括:
生成单元,用于根据模块排序信息及加密模块包括的加密模块信息,生成密钥;
转换单元,用于从待解密文件中获取MD5编码,将密钥转换为MD5字符串;
解密单元,用于当确定MD5字符串与MD5编码相同时,根据密钥对待解密文件包括的密文进行解密;根据模块排序信息和加密模块,对解密后的密文进行再次解密。
上述解密单元,用于根据模块排序信息对加密模块进行排序,模块排序信息指示的排序顺序与加密过程中的模块排序顺序相反;通过排序后的加密模块,对解密后的密文进行再次解密。
在本发明实施例中,获取用户选择的待解密文件;获取用户选择的加密模块及模块排序信息;根据加密模块及模块排序信息对待解密文件进行解密。本发明通过加密模块的组合来对待加密文件进行加密,使用户能够自由选择一个或多个加密模块,并自定义加密模块的排列顺序,通过用户自己选择的加密模块的组合,对待加密文件进行嵌套加密,解密时只能使用加密时的加密模块,并按照与加密时相反的顺序才能进行解密,因此对文件进行加密的复杂度很高,很难被破解,增加了加密文件的安全性。
本发明实施例所提供的文件加密装置及文件解密装置可以为设备上的特定硬件或者安装于设备上的软件或固件等。本发明实施例所提供的装置,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,前述描述的系统、装置和单元的具体工作过程,均可以参考上述方法实施例中的对应过程,在此不再赘述。
在本发明所提供的实施例中,应该理解到,所揭露装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明提供的实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释,此外,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围。都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

Claims (8)

1.一种文件加密方法,其特征在于,所述方法包括:
获取用户选择的待加密文件;
根据加密应用的版本号,从服务器获取加密模块列表;
根据所述用户从所述加密模块列表选择的加密模块信息,获取对应的加密模块,获取所述用户对所述加密模块进行排序的模块排序信息;
根据所述加密模块及所述模块排序信息,对所述待加密文件进行加密;
所述根据所述加密模块及所述模块排序信息,对所述待加密文件进行加密,包括:
根据所述用户提交的模块排序信息,对所述加密模块进行排序;
根据所述模块排序信息和所述加密模块信息,生成密钥;
通过排序后的所述加密模块对所述待加密文件进行加密;
通过所述密钥对加密后的所述待加密文件进行再次加密。
2.根据权利要求1所述的方法,其特征在于,所述根据所述用户从所述加密模块列表选择的加密模块信息,获取对应的加密模块,包括:
根据所述用户从所述加密模块列表选择的加密模块信息,确定本地是否存在所述加密模块信息对应的加密模块;
当确定本地不存在所述加密模块信息对应的加密模块时,根据所述加密模块信息,从所述服务器下载对应的加密模块。
3.根据权利要求1所述的方法,其特征在于,所述通过排序后的所述加密模块对所述待加密文件进行加密,包括:
通过第一加密模块对所述待加密文件进行加密,所述第一加密模块为排序后排在第一位的加密模块;
通过第二加密模块,对与所述第二加密模块相邻的前一个加密模块输出的密文进行加密,所述第二加密模块为排序后排在所述第一加密模块之后的加密模块。
4.根据权利要求1所述的方法,其特征在于,所述通过所述密钥对加密后的所述待加密文件进行再次加密之后,还包括:
对所述密钥进行哈希运算,转换为消息摘要算法MD5编码;
将所述MD5编码和再次加密后的所述待加密文件进行打包。
5.一种文件解密方法,其特征在于,所述方法包括:
获取用户选择的待解密文件;
获取用户选择的加密模块及模块排序信息;
根据所述加密模块及所述模块排序信息对所述待解密文件进行解密;
所述根据所述加密模块及所述模块排序信息对所述待解密文件进行解密,包括:
根据所述模块排序信息及所述加密模块包括的加密模块信息,生成密钥;
从所述待解密文件中获取MD5编码,将所述密钥转换为MD5字符串;
当确定所述MD5字符串与所述MD5编码相同时,根据所述密钥对所述待解密文件包括的密文进行解密;
根据所述模块排序信息和所述加密模块,对解密后的所述密文进行再次解密。
6.根据权利要求5所述的方法,其特征在于,所述根据所述模块排序信息和所述加密模块,对解密后的所述密文进行再次解密,包括:
根据所述模块排序信息对所述加密模块进行排序,所述模块排序信息指示的排序顺序与加密过程中的模块排序顺序相反;
通过排序后的所述加密模块,对解密后的所述密文进行再次解密。
7.一种文件加密装置,其特征在于,所述装置包括:
获取模块,用于获取用户选择的待加密文件;根据加密应用的版本号,从服务器获取加密模块列表;根据所述用户从所述加密模块列表选择的加密模块信息,获取对应的加密模块,获取所述用户对所述加密模块进行排序的模块排序信息;
加密模块,用于根据所述加密模块及所述模块排序信息,对所述待加密文件进行加密;
加密模块包括:
排序单元,用于根据用户提交的模块排序信息,对加密模块进行排序;
生成单元,用于根据模块排序信息和加密模块信息,生成密钥;
加密单元,用于通过排序后的加密模块对待加密文件进行加密;通过密钥对加密后的待加密文件进行再次加密。
8.一种文件解密装置,其特征在于,所述装置包括:
获取模块,用于获取用户选择的待解密文件;获取用户选择的加密模块及模块排序信息;
解密模块,用于根据所述加密模块及所述模块排序信息对所述待解密文件进行解密;
解密模块,包括:
生成单元,用于根据模块排序信息及加密模块包括的加密模块信息,生成密钥;
转换单元,用于从待解密文件中获取MD5编码,将密钥转换为MD5字符串;
解密单元,用于当确定MD5字符串与MD5编码相同时,根据密钥对待解密文件包括的密文进行解密;根据模块排序信息和加密模块,对解密后的密文进行再次解密。
CN201611178233.6A 2016-12-19 2016-12-19 一种文件加密方法及装置、文件解密方法及装置 Active CN106599723B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201611178233.6A CN106599723B (zh) 2016-12-19 2016-12-19 一种文件加密方法及装置、文件解密方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201611178233.6A CN106599723B (zh) 2016-12-19 2016-12-19 一种文件加密方法及装置、文件解密方法及装置

Publications (2)

Publication Number Publication Date
CN106599723A CN106599723A (zh) 2017-04-26
CN106599723B true CN106599723B (zh) 2020-03-17

Family

ID=58599402

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201611178233.6A Active CN106599723B (zh) 2016-12-19 2016-12-19 一种文件加密方法及装置、文件解密方法及装置

Country Status (1)

Country Link
CN (1) CN106599723B (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107220552B (zh) * 2017-05-25 2019-11-05 维沃移动通信有限公司 一种加密和解密方法及移动终端
CN107704743A (zh) * 2017-08-23 2018-02-16 深圳市优品壹电子有限公司 具有数据备份功能的装置和相关产品
CN107437990A (zh) * 2017-09-14 2017-12-05 山东浪潮通软信息科技有限公司 加密方法、解密方法、加密装置和解密装置
CN108229192B (zh) * 2018-01-04 2020-05-08 武汉斗鱼网络科技有限公司 一种文件解密方法、装置及客户端
CN108197439B (zh) * 2018-01-04 2020-05-08 武汉斗鱼网络科技有限公司 一种文件加密方法、装置及服务器
CN110175462B (zh) * 2019-05-10 2021-08-20 中国银行股份有限公司 一种跨平台解密方法、装置及存储介质
CN113722724A (zh) * 2020-05-26 2021-11-30 Tcl新技术(惠州)有限公司 一种加密方法、解密方法、终端以及存储介质
CN112434324B (zh) * 2020-12-17 2024-03-19 合肥大唐存储科技有限公司 一种数据处理设备
CN112948843B (zh) * 2021-01-27 2022-07-15 维沃移动通信有限公司 加密方法、装置、电子设备及介质
CN115834258B (zh) * 2023-02-20 2023-05-02 成都九洲电子信息系统股份有限公司 一种跨平台信息识别方法、系统及存储介质

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101401105A (zh) * 2006-04-18 2009-04-01 国际商业机器公司 用于提供加密文件系统的加密装置和方法
CN101399670A (zh) * 2007-09-28 2009-04-01 东芝解决方案株式会社 加密模块分配系统和装置
CN101420428A (zh) * 2007-09-28 2009-04-29 东芝解决方案株式会社 加密模块管理装置和方法
CN101426012A (zh) * 2007-09-28 2009-05-06 东芝解决方案株式会社 软件模块管理装置
CN101567880A (zh) * 2008-04-21 2009-10-28 成都市华为赛门铁克科技有限公司 加密套件选择方法、装置和系统
CN103763091A (zh) * 2014-01-09 2014-04-30 深圳市欧珀通信软件有限公司 一种应用程序加密、解密方法及加密、解密装置
CN104573551A (zh) * 2014-12-25 2015-04-29 广东欧珀移动通信有限公司 一种文件处理的方法及移动终端
CN105760765A (zh) * 2016-02-04 2016-07-13 北京致远协创软件有限公司 数据加密方法、装置及数据解密方法、装置
CN106027794A (zh) * 2016-06-29 2016-10-12 维沃移动通信有限公司 一种照片的加密方法及移动终端
CN106203061A (zh) * 2016-06-27 2016-12-07 维沃移动通信有限公司 一种应用程序的加密方法及移动终端

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101401105A (zh) * 2006-04-18 2009-04-01 国际商业机器公司 用于提供加密文件系统的加密装置和方法
CN101399670A (zh) * 2007-09-28 2009-04-01 东芝解决方案株式会社 加密模块分配系统和装置
CN101420428A (zh) * 2007-09-28 2009-04-29 东芝解决方案株式会社 加密模块管理装置和方法
CN101426012A (zh) * 2007-09-28 2009-05-06 东芝解决方案株式会社 软件模块管理装置
CN101567880A (zh) * 2008-04-21 2009-10-28 成都市华为赛门铁克科技有限公司 加密套件选择方法、装置和系统
CN103763091A (zh) * 2014-01-09 2014-04-30 深圳市欧珀通信软件有限公司 一种应用程序加密、解密方法及加密、解密装置
CN104573551A (zh) * 2014-12-25 2015-04-29 广东欧珀移动通信有限公司 一种文件处理的方法及移动终端
CN105760765A (zh) * 2016-02-04 2016-07-13 北京致远协创软件有限公司 数据加密方法、装置及数据解密方法、装置
CN106203061A (zh) * 2016-06-27 2016-12-07 维沃移动通信有限公司 一种应用程序的加密方法及移动终端
CN106027794A (zh) * 2016-06-29 2016-10-12 维沃移动通信有限公司 一种照片的加密方法及移动终端

Also Published As

Publication number Publication date
CN106599723A (zh) 2017-04-26

Similar Documents

Publication Publication Date Title
CN106599723B (zh) 一种文件加密方法及装置、文件解密方法及装置
US8578473B2 (en) Systems and methods for information security using one-time pad
CN113364760A (zh) 一种数据加密处理方法、装置、计算机设备及存储介质
CN105760764B (zh) 一种嵌入式存储设备文件的加解密方法、装置及终端
CN107786331B (zh) 数据处理方法、装置、系统及计算机可读存储介质
US11296879B2 (en) Encrypted search
CN104283668B (zh) 基于移动终端获得应用密码的方法及装置
US20160285635A1 (en) Secure communication of data between devices
CN104602238A (zh) 一种无线网络连接方法、装置和系统
US20200145389A1 (en) Controlling Access to Data
JP2018502524A (ja) 情報に対する暗号化制御、情報解析の方法、システム及び端末
CN104243149A (zh) 加、解密方法,装置和服务器
CN111131282B (zh) 请求加密方法、装置、电子设备及存储介质
Fauziah et al. Design and implementation of AES and SHA-256 cryptography for securing multimedia file over android chat application
CN111859435B (zh) 一种数据安全处理方法及装置
WO2017006118A1 (en) Secure distributed encryption system and method
CN110062941B (zh) 消息发送系统及方法、通信终端、服务器装置、记录介质
CN114443718A (zh) 一种数据查询方法及系统
CN115603907A (zh) 加密存储数据的方法、装置、设备和存储介质
US20190394038A1 (en) Searchable encryption method
JP5411034B2 (ja) データベース暗号化システム及び方法
US10050943B2 (en) Widely distributed parameterization
KR102216869B1 (ko) 종단간 암호화가 적용된 파일에 대한 복호화 장치 및 방법
CN110830252B (zh) 数据加密的方法、装置、设备和存储介质
CN107533617B (zh) 服务器装置、信息管理系统、信息管理方法以及计算机程序

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant