CN115955337A - 文件加密方法、文件解密方法及装置 - Google Patents
文件加密方法、文件解密方法及装置 Download PDFInfo
- Publication number
- CN115955337A CN115955337A CN202211581688.8A CN202211581688A CN115955337A CN 115955337 A CN115955337 A CN 115955337A CN 202211581688 A CN202211581688 A CN 202211581688A CN 115955337 A CN115955337 A CN 115955337A
- Authority
- CN
- China
- Prior art keywords
- file
- ciphertext
- plaintext
- key
- file body
- 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.)
- Pending
Links
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/50—Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate
Landscapes
- Storage Device Security (AREA)
Abstract
本公开的实施例公开了文件加密方法、文件解密方法及装置,通过文件传输的客户端确定加密的明文文件,然后利用文件体加密密钥对明文文件的文件体进行加密,得到密文文件体,然后利用主密钥对文件体加密密钥、明文文件的文件名进行加密,得到密文文件头和密文文件名,然后基于密文文件体、密文文件头和密文文件名组成明文文件对应的密文文件。在用户通过客户端传输文件时,可以由客户端通过以上加密方法对用户输入的明文文件进行加密,不需要用户操作加密,而且,加密方法应用于客户端,接收文件的服务端中不存在加密密钥,不会泄露用户的隐私数据,并且对文件头、文件名和文件体分别进行加密,提高了文件的安全性。
Description
技术领域
本公开涉及计算机技术领域,尤其涉及文件加密方法、文件解密方法及装置。
背景技术
随着社会的发展,网络质量得到了巨大的提升,随着网络质量的提升,云计算在日常生活中逐渐普及。
在云计算传输数据的过程中,面临着云技术传输的数据容易泄露的问题。相关技术中,存在着两种对云技术传输的数据进行加解密的方法。第一种是在云服务端对传输的数据进行加密,服务商掌握解密的密钥密钥。但是,这种情况会使得服务商掌握云服务端对应用户的隐私数据。另一种是由用户直接将传输的数据加密,将加密后的数据传输至服务商,这种情况会下,由用户完成加密操作又会使得用户的操作变得繁琐,降低了用户体验。
发明内容
有鉴于此,本公开实施例提供文件加密方法、文件解密方法及装置,能够在提高信息的安全性的同时,不影响用户的体验。
第一方面,本公开实施例提供一种文件加密方法,应用于文件传输的客户端,包括:
确定待加密的明文文件;
利用文件体加密密钥对明文文件的文件体进行加密,得到密文文件体;
利用主密钥对文件体加密密钥、明文文件的文件名进行加密,得到密文文件头和密文文件名;
基于密文文件体、密文文件头和密文文件名组成明文文件对应的密文文件。
在一些实施例中,确定待加密的明文文件包括:
响应于接收到将明文文件存放至本地指定盘符的存储指令,确定当前写入本地指定盘符的明文文件为待加密的明文文件;本地指定盘符是通过将云存储客户端中的同步文件夹映射到本地得到的,同步文件夹用于传输同步到云端的文件。
在一些实施例中,利用文件体加密密钥对写入本地指定盘符的明文文件的文件体进行加密,得到密文文件体,包括:
将明文文件的文件体分成多个文件体切片;
针对每一文件体切片,利用第一加密算法和文件体加密密钥、以及第一随机数对该文件体切片进行加密,得到该文件体切片对应的密文;不同文件体切片对应的第一随机数相同或者不同;
基于每一文件体切片对应的密文和第一随机数得到每一文件体切片对应的密文切片,将各密文切片按照文件体切片的顺序链接起来,以得到密文文件体。
在一些实施例中,利用主密钥对文件体加密密钥、明文文件的文件名进行加密,得到密文文件头和密文文件名,包括:
通过主密钥和第二随机数对文件体加密密钥进行加密,得到文件体加密密钥的密文,基于第二随机数和文件体加密密钥的密文得到密文文件头;
通过主密钥对明文文件的文件名进行加密,得到文件名对应的密文文件名。
在一些实施例中,主密钥包括主加密密钥以及主验证密钥;
密文切片还包括对应的第一验证码,第一验证码是通过第一验证码算法和主验证密钥,对密文切片、第一随机数、第二随机数和文件体切片编号进行计算得到的;
密文文件头还包括对应的第二验证码,第二验证码是通过第二验证码算法和主验证密钥,对第二随机数、文件体加密密钥的密文进行计算得到的;
密文文件名还包括对应的第三验证码,第三验证码是通过第三验证码算法对明文文件的文件名的密文进行计算得到的。
在一些实施例中,主密钥是基于预设的KEK和安全随机数算法生成的,KEK是利用密钥派生算法对口令短语进行密钥派生得到的。
第二方面,本公开实施例提供一种文件解密方法,应用于文件传输的客户端,方法包括:
接收待解密的密文文件;密文文件由密文文件体、密文文件头和密文文件名组成;
利用已获得的主密钥对密文文件名、和密文文件头进行解密,得到密文文件对应的明文文件名和文件体加密密钥;
利用文件体加密密钥对密文文件体进行解密,得到密文文件对应的明文文件体;
基于明文文件名和明文文件体得到密文文件对应的明文文件。
在一些实施例中,利用已获得的主密钥对密文文件名、和密文文件头进行解密,得到密文文件对应的明文文件名和文件体加密密钥,包括:
利用主密钥对密文文件名进行解密得到明文文件名;
利用密文文件头中包含的第二随机数和主密钥对密文文件头中的文件体加密密钥对应的密文进行解密,得到文件体加密密钥的明文;
利用文件体加密密钥对密文文件体进行解密,得到密文文件对应的明文文件体,包括:
针对明文文件体中的每一密文切片,利用每一密文切片中的第一随机数、和文件体加密密钥的明文对该密文切片中文件体切片的密文进行解密,得到该密文切片对应的文件体切片的明文;
将多个文件体切片的明文按照顺序连接,得到明文文件体。
第三方面,本公开实施例提供一种文件加密装置,应用于文件传输的客户端,包括:
确定模块,用于确定待加密的明文文件;
第一加密模块,用于利用文件体加密密钥对明文文件的文件体进行加密,得到密文文件体;
第二加密模块,用于利用主密钥对文件体加密密钥、明文文件的文件名进行加密,得到密文文件头和密文文件名;
组合模块,用于基于密文文件体、密文文件头和密文文件名组成明文文件对应的密文文件。
在一些实施例中,确定模块包括:
确定单元,用于响应于接收到将明文文件存放至本地指定盘符的存储指令,确定当前写入本地指定盘符的明文文件为待加密的明文文件;本地指定盘符是通过将云存储客户端中的同步文件夹映射到本地得到的,同步文件夹用于传输同步到云端的文件。
在一些实施例中,第一加密模块,包括:
切分单元,用于将明文文件的文件体分成多个文件体切片;
第一加密单元,用于针对每一文件体切片,利用第一加密算法和文件体加密密钥、以及第一随机数对该文件体切片进行加密,得到该文件体切片对应的密文;不同文件体切片对应的第一随机数相同或者不同;
第一连接单元,用于基于每一文件体切片对应的密文和第一随机数得到每一文件体切片对应的密文切片,将各密文切片按照文件体切片的顺序链接起来,以得到密文文件体。
在一些实施例中,第二加密模块,包括:
第二加密单元,用于通过主密钥和第二随机数对文件体加密密钥进行加密,得到文件体加密密钥的密文,基于第二随机数和文件体加密密钥的密文得到密文文件头;
第三加密单元,用于通过主密钥对明文文件的文件名进行加密,得到文件名对应的密文文件名。
在一些实施例中,主密钥包括主加密密钥以及主验证密钥;
密文切片还包括对应的第一验证码,第一验证码是通过第一验证码算法和主验证密钥,对密文切片、第一随机数、第二随机数和文件体切片编号进行计算得到的;
密文文件头还包括对应的第二验证码,第二验证码是通过第二验证码算法和主验证密钥,对第二随机数、文件体加密密钥的密文进行计算得到的;
密文文件名还包括对应的第三验证码,第三验证码是通过第三验证码算法对明文文件的文件名的密文进行计算得到的。
在一些实施例中,主密钥是基于预设的KEK和安全随机数算法生成的,KEK是利用密钥派生算法对口令短语进行密钥派生得到的。
第四方面,本公开实施例提供一种文件解密装置,应用于文件传输的客户端,包括:
接收模块,用于接收待解密的密文文件;密文文件由密文文件体、密文文件头和密文文件名组成;
第一解密模块,用于利用已获得的主密钥对密文文件名、和密文文件头进行解密,得到密文文件对应的明文文件名和文件体加密密钥;
第二解密模块,用于利用文件体加密密钥对密文文件体进行解密,得到密文文件对应的明文文件体;
第三解密模块,用于基于明文文件名和明文文件体得到密文文件对应的明文文件。
在一些实施例中,第一解密模块,包括:
第一解密单元,用于利用主密钥对密文文件名进行解密得到明文文件名;
第二解密单元,用于利用密文文件头中包含的第二随机数和主密钥对密文文件头中的文件体加密密钥对应的密文进行解密,得到文件体加密密钥的明文;
第二解密模块,包括:
第三解密单元,用于针对明文文件体中的每一密文切片,利用每一密文切片中的第一随机数、和文件体加密密钥的明文对该密文切片中文件体切片的密文进行解密,得到该密文切片对应的文件体切片的明文;
第二连接单元,用于将多个文件体切片的明文按照顺序连接,得到明文文件体。
第五方面,本公开实施例提供一种电子设备,电子设备包括:壳体、处理器、存储器、电路板和电源电路,其中,电路板安置在壳体围成的空间内部,处理器和存储器设置在电路板上;电源电路,用于为上述电子设备的各个电路或器件供电;存储器用于存储可执行程序代码;处理器通过读取存储器中存储的可执行程序代码来运行与可执行程序代码对应的程序,用于执行前述任一实现方式的方法。
第六方面,本公开的实施例还提供一种应用程序,应用程序被执行以实现本公开任一实施方式的方法。
本公开实施例提供的一种文件加密方法和文件解密方法,其中加密方法应用于文件传输的客户端,可以通过确定加密的明文文件,然后利用文件体加密密钥多明文文件的文件体进行加密,得到密文文件体,然后利用主密钥对文件体加密密钥、明文文件的文件名进行加密,得到密文文件头和密文文件名,然后基于密文文件体、密文文件头和密文文件名组成明文文件对应的密文文件。因此,在用户通过客户端传输文件时,可以由客户端通过以上加密方法对用户输入的明文文件进行加密,不需要用户操作加密,而且,加密方法应用于客户端,接收文件的服务端中不存在加密密钥,不会使得服务商掌握用户的隐私数据,并且本公开实施例对文件头、文件名和文件体分别进行加密,进一步提高了文件的安全性。
附图说明
为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1为本公开实施例一的文件加密方法的流程示意图;
图2为本公开实施例二的文件体加密的流程示意图;
图3为本公开实施例三的文件头和文件名加密的流程示意图;
图4为本公开实施例四的文件解密方法的流程示意图;
图5为本公开实施例五的文件加密装置的流程示意图;
图6为本公开实施例六的文件解密装置的流程示意图;
图7为本公开电子设备一个实施例的结构示意图。
具体实施方式
下面结合附图对本公开实施例进行详细描述。应当明确,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本公开保护的范围。
应当理解,本公开的方法实施方式中记载的各个步骤可以按照不同的顺序执行,和/或并行执行。此外,方法实施方式可以包括附加的步骤和/或省略执行示出的步骤。本公开的范围在此方面不受限制。
需要注意,本公开中提及的“第一”、“第二”等概念仅用于对不同的装置、模块或单元进行区分,并非用于限定这些装置、模块或单元所执行的功能的顺序或者相互依存关系。
需要注意,本公开中提及的“一个”、“多个”的修饰是示意性而非限制性的,本领域技术人员应当理解,除非在上下文另有明确指出,否则应该理解为“一个或多个”。
为了解决上述技术问题,本公开实施例提供了一种文件加密方法、文件解密方法以及装置。
为了对本公开进行详细的说明,本公开实施例首先对文件加密方法以及文件解密方法应用的环境进行介绍。
在一些实施例中,本公开实施例中的文件加密方法以及文件解密方法可以应用于终端设备中。终端设备上配置有文件传输的客户端,通过该客户端可以将终端上的文件传输到其他设备上的服务端进行保存,比如,终端设备与云端(云端为服务端)进行交互,在终端设备将文件进行加密后再将加密后的文件传输至云端,以使云端对加密后的文件进行存储。
在终端设备需要对文件进行查看时,可以向云端发送加密文件对应的加密文件标识,以使云端将加密后的文件传输至终端设备,由终端设备录用文件解密方法对上述加密文件进行解密,得到解密后的明文文件,并将明文文件向用户展示。
在一些实施例中,终端设备可以支持多种文件系统,且多种文件系统的接口为同一接口,用户可以根据统一的接口对多种文件系统进行操作。示例性的,上述统一的接口可以为虚拟文件系统。需要说明的是,虚拟文件系统作为内核中的一个抽象层,用于给用户空间的程序提供统一的文件系统接口,同时也为不同实际文件系统的共存提供了支持,它对于系统核心和用户进程来说是透明的。
在一些实施例中,终端设备还可以配置用户空间文件系统,以使得用户能够在无需编辑和编译内核代码的情况下,创建自己的文件系统。
在一些实施例中,用户文件系统可以接收虚拟文件系统的文件调用请求。在用户文件系统接收到虚拟文件系统的文件调用请求之后,可以将上述调动请求上传至用户态的模块Li bfuse,在用户态处理,然后再返回到内核态,把结果返回给虚拟文件系统。而普通文件系统则是通过底层存储介质的驱动接口,在实际的物理介质上执行读写操作。
在对文件加密方法的应用环境说明完成之后,下面对本公开实施例公开的文件加密方法进行介绍。
图1为本公开实施例一提供的一种文件加密方法流程图,如图1所示,该方法可以包括:
S110,确定待加密的明文文件。
在一些实施例中,确定待加密的明文文件包括:响应于接收到将明文文件存放至本地指定盘符的存储指令,确定当前写入本地指定盘符的明文文件为待加密的明文文件;本地指定盘符是通过将云存储客户端中的同步文件夹映射到本地得到的,同步文件夹用于传输同步到云端的文件。
在一些实施例中,可以预先在云端的云存储客户端设置同步文件夹,用于存储来自配置在终端设备的本地指定盘符的文件。示例性的,可以基于用户空间文件系统将云存储客户端新建的文件夹映射为一个本地驱动盘符。
在一些实施例中,可以基于加密方法在设置在终端上的客户端向云端传输文件时,自动对上传的文件进行加密,在从云端获取文件到本地驱动盘符时,自动对获取的文件进行解密。
S120,利用文件体加密密钥对明文文件的文件体进行加密,得到密文文件体。
在一些实施例中,文件体加密密钥包括用于对文件体进行加密的密钥。为了便于理解,下面将文件体加密密钥记为Content Key。
S130,利用主密钥对文件体加密密钥、明文文件的文件名进行加密,得到密文文件头和密文文件名。
在一些实施例中,主密钥可以对文件体加密密钥进行加密,以对文件体加密密钥进行保护。
在一些实施例中,主密钥包括主加密密钥以及主验证密钥。其中,为了便于理解,下面将主密钥记为Master Key,主加密密钥记为Master Encrypt i on Key,主验证密钥记为Master Mac Key。
在一些实施例中,主密钥是基于预设的KEK和安全随机数算法生成的,KEK是利用密钥派生算法对口令短语进行密钥派生得到的。
在一些实施例中,主密钥具体可以通过以下步骤确定:首先可以基于安全随机数算法生成随机数,示例性的,随机数可以是10位以上的随机数,随机数可以由大小写字母、数字和特殊字符组成。然后可以基于KEK对生成的随机数进行加密得到Master Encrypt ion Key和Master Mac Key。
在一些实施例中,KEK可以是通过对口令短语(Passphrase)作基于PBKDF的密钥派生算法生成。示例性的,Passphrase长度需10位以上,由大小写字母、数字和特殊字符构成。
在一些实施例中,可以基于主密钥对文件名进行加密,采用SM4算法和S IV认证加密模式,其中Master Encrypt i on Key保护文件名的机密性,Master MAC Key保护文件名的完整性。对用加密算法SM4 S IV算法加密后的文件名再做Base64编码,得到可打印字符的文件名密文名。
S140,基于密文文件体、密文文件头和密文文件名组成明文文件对应的密文文件。
本公开实施例提供的文件加密方法,其中加密方法应用于文件传输的客户端,可以通过确定加密的明文文件,然后利用文件体加密密钥多明文文件的文件体进行加密,得到密文文件体,然后利用主密钥对文件体加密密钥、明文文件的文件名进行加密,得到密文文件头和密文文件名,然后基于密文文件体、密文文件头和密文文件名组成明文文件对应的密文文件。因此,在用户通过客户端传输文件时,可以由客户端通过以上加密方法对用户输入的明文文件进行加密,不需要用户操作加密,而且,加密方法应用于客户端,接收文件的服务端中不存在加密密钥,不会使得服务商掌握用户的隐私数据,并且本公开实施例对文件头、文件名和文件体分别进行加密,进一步提高了文件的安全性。
下面对利用文件体加密密钥对写入本地指定盘符的明文文件的文件体进行加密,得到密文文件体的过程进行详述。图2为本公开实施例二提供的一种文件体加密的流程图,如图2所示,该流程可以包括以下步骤:
S210,将明文文件的文件体分成多个文件体切片。
在一些实施例中,可以基于预设的切分规则将明文文件的文件体切分为多个文件体切片。其中,预设的切分规则可以包括用户自定义设置的切分规则,示例性的,切分规则可以包括字节长度确定的切分规则。
S220,针对每一文件体切片,利用第一加密算法和文件体加密密钥、以及第一随机数对该文件体切片进行加密,得到该文件体切片对应的密文;不同文件体切片对应的第一随机数相同或者不同。
在一些实施例中,第一加密算法可以包括SM4算法或SM3算法,本公开是实施例并不对第一加密算法进行限定。
以第一加密算法为SM4算法为例,针对每一文件体切片,利用第一加密算法和文件体加密密钥、以及第一随机数对该文件体切片进行加密具体可以包括以下步骤:将文件体加密密钥Content Key作为SM4算法中的加密密钥,将第一随机数(记为Nonce)作为SM4算法中的计数器,通过SM4算法的CTR加密模式对该文件体切片进行计算,得出该文件体切片对应的密文。
S230,基于每一文件体切片对应的密文和第一随机数得到每一文件体切片对应的密文切片,将各密文切片按照文件体切片的顺序链接起来,以得到密文文件体。
在一些实施例中,可以将步骤S320得到的每一文件体切片对应的密文、和计算每一文件体切片对应的密文时使用的第一随机数Nonce,作为每一文件体切片对应的密文切片的整体,进而通过将各密文切片按照文件体切片的顺序链接起来,以得到密文文件体。
在另外一些实施例中,如果主密钥包括主加密密钥(Master Encrypt i on Key)以及主验证密钥(Master Mac Key),则可以进一步计算出每一文件体切片对应的第一验证码MAC。在本实施例中,可以将每一文件体切片对应的密文、和计算每一文件体切片对应的密文时使用的第一随机数Nonce,以及第一验证码MAC作为每一文件体切片对应的密文切片的整体。
其中,第一验证码是通过第一验证码算法和主验证密钥Master Mac Key,对密文切片、第一随机数Nonce和文件体切片编号进行计算得到的。其中,第一验证码算法可以为SM3消息验证码算法,文件体切片编号为将文件体切分时按照切分顺序自动生成的。第一验证码可以进一步保证文件体切片对应的密文的完整性。
至此,完成图2所示流程。
通过图2所示的实施例,实现了利用文件体加密密钥对写入本地指定盘符的明文文件的文件体进行加密,得到了组成密文文件的密文文件体。
下面对利用主密钥对文件体加密密钥、明文文件的文件名进行加密,得到密文文件头和密文文件名的过程进行详述。图3为本公开实施例三提供的一种文件头和文件名加密的流程图,如图3所示,该流程可以包括以下步骤:
S310,通过主密钥和第二随机数对文件体加密密钥进行加密,得到文件体加密密钥的密文,基于第二随机数和文件体加密密钥的密文得到密文文件头。
在一些实施例中,第二随机数可以与图2所示流程中的第一随机数相同也可以不同。为了便于理解,下面将第二随机数记为Header Nonce,Header Nonce可以通过安全的随机数发生器生成。
在一些实施例中,主密钥包括主加密密钥(Master Encrypt i on Key),通过主密钥和第二随机数对文件体加密密钥进行加密具体可以通过以下步骤:将主密钥中MasterEncrypt i on Key作为加密密钥,将Header Nonce做计数器通过加密算法(比如SM4算法的CTR加密模式)对文件体加密密钥Content Key进行加密计算,最终得到得到文件体加密密钥的密文。
在一些实施例中,可以将Header Nonce和文件体加密密钥的密文组成密文文件头。
优选地,在另外一些实施例中,如果主密钥包括主加密密钥(Master Encrypt ion Key)以及主验证密钥(Master Mac Key),则可以进一步计算出文件体加密密钥对应的第二验证码Header MAC。进而可以将Header Nonce和文件体加密密钥的密文、以及第二验证码Header MAC组成密文文件头。
其中,第二验证码是通过第二验证码算法和主验证密钥,对第二随机数、文件体加密密钥的密文进行计算得到的。示例性地,第二验证码Header MAC具体可以通过如下步骤生成:通过用SM3做Hash算法,用Master Mac Key做验证码密钥,对Header Nonce、ContentKey的密文进行Hash计算得到第二验证码Header MAC。
基于上述实施例,进一步的,为了增强对文件体切片对应的密文的完整性保护,第一验证码还可以通过第一验证码算法和主验证密钥Master Mac Key,对密文切片、第一随机数Nonce、第二验证码Header MAC和文件体切片编号进行计算得到。
S320,通过主密钥对明文文件的文件名进行加密,得到文件名对应的密文文件名。
在一些实施例中,如果主密钥包括主加密密钥(Master Encrypt i on Key)以及主验证密钥(Master Mac Key)密文文件名还包括对应的第三验证码,第三验证码是通过第三验证码算法对明文文件的文件名的密文进行计算得到的。
在一些实施例中,第三验证码可以与第一验证码、第二验证码相同,也可以不同。
示例性地,在一些实施例中,基于主密钥对文件名进行加密具体包括如下步骤:采用SM4算法,将Master Encrypt i on Key作为加密密密钥,对文件名进行加密,得到文件名的密文,以保护文件名的机密性;然后采用第三验证码算法(比如S IV认证加密模式),利用Master MAC Key作为验证码密钥,对文件名进行计算,得到文件名对应的第三验证码,以保护文件名的完整性。
优选地,在一些实施例中,在通过主密钥对明文文件的文件名进行加密,之后,还可以对加密得到的结果(包括文件名的密文和/或第三验证码)再做Base64编码,以得到可打印字符的密文文件名。
至此,完成图3所示流程。
通过图3所示的实施例,实现了利用主密钥对文件体加密密钥、明文文件的文件名进行加密,得到了组成密文文件的密文文件头和密文文件名。
基于相同的发明构思,本公开实施例还提供了一种文件解密方法,如下面的实施例,由于该方法实施例与上述实施例解决的技术问题相同,解决技术问题的手段相对应,因此重复之处不再赘述。
在一些实施例中,客户端需要在云端或服务端下载文件。为了避免下载在下载过程中文件发生泄密的问题,客户端需要在云端或服务端下载加密的文件,然后在下载完成之后,在本地对加密文件进行解密。图4为本公开实施例四提供的一种文件解密方法流程图,如图4所示,该方法可以包括:
S410,接收待解密的密文文件;密文文件由密文文件体、密文文件头和密文文件名组成;
在一些实施例中,可以在云端或服务端获取待解密的文件。
S420,利用已获得的主密钥对密文文件名、和密文文件头进行解密,得到密文文件对应的明文文件名和文件体加密密钥;
S430,利用文件体加密密钥对密文文件体进行解密,得到密文文件对应的明文文件体;
S440,基于明文文件名和明文文件体得到密文文件对应的明文文件。
在一些实施例中,在获取到主密钥以及多个随机数之后,可以基于上述实施例中加密过程获取解密过程,并根据得到的解密过程进行解密,得到明文。此过程本公开实施例中不再赘述。
在一些实施例中,利用已获得的主密钥对密文文件名、和密文文件头进行解密,得到密文文件对应的明文文件名和文件体加密密钥,包括:
利用主密钥对密文文件名进行解密得到明文文件名。在一些实施例中,主密钥包括:主加密密钥(Master Encrypt i on Key)以及主验证密钥(Master Mac Key),如果明文文件名中还包括第三验证码,则利用主密钥中的主验证密钥,利用第三验证码对得到的明文文件名进行完整性验证。
利用密文文件头中包含的第二随机数和主密钥对密文文件头中的文件体加密密钥对应的密文进行解密,得到文件体加密密钥的明文。
在一些实施例中,密文文件头由第二随机数Head Nonce和文件体加密密钥对应的密文组成,可以从密文文件头中查找出Head Nonce,然后利用Head Nonce和主密钥对密文文件头中的文件体加密密钥对应的密文进行解密,得到文件体加密密钥的明文。
在另外一些实施例中,密文文件头由第二随机数Head Nonce和文件体加密密钥对应的密文、以及第二验证码Header MAC组成,则在得到文件体加密密钥的明文之后,还可以利用主密钥中的主验证密钥和第二验证码Header MAC,对文件体加密密钥的明文进行完整性验证。
在一些实施例中,利用文件体加密密钥对密文文件体进行解密,得到密文文件对应的明文文件体,包括:
针对明文文件体中的每一密文切片,利用每一密文切片中的第一随机数、和文件体加密密钥的明文对该密文切片中文件体切片的密文进行解密,得到该密文切片对应的文件体切片的明文;
将多个文件体切片的明文按照顺序连接,得到明文文件体。
在一些实施例中,每一密文切片由第一随机数Nonce和文件体切片对应的密文组成,所以在对密文切片进行解密时,可以从密文切片中查找到Nonce,然后利用上面得到的文件体加密密钥的明文、Nonce和之前加密时使用的加密算法对应的解密算法,对文件体切片对应的密文进行解密,得到文件体切片对应的明文。
在另外一些实施例中,每一密文切片由第一随机数Nonce和文件体切片对应的密文、以及第一验证码MAC组成,则在得到文件体切片对应的明文之后,还可以利用主密钥中的主验证密钥和第一验证码MAC,对文件体切片对应的明文进行完整性验证。
以上实施例中,具体的解密算法和验证算法可参照上述解密方法的实施例,这里不再赘述。
需要说明的是,本实施例中的主密钥是基于预设的KEK和安全随机数算法生成的,KEK是利用密钥派生算法对口令短语进行密钥派生得到的。本地客户端中保存了生成主密钥的随机数和KEK,进而可以在解密时,基于保存的随机数和KEK生成主密钥。
通过图4所示的实施例,在用户通过客户端接收外部传输过来的密文文件时,可以由客户端通过以上解密方法对接收到的密文文件进行解密,不需要用户操作,而且,解密方法应用于客户端,发送密文文件的服务端中不存在解密密钥,不会使得服务商掌握用户的隐私数据。
在一些实施例中,通过上述实施例可以获取加密文件中加密的过程,基于此,可以基于文件的加密过程对以上述加密方法加密后的文件进行解密,解密方法不再赘述。
基于相同的发明构思,本公开实施例还提供了一种文件加密装置,如下面的实施例,由于该装置实施例与上述实施例解决的技术问题相同,解决技术问题的手段相同,因此重复之处不再赘述。
图5为本公开实施例五提供的一种文件加密装置,如图5所示,该装置可以包括:
确定模块510,用于确定待加密的明文文件;
第一加密模块520,用于利用文件体加密密钥对明文文件的文件体进行加密,得到密文文件体;
第二加密模块530,用于利用主密钥对文件体加密密钥、明文文件的文件名进行加密,得到密文文件头和密文文件名;
组合模块540,用于基于密文文件体、密文文件头和密文文件名组成明文文件对应的密文文件。
本公开实施例提供的一种文件加密装置,可以通过确定加密的明文文件,然后利用文件体加密密钥多明文文件的文件体进行加密,得到密文文件体,然后利用主密钥对文件体加密密钥、明文文件的文件名进行加密,得到密文文件头和密文文件名,然后基于密文文件体、密文文件头和密文文件名组成明文文件对应的密文文件。因此,在用户通过客户端传输文件时,可以由客户端通过以上加密方法对用户输入的明文文件进行加密,不需要用户操作加密,而且,加密方法应用于客户端,接收文件的服务端中不存在加密密钥,不会使得服务商掌握用户的隐私数据,并且本公开实施例对文件头、文件名和文件体分别进行加密,进一步提高了文件的安全性。
在一些实施例中,确定模块包括:
确定单元,用于响应于接收到将明文文件存放至本地指定盘符的存储指令,确定当前写入本地指定盘符的明文文件为待加密的明文文件;本地指定盘符是通过将云存储客户端中的同步文件夹映射到本地得到的,同步文件夹用于传输同步到云端的文件。
在一些实施例中,第一加密模块,包括:
切分单元,用于将明文文件的文件体分成多个文件体切片;
第一加密单元,用于针对每一文件体切片,利用第一加密算法和文件体加密密钥、以及第一随机数对该文件体切片进行加密,得到该文件体切片对应的密文;不同文件体切片对应的第一随机数相同或者不同;
第一连接单元,用于基于每一文件体切片对应的密文和第一随机数得到每一文件体切片对应的密文切片,将各密文切片按照文件体切片的顺序链接起来,以得到密文文件体。
在一些实施例中,第二加密模块,包括:
第二加密单元,用于通过主密钥和第二随机数对文件体加密密钥进行加密,得到文件体加密密钥的密文,基于第二随机数和文件体加密密钥的密文得到密文文件头;
第三加密单元,用于通过主密钥对明文文件的文件名进行加密,得到文件名对应的密文文件名。
在一些实施例中,主密钥包括主加密密钥以及主验证密钥;
密文切片还包括对应的第一验证码,第一验证码是通过第一验证码算法和主验证密钥,对密文切片、第一随机数、第二随机数和文件体切片编号进行计算得到的;
密文文件头还包括对应的第二验证码,第二验证码是通过第二验证码算法和主验证密钥,对第二随机数、文件体加密密钥的密文进行计算得到的;
密文文件名还包括对应的第三验证码,第三验证码是通过第三验证码算法对明文文件的文件名的密文进行计算得到的。
在一些实施例中,主密钥是基于预设的KEK和安全随机数算法生成的,KEK是利用密钥派生算法对口令短语进行密钥派生得到的。
基于相同的发明构思,本公开实施例还提供了一种文件解密装置,如下面的实施例,由于该装置实施例与上述实施例解决的技术问题相同,解决技术问题的手段相同,因此重复之处不再赘述。
图6为本公开实施例六提供的一种文件解密装置,如图6所示,该装置可以包括:
接收模块610,用于接收待解密的密文文件;密文文件由密文文件体、密文文件头和密文文件名组成;
第一解密模块620,用于利用已获得的主密钥对密文文件名、和密文文件头进行解密,得到密文文件对应的明文文件名和文件体加密密钥;
第二解密模块630,用于利用文件体加密密钥对密文文件体进行解密,得到密文文件对应的明文文件体。
第三解密模块640,用于基于明文文件名和明文文件体得到密文文件对应的明文文件。
在一些实施例中,第一解密模块,包括:
第一解密单元,用于利用主密钥对密文文件名进行解密得到明文文件名;
第二解密单元,用于利用密文文件头中包含的第二随机数和主密钥对密文文件头中的文件体加密密钥对应的密文进行解密,得到文件体加密密钥的明文;
第二解密模块,包括:
第三解密单元,用于针对明文文件体中的每一密文切片,利用每一密文切片中的第一随机数、和文件体加密密钥的明文对该密文切片中文件体切片的密文进行解密,得到该密文切片对应的文件体切片的明文;
第二连接单元,用于将多个文件体切片的明文按照顺序连接,得到明文文件体。
图7为本公开电子设备一个实施例的结构示意图,可以实现本公开图1-4所示实施例的流程,如图7所示,上述电子设备可以包括:壳体71、处理器72、存储器73、电路板74和电源电路75,其中,电路板74安置在壳体71围成的空间内部,处理器72和存储器73设置在电路板74上;电源电路75,用于为上述电子设备的各个电路或器件供电;存储器73用于存储可执行程序代码;处理器72通过读取存储器73中存储的可执行程序代码来运行与可执行程序代码对应的程序,用于执行前述任一实施例的。
处理器72对上述步骤的具体执行过程以及处理器72通过运行可执行程序代码来进一步执行的步骤,可以参见本公开图1-4所示实施例的描述,在此不再赘述。
该电子设备以多种形式存在,包括但不限于:
(1)移动通信设备:这类设备的特点是具备移动通信功能,并且以提供话音、数据通信为主要目标。这类终端包括:智能手机(例如iPhone)、多媒体手机、功能性手机,以及低端手机等。
(2)超移动个人计算机设备:这类设备属于个人计算机的范畴,有计算和处理功能,一般也具备移动上网特性。这类终端包括:PDA、MI D和UMPC设备等,例如iPad。
(3)便携式娱乐设备:这类设备可以显示和播放多媒体内容。该类设备包括:音频、视频播放器(例如i Pod),掌上游戏机,电子书,以及智能玩具和便携式车载导航设备。
(7)服务器:提供计算服务的设备,服务器的构成包括处理器、硬盘、内存、系统总线等,服务器和通用的计算机架构类似,但是由于需要提供高可靠的服务,因此在处理能力、稳定性、可靠性、安全性、可扩展性、可管理性等方面要求较高。
(5)其他具有数据交互功能的电子设备。
第五方面,本公开的实施例还提供一种应用程序,应用程序被执行以实现本公开任一实施例提供的方法。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。
尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
为了描述的方便,描述以上装置是以功能分为各种单元/模块分别描述。当然,在实施本公开时可以把各单元/模块的功能在同一个或多个软件和/或硬件中实现。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,的存储介质可为磁碟、光盘、只读存储记忆体(Read-On l y Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。
以上,仅为本公开的具体实施方式,但本公开的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应以权利要求的保护范围为准。
Claims (10)
1.一种文件加密方法,其特征在于,应用于文件传输的客户端,所述方法包括:
确定待加密的明文文件;
利用文件体加密密钥对所述明文文件的文件体进行加密,得到密文文件体;
利用主密钥对所述文件体加密密钥、所述明文文件的文件名进行加密,得到密文文件头和密文文件名;
基于所述密文文件体、密文文件头和密文文件名组成所述明文文件对应的密文文件。
2.根据权利要求1所述的文件加密方法,其特征在于,所述确定待加密的明文文件包括:
响应于接收到将明文文件存放至本地指定盘符的存储指令,确定当前写入本地指定盘符的明文文件为待加密的明文文件;所述本地指定盘符是通过将云存储客户端中的同步文件夹映射到本地得到的,所述同步文件夹用于传输同步到云端的文件。
3.根据权利要求1所述的文件加密方法,其特征在于,所述利用文件体加密密钥对写入本地指定盘符的明文文件的文件体进行加密,得到密文文件体,包括:
将所述明文文件的文件体分成多个文件体切片;
针对每一文件体切片,利用第一加密算法和所述文件体加密密钥、以及第一随机数对该文件体切片进行加密,得到该文件体切片对应的密文;不同文件体切片对应的第一随机数相同或者不同;
基于每一文件体切片对应的密文和第一随机数得到每一文件体切片对应的密文切片,将各密文切片按照文件体切片的顺序链接起来,以得到所述密文文件体。
4.根据权利要求1所述的文件加密方法,所述利用所述主密钥对所述文件体加密密钥、所述明文文件的文件名进行加密,得到密文文件头和密文文件名,包括:
通过所述主密钥和第二随机数对所述文件体加密密钥进行加密,得到文件体加密密钥的密文,基于所述第二随机数和文件体加密密钥的密文得到所述密文文件头;
通过所述主密钥对所述明文文件的文件名进行加密,得到所述文件名对应的密文文件名。
5.根据权利要求1-4任一项所述的文件加密方法,其特征在于,所述主密钥包括主加密密钥以及主验证密钥;
所述密文切片还包括对应的第一验证码,所述第一验证码是通过第一验证码算法和主验证密钥,对密文切片、第一随机数、第二随机数和文件体切片编号进行计算得到的;
所述密文文件头还包括对应的第二验证码,所述第二验证码是通过第二验证码算法和主验证密钥,对第二随机数、文件体加密密钥的密文进行计算得到的;
所述密文文件名还包括对应的第三验证码,所述第三验证码是通过第三验证码算法对所述明文文件的文件名的密文进行计算得到的。
6.根据权利要求5所述的文件加密方法,其特征在于,所述主密钥是基于预设的KEK和安全随机数算法生成的,所述KEK是利用密钥派生算法对口令短语进行密钥派生得到的。
7.一种文件解密方法,其特征在于,应用于文件传输的客户端,所述方法包括:
接收待解密的密文文件;所述密文文件由密文文件体、密文文件头和密文文件名组成;
利用已获得的主密钥对所述密文文件名、和密文文件头进行解密,得到所述密文文件对应的明文文件名和文件体加密密钥;
利用所述文件体加密密钥对所述密文文件体进行解密,得到所述密文文件对应的明文文件体;
基于所述明文文件名和所述明文文件体得到所述密文文件对应的明文文件。
8.根据权利要求7所述的文件解密方法,其特征在于,所述利用已获得的主密钥对所述密文文件名、和密文文件头进行解密,得到所述密文文件对应的明文文件名和文件体加密密钥,包括:
利用所述主密钥对所述密文文件名进行解密得到明文文件名;
利用密文文件头中包含的第二随机数和所述主密钥对所述密文文件头中的文件体加密密钥对应的密文进行解密,得到文件体加密密钥的明文;
所述利用所述文件体加密密钥对所述密文文件体进行解密,得到所述密文文件对应的明文文件体,包括:
针对明文文件体中的每一密文切片,利用每一密文切片中的第一随机数、和所述文件体加密密钥的明文对该密文切片中文件体切片的密文进行解密,得到该密文切片对应的文件体切片的明文;
将多个文件体切片的明文按照顺序连接,得到明文文件体。
9.一种文件加密装置,其特征在于,应用于文件传输的客户端,所述装置包括:
确定模块,用于确定待加密的明文文件;
第一加密模块,用于利用文件体加密密钥对所述明文文件的文件体进行加密,得到密文文件体;
第二加密模块,用于利用主密钥对所述文件体加密密钥、所述明文文件的文件名进行加密,得到密文文件头和密文文件名;
组合模块,用于基于所述密文文件体、密文文件头和密文文件名组成所述明文文件对应的密文文件。
10.一种文件解密装置,其特征在于,应用于文件传输的客户端,所述装置包括:
接收模块,用于接收待解密的密文文件;所述密文文件由密文文件体、密文文件头和密文文件名组成;
第一解密模块,用于利用已获得的主密钥对所述密文文件名、和密文文件头进行解密,得到所述密文文件对应的明文文件名和文件体加密密钥;
第二解密模块,用于利用所述文件体加密密钥对所述密文文件体进行解密,得到所述密文文件对应的明文文件体;
第三解密模块,用于基于所述明文文件名和所述明文文件体得到所述密文文件对应的明文文件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211581688.8A CN115955337A (zh) | 2022-12-09 | 2022-12-09 | 文件加密方法、文件解密方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211581688.8A CN115955337A (zh) | 2022-12-09 | 2022-12-09 | 文件加密方法、文件解密方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115955337A true CN115955337A (zh) | 2023-04-11 |
Family
ID=87281686
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211581688.8A Pending CN115955337A (zh) | 2022-12-09 | 2022-12-09 | 文件加密方法、文件解密方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115955337A (zh) |
-
2022
- 2022-12-09 CN CN202211581688.8A patent/CN115955337A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109150499B (zh) | 动态加密数据的方法、装置、计算机设备和存储介质 | |
CN113364760A (zh) | 一种数据加密处理方法、装置、计算机设备及存储介质 | |
CN110324143A (zh) | 数据传输方法、电子设备及存储介质 | |
CN111741011B (zh) | 验证方法、装置及存储介质 | |
CN107948736A (zh) | 一种音视频证据保全方法及系统 | |
CN109672521B (zh) | 基于国密加密引擎实现的安全存储系统和方法 | |
CN103295046A (zh) | 生成和使用安全二维码的方法和设备 | |
CN110661748B (zh) | 一种日志的加密方法、解密方法及装置 | |
CN108199847B (zh) | 数字安全处理方法、计算机设备及存储介质 | |
CN106067874B (zh) | 一种将数据记录至服务器端的方法、终端和服务器 | |
CN112788012B (zh) | 日志文件加密方法、装置、存储介质及电子设备 | |
CN112135086B (zh) | 一种会议录制加密方法、系统和可读存储介质 | |
CN106817346B (zh) | 一种数据传输方法、装置及电子设备 | |
CN111193725B (zh) | 一种基于配置的联合登录方法、装置和计算机设备 | |
CN101964789A (zh) | 安全访问受保护资源的方法及系统 | |
CN112035827B (zh) | 密码数据处理方法、装置、设备以及可读存储介质 | |
CN106096424A (zh) | 一种对本地数据进行加密方法和终端 | |
CN117240625B (zh) | 一种涉及防篡改的数据处理方法、装置及电子设备 | |
CN114553590A (zh) | 数据传输方法及相关设备 | |
CN114785495A (zh) | 密钥派生方法、数据加密方法、服务器、电子设备及存储介质 | |
CN113127844A (zh) | 一种变量访问方法、装置、系统、设备和介质 | |
CN114079921A (zh) | 会话密钥的生成方法、锚点功能网元以及系统 | |
CN109492359B (zh) | 一种用于身份认证的安全网络中间件及其实现方法和装置 | |
CN111949996A (zh) | 安全私钥的生成方法、加密方法、系统、设备及介质 | |
CN115955337A (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 |