基于Python解释器的加密文件安全控制方法和装置转让专利

申请号 : CN202110606468.5

文献号 : CN113360859B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 李肯立肖国庆王岩松杨圣洪唐卓廖清

申请人 : 湖南大学

摘要 :

本申请涉及一种基于Python解释器的加密文件安全控制方法和装置。所述方法包括:获取加密文件,对加密文件进行一级解密和二级解密,生成对应的第一临时文件。当确定第一临时文件的导入文件携带加密标志时,对导入文件进行一级解密和二级解密,生成对应的第二临时文件。运行第二临时文件,将与加密文件对应的关联文件导入第一临时文件,得到更新后的第一临时文件。运行更新后的第一临时文件,得到加密文件的执行结果、字节码文件,删除第一临时文件、第二临时文件和字节码文件。采用本方法将第一临时文件、第二临时文件和字节码文件均进行删除,可避免恶意用户获取相应的临时文件或字节码文件反向编译得到解密文件,提升文件或数据传输过程中的安全性。

权利要求 :

1.一种基于Python解释器的加密文件安全控制方法,其特征在于,所述方法包括:获取加密文件,并对所述加密文件进行一级解密和二级解密,生成对应的第一临时文件;

读取所述第一临时文件携带的导入文件;

当确定所述导入文件携带加密标志时,对所述导入文件进行所述一级解密和所述二级解密,生成对应的第二临时文件;

运行所述第二临时文件,将与所述加密文件对应的关联文件导入所述第一临时文件,得到更新后的第一临时文件;

运行更新后的所述第一临时文件,得到与所述加密文件对应的执行结果,和解密后的字节码文件;

删除所述第一临时文件、第二临时文件以及所述解密后的字节码文件;

所述获取加密文件,并对所述加密文件进行一级解密和二级解密,生成对应的第一临时文件,包括:获取加密文件,并读取所述加密文件对应的文件名、第一子密钥和加密后的第二子密钥;根据所述加密文件的文件名生成第三密钥;根据所述第三密钥,对所述加密后的第二子密钥进行一级解密和二级解密,生成解密后的第二子密钥;根据所述第一子密钥和解密后的所述第二子密钥进行奇偶交叉结合,生成解密后的第一密钥;根据解密后的所述第一密钥,对所述加密文件的加密密文进行解密,生成对应的第一临时文件;

所述当确定所述导入文件携带加密标志时,对所述导入文件进行所述一级解密和所述二级解密,生成对应的第二临时文件,包括:当确定所述导入文件携带加密标志时,获取所述导入文件对应的文件名、第四子密钥和加密后的第五子密钥;根据所述导入文件的文件名生成第六密钥; 根据所述第六密钥,对所述加密后的第五子密钥进行一级解密和二级解密,生成解密后的第五子密钥;根据所述第四子密钥和解密后的所述第五子密钥进行奇偶交叉结合,生成解密后的第四密钥;根据解密后的所述第四密钥,对所述导入文件的加密密文进行解密,生成对应的第二临时文件。

2.根据权利要求1所述的方法,其特征在于,所述方法还包括:

基于所述字节码文件对应的字节码对象设置访问权限;所述访问权限包括禁止访问所述字节码对象的原始字符串。

3.根据权利要求1或2所述的方法,其特征在于,在所述获取加密文件,并对所述加密文件进行一级解密和二级解密,生成对应的第一临时文件之前,还包括:获取待加密文件,并读取所述待加密文件的文件名和文件内容;

将根据预设个数的随机字符组成的字符串,确定为第一密钥;

将所述第一密钥进行奇偶拆分,得到拆分后的第一子密钥和第二子密钥;

根据所述待加密文件的文件名生成对应的第三密钥;

根据所述第三密钥,对所述第二子密钥进行一级加密和二级加密,得到加密后的第二子密钥;

根据所述第一子密钥和加密后的第二子密钥进行奇偶交叉结合,生成加密后的第一密钥,并存储至所述待加密文件的文件内容中;

根据所述第一密钥对所述待加密文件的文件内容进行加密,生成对应的加密文件。

4.根据权利要求3所述的方法,其特征在于,在所述获取待加密文件,并读取所述待加密文件的文件名和文件内容之前,还包括:接收加密请求,并获取所述加密请求携带的输入信息;

当确定所述输入信息为文件名称时,将所述文件名称对应的文件确定为待加密文件;

当确定所述输入信息为目录名称时,获取所述目录名称下的所有文件,并将所述目录名称下所有文件确定为待加密文件。

5.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:在运行所述第一临时文件或第二临时文件时,扩大指向所述第一临时文件或所述第二临时文件的文件路径的指针内存。

6.一种基于Python解释器的加密文件安全控制装置,其特征在于,所述装置包括:第一临时文件生成模块,用于获取加密文件,并对所述加密文件进行一级解密和二级解密,生成对应的第一临时文件;

导入文件读取模块,用于读取所述第一临时文件携带的导入文件;

第二临时文件生成模块,用于当确定所述导入文件携带加密标志时,对所述导入文件进行所述一级解密和所述二级解密,生成对应的第二临时文件;

第一临时文件更新模块,用于运行所述第二临时文件,将与所述加密文件对应的关联文件导入所述第一临时文件,得到更新后的第一临时文件;

执行结果生成模块,用于运行更新后的所述第一临时文件,得到与所述加密文件对应的执行结果,和解密后的字节码文件;

删除模块,用于删除所述第一临时文件、第二临时文件以及所述解密后的字节码文件;

所述第一临时文件生成模块,还用于:获取加密文件,并读取所述加密文件对应的文件名、第一子密钥和加密后的第二子密钥;根据所述加密文件的文件名生成第三密钥;根据所述第三密钥,对所述加密后的第二子密钥进行一级解密和二级解密,生成解密后的第二子密钥;根据所述第一子密钥和解密后的所述第二子密钥进行奇偶交叉结合,生成解密后的第一密钥;根据解密后的所述第一密钥,对所述加密文件的加密密文进行解密,生成对应的第一临时文件;

所述第二临时文件生成模块,还用于:当确定所述导入文件携带加密标志时,获取所述导入文件对应的文件名、第四子密钥和加密后的第五子密钥;根据所述导入文件的文件名生成第六密钥; 根据所述第六密钥,对所述加密后的第五子密钥进行一级解密和二级解密,生成解密后的第五子密钥;根据所述第四子密钥和解密后的所述第五子密钥进行奇偶交叉结合,生成解密后的第四密钥;根据解密后的所述第四密钥,对所述导入文件的加密密文进行解密,生成对应的第二临时文件。

7.根据权利要求6所述的装置,其特征在于,所述装置还包括访问权限设置模块,用于:基于所述字节码文件对应的字节码对象设置访问权限;所述访问权限包括禁止访问所述字节码对象的原始字符串。

8.根据权利要求6或7所述的装置,其特征在于,所述装置还包括指针内存扩大模块,用于:在运行所述第一临时文件或第二临时文件时,扩大指向所述第一临时文件或所述第二临时文件的文件路径的指针内存。

9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至5中任一项所述的方法的步骤。

10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至5中任一项所述的方法的步骤。

说明书 :

基于Python解释器的加密文件安全控制方法和装置

技术领域

[0001] 本申请涉及信息安全技术领域,特别是涉及一种基于Python解释器的加密文件安全控制方法和装置。

背景技术

[0002] 随着信息安全技术的发展,以及互联网应用在人们生活、工作中的逐步推广应用,越来越多人们采用网络通信的方式传输数据,比如用户个人信息、商务数据或重要文件等数据。而由于所传输的数据或文件大多涉及用户隐私或商业机密,出现了使用加密技术对传输的文件或数据进行保护的方式。
[0003] 传统上多采用Python解释器对加密文件进行解密,以使得数据通信双方能够获知具体传输的数据。其中,Python语言属于解释性语言,对通过Python语言编写得到源码文件(.py),进行编译,可生成对应的字节码文件(Bytecode file,.pyc),但字节码文件具有特定的文件格式,很容易被逆向工具反编译,进而非数据通信双方的第三方也可获知具体的源码文件内容,出现大量传输文件或数据泄漏的问题,文件或数据的安全性仍较为低下。

发明内容

[0004] 基于此,有必要针对上述技术问题,提供一种能够提升文件安全性能的基于Python解释器的加密文件安全控制方法和装置。
[0005] 一种基于Python解释器的加密文件安全控制方法,所述方法包括:
[0006] 获取加密文件,并对所述加密文件进行一级解密和二级解密,生成对应的第一临时文件;
[0007] 读取所述第一临时文件携带的导入文件;
[0008] 当确定所述导入文件携带加密标志时,对所述导入文件进行所述一级解密和所述二级解密,生成对应的第二临时文件;
[0009] 运行所述第二临时文件,将与所述加密文件对应的关联文件导入所述第一临时文件,得到更新后的第一临时文件;
[0010] 运行更新后的所述第一临时文件,得到与所述加密文件对应的执行结果,和解密后的字节码文件;
[0011] 删除所述第一临时文件、第二临时文件以及所述解密后的字节码文件。
[0012] 在其中一个实施例中,所述方法还包括:
[0013] 基于所述字节码文件对应的字节码对象设置访问权限;所述访问权限包括禁止访问所述字节码对象的原始字符串。
[0014] 在其中一个实施例中,所述获取加密文件,并对所述加密文件进行一级解密和二级解密,生成对应的第一临时文件,包括:
[0015] 获取加密文件,并读取所述加密文件对应的文件名、第一子密钥和加密后的第二子密钥;
[0016] 根据所述加密文件的文件名生成第三密钥;
[0017] 根据所述第三密钥,对所述加密后的第二子密钥进行一级解密和二级解密,生成解密后的第二子密钥;
[0018] 根据所述第一子密钥和解密后的所述第二子密钥进行奇偶交叉结合,生成解密后的第一密钥;
[0019] 根据解密后的所述第一密钥,对所述加密文件的加密密文进行解密,生成对应的第一临时文件。
[0020] 在其中一个实施例中,所述当确定所述导入文件携带加密标志时,对所述导入文件进行所述一级解密和所述二级解密,生成对应的第二临时文件,包括:
[0021] 当确定所述导入文件携带加密标志时,获取所述导入文件对应的文件名、第四子密钥和加密后的第五子密钥;
[0022] 根据所述导入文件的文件名生成第六密钥;
[0023] 根据所述第六密钥,对所述加密后的第五子密钥进行一级解密和二级解密,生成解密后的第五子密钥;
[0024] 根据所述第四子密钥和解密后的所述第五子密钥进行奇偶交叉结合,生成解密后的第四密钥;
[0025] 根据解密后的所述第四密钥,对所述导入文件的加密密文进行解密,生成对应的第二临时文件。
[0026] 在其中一个实施例中,在所述获取加密文件,并对所述加密文件进行一级解密和二级解密,生成对应的第一临时文件之前,还包括:
[0027] 获取待加密文件,并读取所述待加密文件的文件名和文件内容;
[0028] 将根据预设个数的随机字符组成的字符串,确定为第一密钥;
[0029] 将所述第一密钥进行奇偶拆分,得到拆分后的第一子密钥和第二子密钥;
[0030] 根据所述待加密文件的文件名生成对应的第三密钥;
[0031] 根据所述第三密钥,对所述第二子密钥进行一级加密和二级加密,得到加密后的第二子密钥;
[0032] 根据所述第一子密钥和加密后的第二子密钥进行奇偶交叉结合,生成加密后的第一密钥,并存储至所述待加密文件的文件内容中;
[0033] 根据所述第一密钥对所述待加密文件的文件内容进行加密,生成对应的加密文件。
[0034] 在其中一个实施例中,在所述获取待加密文件,并读取所述待加密文件的文件名和文件内容之前,还包括:
[0035] 接收加密请求,并获取所述加密请求携带的输入信息;
[0036] 当确定所述输入信息为文件名称时,将所述文件名称对应的文件确定为待加密文件;
[0037] 当确定所述输入信息为目录名称时,获取所述目录名称下的所有文件,并将所述目录名称下所有文件确定为待加密文件。
[0038] 在其中一个实施例中,所述方法还包括:
[0039] 在运行所述第一临时文件或第二临时文件时,扩大指向所述第一临时文件或所述第二临时文件的文件路径的指针内存。
[0040] 一种基于Python解释器的加密文件安全控制装置,所述装置包括:
[0041] 第一临时文件生成模块,用于获取加密文件,并对所述加密文件进行一级解密和二级解密,生成对应的第一临时文件;
[0042] 导入文件读取模块,用于读取所述第一临时文件携带的导入文件;
[0043] 第二临时文件生成模块,用于当确定所述导入文件携带加密标志时,对所述导入文件进行所述一级解密和所述二级解密,生成对应的第二临时文件;
[0044] 第一临时文件更新模块,用于运行所述第二临时文件,将与所述加密文件对应的关联文件导入所述第一临时文件,得到更新后的第一临时文件;
[0045] 执行结果生成模块,用于运行更新后的所述第一临时文件,得到与所述加密文件对应的执行结果,和解密后的字节码文件;
[0046] 删除模块,用于删除所述第一临时文件、第二临时文件以及所述解密后的字节码文件。
[0047] 一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
[0048] 获取加密文件,并对所述加密文件进行一级解密和二级解密,生成对应的第一临时文件;
[0049] 读取所述第一临时文件携带的导入文件;
[0050] 当确定所述导入文件携带加密标志时,对所述导入文件进行所述一级解密和所述二级解密,生成对应的第二临时文件;
[0051] 运行所述第二临时文件,将与所述加密文件对应的关联文件导入所述第一临时文件,得到更新后的第一临时文件;
[0052] 运行更新后的所述第一临时文件,得到与所述加密文件对应的执行结果,和解密后的字节码文件;
[0053] 删除所述第一临时文件、第二临时文件以及所述解密后的字节码文件。
[0054] 一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
[0055] 获取加密文件,并对所述加密文件进行一级解密和二级解密,生成对应的第一临时文件;
[0056] 读取所述第一临时文件携带的导入文件;
[0057] 当确定所述导入文件携带加密标志时,对所述导入文件进行所述一级解密和所述二级解密,生成对应的第二临时文件;
[0058] 运行所述第二临时文件,将与所述加密文件对应的关联文件导入所述第一临时文件,得到更新后的第一临时文件;
[0059] 运行更新后的所述第一临时文件,得到与所述加密文件对应的执行结果,和解密后的字节码文件;
[0060] 删除所述第一临时文件、第二临时文件以及所述解密后的字节码文件。
[0061] 上述基于Python解释器的加密文件安全控制方法和装置中,通过获取加密文件,并对加密文件进行一级解密和二级解密,生成对应的第一临时文件,进而读取第一临时文件携带的导入文件。当确定导入文件携带加密标志时,对导入文件进行一级解密和二级解密,生成对应的第二临时文件,通过运行第二临时文件,将与加密文件对应的关联文件导入第一临时文件,得到更新后的第一临时文件。通过运行更新后的第一临时文件,得到与加密文件对应的执行结果,和解密后的字节码文件,并删除第一临时文件、第二临时文件以及解密后的字节码文件。实现了对加密文件以及导入文件分别实行较为复杂的一级解密、二级解密,降低恶意复制解密过程的可能性,同时通过将第一临时文件、第二临时文件以及解密后的字节码文件均进行删除,可避免恶意用户获取相应的临时文件或字节码文件反向编译得到解密文件,减少出现数据泄漏的问题,提升文件或数据传输过程中的安全性。

附图说明

[0062] 图1为一个实施例中基于Python解释器的加密文件安全控制方法的应用环境图;
[0063] 图2为一个实施例中基于Python解释器的加密文件安全控制方法的流程示意图;
[0064] 图3为一个实施例中基于Python解释器的加密文件运行过程示意图;
[0065] 图4为另一个实施例中基于Python解释器的加密文件安全控制方法的流程示意图;
[0066] 图5为一个实施例中基于Python解释器的加密文件安全控制装置的结构框图;
[0067] 图6为一个实施例中计算机设备的内部结构图。

具体实施方式

[0068] 为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
[0069] 本申请提供的基于Python解释器的加密文件安全控制方法,可以应用于如图1所示的应用环境中。其中,终端102与服务器104通过网络进行通信。服务器104通过从终端102获取加密文件,对加密文件进行一级解密和二级解密,生成对应的第一临时文件,并读取第一临时文件携带的导入文件。当服务器104确定导入文件携带加密标志时,对导入文件进行一级解密和二级解密,生成对应的第二临时文件。服务器104通过运行第二临时文件,将与加密文件对应的关联文件导入第一临时文件,得到更新后的第一临时文件,进而运行更新后的第一临时文件,得到与加密文件对应的执行结果,和解密后的字节码文件,并将执行结果发送至终端102。通过删除第一临时文件、第二临时文件以及解密后的字节码文件,避免反编译的手段获取到解密文件。其中,终端102可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备,服务器104可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
[0070] 在一个实施例中,如图2所示,提供了一种基于Python解释器的加密文件安全控制方法,以该方法应用于图1中的服务器为例进行说明,包括以下步骤:
[0071] 步骤S202,获取加密文件,并对加密文件进行一级解密和二级解密,生成对应的第一临时文件。
[0072] 具体地,通过获取加密文件,并读取加密文件对应的文件名、第一子密钥和加密后的第二子密钥,并根据加密文件的文件名生成第三密钥,进而根据第三密钥,对加密后的第二子密钥进行一级解密和二级解密,生成解密后的第二子密钥。进一步通过根据第一子密钥和解密后的第二子密钥进行奇偶交叉结合,生成解密后的第一密钥,并根据解密后的第一密钥,对加密文件的加密密文进行解密,生成对应的第一临时文件。
[0073] 其中,各加密文件的加密格式一样,即加密文件的文件第一行包括加密标志,文件名,时间,第一子密钥和加密后的第二子密钥,而加密文件的第二行是加密密文。其中,加密标志表示特定的字符串,用于识别当前文件是否为加密文件,在本实施例中,加密标志用“PACTERA‑RPA”进行表示。其中,第一临时文件可存储至数组random中。
[0074] 进一步地,通过获取加密文件的文件名,并通过重复文件名直至达到预设长度时,生成对应的第三密钥。其中,预设长度可以是64位。进而根据第三密钥对加密后的第二子密钥进行一级解密和二级解密,即根据第三密钥,采用base64对加密后的第二子密钥进行一级解密,进而根据第三密钥,采用AES的ECB模式对进行一级解密后的第二子密钥进行二级解密,得到完全解密后的第二子密钥。
[0075] 其中,一级解密采用的base64模式表示基于64个可打印字符来表示二进制数据的方法,Base64一般用于在HTTP协议下传输二进制数据,由于HTTP协议是文本协议,所以在HTTP协议下传输二进制数据时,需要将二进制数据转换为字符数据,则可通过Base64使用64个可打印字符来表示二进制数据,得到对应的字符数据。
[0076] 同样地,二级解密采用的AES的ECB模式表示高级加密标准中的电码本模式,其中,电码本模式需要将整个待加密文件分成若干段相同的小段,并分别对每一小段进行加密。进而通过电码本模式进行解密时,则需要对已加密的若干相同的小段分别进行解密,最后将解密后的小段进行拼接,得到解密后的文件。
[0077] 在一个实施例中,得到完全解密后的第二子密钥后,根据第一子密钥和解密后的第二子密钥进行奇偶交叉结合,生成解密后的第一密钥。进而根据解密后的第一密钥,对加密文件的加密密文进行解密,生成对应的第一临时文件。其中,第一密钥为预设个数的随机字符组成,在本实施例中,第一密钥可以是64位随机字符组成,而组成第一密钥的第一子密钥和第二子密钥均由32位随机字符组成。
[0078] 在一个实施例中,获取加密文件后,对加密文件内容进行读取,即读取加密文件对应的文件名、第一子密钥和加密后的第二子密钥时,通过rb模式读取加密文件内容。其中,rb模式表示读取加密文件内容时,读取的是二进制文件。而通过rb模式读取加密文件内容时,由于只读取相应的二进制文件,进而则无需考虑普通的读取文件内容的方式存在的编码问题。
[0079] 步骤S204,读取第一临时文件携带的导入文件。
[0080] 具体地,在得到第一临时文件并运行第一临时文件时,读取第一临时文件携带的导入文件,即Import文件,并判断导入文件是否携带加密标志。其中,如导入文件携带加密标志时,即表示导入文件也同样进行了加密,属于加密导入文件。
[0081] 其中,导入文件(Import文件)即表示包含有可导入当前Python源码中的不同函数或者语句,即通过运行导入文件,可将导入文件涉及的不同函数或者语句导入至当前Python源码中。
[0082] 在一个实施例中,对Python源码的解密操作是在main.c中的pymain_open_filename函数,如果要打开的文件是加密文件,就进行解密并将明文存放到第一临时文件中,然后再将第一临时文件路径传给源码中原本指向运行文件的指针pymain‑>filename。而对Import文件解密是在posixmodule.c中的win32_xstat_impl函数,如果Import文件是加密文件,就进行解密并存放到第二临时文件中,然后再将第二临时文件路径传给源码中原本指向Import文件的指针path。
[0083] 举例来说,扩大指针内存的方式可以是:修改Python源码中obmalloc.c文件中的_PyMem_RawWcsdup函数,将size设为512,即指针初始分配空间设置为512。
[0084] 步骤S206,当确定导入文件携带加密标志时,对导入文件进行一级解密和二级解密,生成对应的第二临时文件。
[0085] 具体地,当确定导入文件携带加密标志时,即确定导入文件也属于加密导入文件,通过获取导入文件对应的文件名、第四子密钥和加密后的第五子密钥,并根据导入文件的文件名生成第六密钥,进而根据第六密钥,对加密后的第五子密钥进行一级解密和二级解密,生成解密后的第五子密钥。进一步地,根据第四子密钥和解密后的第五子密钥进行奇偶交叉结合,生成解密后的第四密钥,并根据解密后的第四密钥,对导入文件的加密密文进行解密,生成对应的第二临时文件。
[0086] 其中,加密标志表示特定的字符串,用于识别导入文件是否为加密文件,在本实施例中,加密标志用“PACTERA‑RPA”进行表示。
[0087] 进一步地,通过获取导入文件的文件名,并通过重复文件名直至达到预设长度时,生成对应的第三密钥。其中,预设长度可以是64位。进而根据第三密钥对加密后的第二子密钥进行一级解密和二级解密,即根据第三密钥,采用base64对加密后的第二子密钥进行一级解密,进而根据第三密钥,采用AES的ECB模式对进行一级解密后的第二子密钥进行二级解密,得到完全解密后的第二子密钥。
[0088] 在一个实施例中,得到完全解密后的第二子密钥后,根据第一子密钥和解密后的第二子密钥进行奇偶交叉结合,生成解密后的第一密钥。进而根据解密后的第一密钥,对导入文件的加密密文进行解密,生成对应的第二临时文件。其中,第二临时文件可存储至数组randoms中。
[0089] 在一个实施例中,在运行第一临时文件或第二临时文件时,扩大指向第一临时文件或第二临时文件的文件路径的指针内存。
[0090] 其中,为防止内存溢出,需要扩大源码中指向运行文件路径的指针的内存,再将已扩大内存的指针指向第一临时文件或第二临时文件的路径,进而可运行第一临时文件或第二临时文件中的代码。
[0091] 步骤S208,运行第二临时文件,将与加密文件对应的关联文件导入第一临时文件,得到更新后的第一临时文件。
[0092] 具体地,通过运行第二临时文件,获取导入文件携带的与加密文件对应的关联文件,比如导入文件携带的需要调用的函数或者语句等,将所获取的关联文件导入第一临时文件中,得到更新后的第一临时文件。
[0093] 其中,通过对Python加密代码进行解密,存放在第一临时文件中,将第一临时文件路径传给源码中原本指向运行文件的指针,相当于Python解释器运行第一临时文件文件,解释器读取解密内容,读取其中的Import文件。当Import文件发现是加密文件,进行解密并存放在第二临时文件中,再将第二临时文件路径传给源码中原本指向Import文件的指针,相当于Python解释器读取的Import文件是第二临时文件,则第二临时文件的运行结果是Python源码解密后的执行结果。
[0094] 步骤S210,运行更新后的第一临时文件,得到与加密文件对应的执行结果,和解密后的字节码文件。
[0095] 具体地,通过运行更新后的第一临时文件,即运行已导入需要调用的函数或语句的第一临时文件,得到与加密文件对应的执行结果,并自动生成解密后的字节码文件。其中,解密后的字节码文件可存储至数组pycarray中。
[0096] 在一个实施例中,可预先对要运行的Python文件及其中的自定义Import模块(导入模块)进行加密,进而打开命令提示符(cmd),进入到Python解释器所在的目录,输入Python解释器名称 + 要运行的加密文件路径,即可得到运行结果。
[0097] 步骤S212,删除第一临时文件、第二临时文件以及解密后的字节码文件。
[0098] 具体地,Python解释器会在运行更新后的第一临时文件后自动生成对应的字节码文件,为防止恶意用户直接根据字节码文件来得到源码文件,需要在生成字节码文件之后,删除数组random中的第一临时文件、数组randoms中的第二临时文件以及数组pycarray中的字节码文件。
[0099] 其中,可以通过在当前Python源码中的ceval.c文件中的对应行加入删除代码,实现删除数组pycarray中的字节码文件。
[0100] 在一个实施例中,在删除第一临时文件、第二临时文件以及解密后的字节码文件之后,还包括:
[0101] 基于字节码文件对应的字节码对象设置访问权限;访问权限包括禁止访问字节码对象的原始字符串。
[0102] 具体地,基于字节码文件对应的字节码对象设置访问权限,即禁止访问字节码对象的原始字符串,可注释掉 Python源码中codeobject.c文件中关于访问权限设置的对应行。举例来说,可以注释掉源码的codeobject.c文件中允许用户访问对象的 co_code 属性的代码行,进而可防止恶意用户访问对象的 co_code 属性来获取字节码,并通过反编译的手段获取到解密文件的情况出现,提升文件的安全保密性能。
[0103] 在一个实施例中,如图3所示,提供了一种基于Python解释器的加密文件运行过程,参照图3可知,通过运行文件,在确定文件是加密文件时,可获取得到相应的第一密钥key1,即由一半需要解密的第二子密钥和另一半不需要解密的第一子密钥组成,通过获取用于对第二子密钥进行解密的第三密钥key2,根据第三密钥对第二子密钥进行解密,得到解密后的的第二子密钥对应的明文,通过将第一子密钥和解密后的第二子密钥进行合并可得到解密后的第一密钥key1。
[0104] 其中,通过第一密钥对加密文件进行解密,得到第一临时文件,存储至相应的临时存放地址。其中,在加密文件解密结束后,从相应的临时地址删除所存储的第一临时文件。
[0105] 进一步地,根据解密后的第一临时文件,判断第一临时文件的导入模块对应的导入文件是否为加密文件,在确定导入文件是加密文件时,可获取得到相应的第一密钥key1,即由一半需要解密的第二子密钥和另一半不需要解密的第一子密钥组成,通过获取用于对第二子密钥进行解密的第三密钥key2,根据第三密钥对第二子密钥进行解密,得到解密后的的第二子密钥对应的明文,通过将第一子密钥和解密后的第二子密钥进行合并可得到解密后的第一密钥key1。
[0106] 其中,通过第一密钥对导入文件进行解密,得到第二临时文件,存储至相应的临时存放地址。其中,在加密文件解密结束后,从相应的临时地址删除所存储的第二临时文件。
[0107] 同样地,在运行第一临时文件、第二临时文件,生成对应的字节码文件后,也需将字节码文件进行移除。
[0108] 在一个实施例中,需要在Python解释器源码中加入加密函数,包括:1)解密要运行的第一临时文件,在main.c中的pymain_open_filename函数中调用解密函数,在pythonrun.c文件中的PyRun_FileExFlags函数中删除生成的临时解密文件;2)解密要运行的第一临时文件中的自定义improt文件,在posixmodule.c中的win32_xstat_impl函数中调用解密函数,posixmodule.c文件中的win32_xstat_impl函数,在CloseHandle之后删除生成的第一临时文件、第二临时文件。
[0109] 上述基于Python解释器的加密文件安全控制方法中,通过获取加密文件,并对加密文件进行一级解密和二级解密,生成对应的第一临时文件,进而读取第一临时文件携带的导入文件。当确定导入文件携带加密标志时,对导入文件进行一级解密和二级解密,生成对应的第二临时文件,通过运行第二临时文件,将与加密文件对应的关联文件导入第一临时文件,得到更新后的第一临时文件。通过运行更新后的第一临时文件,得到与加密文件对应的执行结果,和解密后的字节码文件,并删除第一临时文件、第二临时文件以及解密后的字节码文件。实现了对加密文件以及导入文件分别实行较为复杂的一级解密、二级解密,降低恶意复制解密过程的可能性,同时通过将第一临时文件、第二临时文件以及解密后的字节码文件均进行删除,可避免恶意用户获取相应的临时文件或字节码文件反向编译得到解密文件,减少出现数据泄漏的问题,提升文件或数据传输过程中的安全性。
[0110] 在一个实施例中,生成对应的第一临时文件的步骤,即获取加密文件,并对加密文件进行一级解密和二级解密,生成对应的第一临时文件的步骤,具体包括:
[0111] 获取加密文件,并读取加密文件对应的文件名、第一子密钥和加密后的第二子密钥;根据加密文件的文件名生成第三密钥;根据第三密钥,对加密后的第二子密钥进行一级解密和二级解密,生成解密后的第二子密钥;根据第一子密钥和解密后的第二子密钥进行奇偶交叉结合,生成解密后的第一密钥;根据解密后的第一密钥,对加密文件的加密密文进行解密,生成对应的第一临时文件。
[0112] 具体地,通过获取加密文件的文件名,并通过重复文件名直至达到预设长度时,生成对应的第三密钥,进而根据第三密钥对加密后的第二子密钥进行一级解密和二级解密,即根据第三密钥,采用base64对加密后的第二子密钥进行一级解密,进而根据第三密钥,采用AES的ECB模式对进行一级解密后的第二子密钥,进行二级解密,得到完全解密后的第二子密钥。
[0113] 进一步地,得到完全解密后的第二子密钥后,根据第一子密钥和解密后的第二子密钥进行奇偶交叉结合,生成解密后的第一密钥。进而根据解密后的第一密钥,对加密文件的加密密文进行解密,生成对应的第一临时文件。
[0114] 本实施例中,通过获取加密文件,并读取加密文件对应的文件名、第一子密钥和加密后的第二子密钥,进而根据加密文件的文件名生成第三密钥,并根据第三密钥,对加密后的第二子密钥进行一级解密和二级解密,生成解密后的第二子密钥。根据第一子密钥和解密后的第二子密钥进行奇偶交叉结合,生成解密后的第一密钥,进而根据解密后的第一密钥,对加密文件的加密密文进行解密,生成对应的第一临时文件。实现了利用不同密钥,以及对密钥进行解密后,再对加密文件进行多级解密的复杂解密方式,可避免恶意用户复制解密过程,进而提升加密文件的安全性能。
[0115] 在一个实施例中,生成对应的第二临时文件的步骤,即当确定导入文件携带加密标志时,对导入文件进行一级解密和二级解密,生成对应的第二临时文件的步骤,具体包括:
[0116] 当确定导入文件携带加密标志时,获取导入文件对应的文件名、第四子密钥和加密后的第五子密钥;根据导入文件的文件名生成第六密钥;根据第六密钥,对加密后的第五子密钥进行一级解密和二级解密,生成解密后的第五子密钥;根据第四子密钥和解密后的第五子密钥进行奇偶交叉结合,生成解密后的第四密钥;根据解密后的第四密钥,对导入文件的加密密文进行解密,生成对应的第二临时文件。
[0117] 具体地,当确定导入文件携带加密标志时,即确定导入文件也属于加密导入文件时,通过获取导入文件的文件名,并通过重复文件名直至达到预设长度时,生成对应的第三密钥。进而根据第三密钥对加密后的第二子密钥进行一级解密和二级解密,即根据第三密钥,采用base64对加密后的第二子密钥进行一级解密,进而根据第三密钥,采用AES的ECB模式对进行一级解密后的第二子密钥进行二级解密,得到完全解密后的第二子密钥。
[0118] 进一步地,在得到完全解密后的第二子密钥后,根据第一子密钥和解密后的第二子密钥进行奇偶交叉结合,生成解密后的第一密钥。进而根据解密后的第一密钥,对导入文件的加密密文进行解密,生成对应的第二临时文件。
[0119] 本实施中,当确定导入文件携带加密标志时,获取导入文件对应的文件名、第四子密钥和加密后的第五子密钥,并根据导入文件的文件名生成第六密钥,进而根据第六密钥,对加密后的第五子密钥进行一级解密和二级解密,生成解密后的第五子密钥。根据第四子密钥和解密后的第五子密钥进行奇偶交叉结合,生成解密后的第四密钥,进而根据解密后的第四密钥,对导入文件的加密密文进行解密,生成对应的第二临时文件。实现了利用不同密钥,以及对密钥进行解密后,再对导入文件进行多级解密的复杂解密方式,可避免恶意用户复制解密过程,进而提升导入文件的安全性能。
[0120] 在一个实施例中,如图4所示,提供了一种基于Python解释器的加密文件安全控制方法,具体包括以下步骤:
[0121] 步骤S402,获取待加密文件,并读取待加密文件的文件名和文件内容。
[0122] 具体地,通过rb模式读取待加密文件的文件名和文件内容,其中,rb模式表示读取待加密文件内容时,读取的是二进制文件。而通过rb模式读取待加密文件内容时,由于只读取相应的二进制文件,进而则无需考虑普通的读取文件内容的方式存在的编码问题。
[0123] 在一个实施例中,在获取待加密文件,并读取待加密文件的文件名和文件内容之前,还包括:
[0124] 接收加密请求,并获取加密请求携带的输入信息;
[0125] 当确定输入信息为文件名称时,将文件名称对应的文件确定为待加密文件;
[0126] 当确定输入信息为目录名称时,获取目录名称下的所有文件,并将目录名称下所有文件确定为待加密文件。
[0127] 具体地,通过接收加密请求,并获取加密请求携带的输入信息,其中,输入信息可以是文件名称或者目录名称,当确定输入信息为文件名称时,即将文件名称对应的文件确定为待加密文件,对该文件单独进行加密。
[0128] 进一步地,当确定输入信息为目录名称时,获取目录名称下的所有文件,并将该目录下的所有文件确定为待加密文件,即对该目录下的所有文件均进行加密。其中,目录下的所有文件可以包括记载用户信息或商业数据的内容文件,以及和内容文件关联的导入文件。
[0129] 步骤S404,将根据预设个数的随机字符组成的字符串,确定为第一密钥。
[0130] 具体地,根据预设个数的随机字符,比如64个随机字符组成得到的字符串,确定为第一密钥。
[0131] 步骤S406,将第一密钥进行奇偶拆分,得到拆分后的第一子密钥和第二子密钥。
[0132] 具体地,第一密钥可以包含字符或者数字,通过对由64为随机字符组成的第一密钥进行奇偶拆分,得到长度相同的第一子密钥和第二子密钥,其中,奇偶拆分表示的是位数,对由64为随机字符组成的第一密钥进行奇偶拆分时,得到32个奇数位组成第一子密钥,以及由32个偶数位组成的第二子密钥。
[0133] 步骤S408,根据待加密文件的文件名生成对应的第三密钥。
[0134] 具体地,通过获取待加密文件的文件名,并通过重复文件名直至达到预设长度时,生成对应的第三密钥。其中,预设长度可以是64位。
[0135] 步骤S410,根据第三密钥,对第二子密钥进行一级加密和二级加密,得到加密后的第二子密钥。
[0136] 具体地,根据第三密钥,采用AES的ECB模式对第二子密钥进行一级加密,进而根据第三密钥,采用base64对进行一级加密后的第二子密钥进行二级加密,得到加密后的第二子密钥。
[0137] 其中,一级加密采用的base64模式表示基于64个可打印字符来表示二进制数据的方法,Base64一般用于在HTTP协议下传输二进制数据,由于HTTP协议是文本协议,所以在HTTP协议下传输二进制数据时,需要将二进制数据转换为字符数据,则可通过Base64使用64个可打印字符来表示二进制数据,得到对应的字符数据。
[0138] 同样地,二级加密采用的AES的ECB模式表示高级加密标准中的电码本模式,其中,电码本模式需要将整个待加密文件分成若干段相同的小段,并分别对每一小段进行加密,最终得到加密后的第二子密钥。
[0139] 步骤S412,根据第一子密钥和加密后的第二子密钥进行奇偶交叉结合,生成加密后的第一密钥,并存储至待加密文件的文件内容中。
[0140] 具体地,通过将长度均为32的第一子密钥、加密后的第二子密钥进行奇偶交叉结合,可得到相应的加密后的第一密钥。其中,通过将加密后的第一密钥存储至待加密文件的文件内容中,其他恶意用户无法直接获取可用于对加密文件进行解密的第一密钥,而只能获取加密后的第一密钥,无法直接根据加密后的第一密钥对加密文件进行解密,进而提升了加密文件的安全性能。
[0141] 步骤S414,根据第一密钥对待加密文件的文件内容进行加密,生成对应的加密文件。
[0142] 具体地,根据由未加密的第一子密钥和第二子密钥组成的第一密钥,对待加密文件的文件内容进行加密,得到加密文件。其中,待加密文件包括包含文件内容的内容文件,以及与内容文件关联的导入文件,可对内容文件和导入文件均进行加密,以多级加密的复杂加密方式,可避免恶意用户获知加密过程后对加密过程进行破解,从而提升加密文件的安全性能。
[0143] 上述基于Python解释器的加密文件安全控制方法中,通过获取待加密文件,并读取待加密文件的文件名和文件内容,根据待加密文件的文件名生成对应的第三密钥。通过将根据预设个数的随机字符组成的字符串,确定为第一密钥,并将第一密钥进行奇偶拆分,得到拆分后的第一子密钥和第二子密钥,进而根据第三密钥,对第二子密钥进行一级加密和二级加密,得到加密后的第二子密钥。根据第一子密钥和加密后的第二子密钥进行奇偶交叉结合,可生成加密后的第一密钥,并存储至待加密文件的文件内容中。而根据第一密钥对待加密文件的文件内容进行加密,可生成对应的加密文件。实现了采用多级加密的复杂加密方式,包括对密钥进行多次加密,并根据加密后的密钥对文件进行加密,可避免恶意用户对加密过程进行破解后获取相应的文件内容,从而提升加密文件的安全性能。
[0144] 应该理解的是,虽然上述实施例涉及的各流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,上述实施例涉及的各流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
[0145] 在一个实施例中,如图5所示,提供了一种基于Python解释器的加密文件安全控制装置,包括:第一临时文件生成模块502、导入文件读取模块504、第二临时文件生成模块506、第一临时文件更新模块508、执行结果生成模块510以及删除模块512,其中:
[0146] 第一临时文件生成模块502,用于获取加密文件,并对加密文件进行一级解密和二级解密,生成对应的第一临时文件。
[0147] 导入文件读取模块504,用于读取第一临时文件携带的导入文件。
[0148] 第二临时文件生成模块506,用于当确定导入文件携带加密标志时,对导入文件进行一级解密和二级解密,生成对应的第二临时文件。
[0149] 第一临时文件更新模块508,用于运行第二临时文件,将与加密文件对应的关联文件导入第一临时文件,得到更新后的第一临时文件。
[0150] 执行结果生成模块510,用于运行更新后的第一临时文件,得到与加密文件对应的执行结果,和解密后的字节码文件。
[0151] 删除模块512,用于删除第一临时文件、第二临时文件以及解密后的字节码文件。
[0152] 上述基于Python解释器的加密文件安全控制装置中,通过获取加密文件,并对加密文件进行一级解密和二级解密,生成对应的第一临时文件,进而读取第一临时文件携带的导入文件。当确定导入文件携带加密标志时,对导入文件进行一级解密和二级解密,生成对应的第二临时文件,通过运行第二临时文件,将与加密文件对应的关联文件导入第一临时文件,得到更新后的第一临时文件。通过运行更新后的第一临时文件,得到与加密文件对应的执行结果,和解密后的字节码文件,并删除第一临时文件、第二临时文件以及解密后的字节码文件。实现了对加密文件以及导入文件分别实行较为复杂的一级解密、二级解密,降低恶意复制解密过程的可能性,同时通过将第一临时文件、第二临时文件以及解密后的字节码文件均进行删除,可避免恶意用户获取相应的临时文件或字节码文件反向编译得到解密文件,减少出现数据泄漏的问题,提升文件或数据传输过程中的安全性。
[0153] 在一个实施例中,提供了一种基于Python解释器的加密文件安全控制装置,还包括:
[0154] 待加密文件读取模块,用于获取待加密文件,并读取待加密文件的文件名和文件内容。
[0155] 第一密钥确定模块,用于将根据预设个数的随机字符组成的字符串,确定为第一密钥。
[0156] 第一密钥拆分模块,用于将第一密钥进行奇偶拆分,得到拆分后的第一子密钥和第二子密钥。
[0157] 第三密钥生成模块,用于根据待加密文件的文件名生成对应的第三密钥;
[0158] 第二子密钥加密模块,用于根据第三密钥,对第二子密钥进行一级加密和二级加密,得到加密后的第二子密钥。
[0159] 加密后的第一密钥生成模块,用于根据第一子密钥和加密后的第二子密钥进行奇偶交叉结合,生成加密后的第一密钥,并存储至待加密文件的文件内容中;
[0160] 加密文件生成模块,用于根据第一密钥对待加密文件的文件内容进行加密,生成对应的加密文件。
[0161] 上述基于Python解释器的加密文件安全控制装置中,通过获取待加密文件,并读取待加密文件的文件名和文件内容,根据待加密文件的文件名生成对应的第三密钥。通过将根据预设个数的随机字符组成的字符串,确定为第一密钥,并将第一密钥进行奇偶拆分,得到拆分后的第一子密钥和第二子密钥,进而根据第三密钥,对第二子密钥进行一级加密和二级加密,得到加密后的第二子密钥。根据第一子密钥和加密后的第二子密钥进行奇偶交叉结合,可生成加密后的第一密钥,并存储至待加密文件的文件内容中。而根据第一密钥对待加密文件的文件内容进行加密,可生成对应的加密文件。实现了采用多级加密的复杂加密方式,包括对密钥进行多次加密,并根据加密后的密钥对文件进行加密,可避免恶意用户对加密过程进行破解后获取相应的文件内容,从而提升加密文件的安全性能。
[0162] 在一个实施例中,提供了一种基于Python解释器的加密文件安全控制装置,还包括访问权限设置模块,用于:
[0163] 基于字节码文件对应的字节码对象设置访问权限;访问权限包括禁止访问字节码对象的原始字符串。
[0164] 在一个实施例中,第一临时文件生成模块,用于:
[0165] 获取加密文件,并读取加密文件对应的文件名、第一子密钥和加密后的第二子密钥;根据加密文件的文件名生成第三密钥;根据第三密钥,对加密后的第二子密钥进行一级解密和二级解密,生成解密后的第二子密钥;根据第一子密钥和解密后的第二子密钥进行奇偶交叉结合,生成解密后的第一密钥;根据解密后的第一密钥,对加密文件的加密密文进行解密,生成对应的第一临时文件。
[0166] 在一个实施例中,第二临时文件生成模块还用于:
[0167] 当确定导入文件携带加密标志时,获取导入文件对应的文件名、第四子密钥和加密后的第五子密钥;根据导入文件的文件名生成第六密钥;根据第六密钥,对加密后的第五子密钥进行一级解密和二级解密,生成解密后的第五子密钥;根据第四子密钥和解密后的第五子密钥进行奇偶交叉结合,生成解密后的第四密钥;根据解密后的第四密钥,对导入文件的加密密文进行解密,生成对应的第二临时文件。
[0168] 在一个实施例中,提供了一种基于Python解释器的加密文件安全控制装置,还包括:
[0169] 输入信息获取模块,用于接收加密请求,并获取加密请求携带的输入信息;
[0170] 待加密文件确定模块,用于当确定输入信息为文件名称时,将文件名称对应的文件确定为待加密文件;或当确定输入信息为目录名称时,获取目录名称下的所有文件,并将目录名称下所有文件确定为待加密文件。
[0171] 在一个实施例中,提供了一种基于Python解释器的加密文件安全控制装置,还包括指针内存扩大模块,用于:
[0172] 在运行第一临时文件或第二临时文件时,扩大指向第一临时文件或第二临时文件的文件路径的指针内存。
[0173] 关于基于Python解释器的加密文件安全控制装置的具体限定可以参见上文中对于基于Python解释器的加密文件安全控制方法的限定,在此不再赘述。上述基于Python解释器的加密文件安全控制装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
[0174] 在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图6所示。该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储加密文件、第一临时文件、第二临时文件以及字节码文件等。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种基于Python解释器的加密文件安全控制方法。
[0175] 本领域技术人员可以理解,图6中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
[0176] 在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现以下步骤:
[0177] 获取加密文件,并对加密文件进行一级解密和二级解密,生成对应的第一临时文件;
[0178] 读取第一临时文件携带的导入文件;当确定导入文件携带加密标志时,对导入文件进行一级解密和二级解密,生成对应的第二临时文件;
[0179] 运行第二临时文件,将与加密文件对应的关联文件导入第一临时文件,得到更新后的第一临时文件;
[0180] 运行更新后的第一临时文件,得到与加密文件对应的执行结果,和解密后的字节码文件;
[0181] 删除第一临时文件、第二临时文件以及解密后的字节码文件。
[0182] 在一个实施例中,处理器执行计算机程序时还实现以下步骤:基于字节码文件对应的字节码对象设置访问权限;访问权限包括禁止访问字节码对象的原始字符串。
[0183] 在一个实施例中,处理器执行计算机程序时还实现以下步骤:
[0184] 获取加密文件,并读取加密文件对应的文件名、第一子密钥和加密后的第二子密钥;
[0185] 根据加密文件的文件名生成第三密钥;根据第三密钥,对加密后的第二子密钥进行一级解密和二级解密,生成解密后的第二子密钥;
[0186] 根据第一子密钥和解密后的第二子密钥进行奇偶交叉结合,生成解密后的第一密钥;
[0187] 根据解密后的第一密钥,对加密文件的加密密文进行解密,生成对应的第一临时文件。
[0188] 在一个实施例中,处理器执行计算机程序时还实现以下步骤:
[0189] 当确定导入文件携带加密标志时,获取导入文件对应的文件名、第四子密钥和加密后的第五子密钥;
[0190] 根据导入文件的文件名生成第六密钥;根据第六密钥,对加密后的第五子密钥进行一级解密和二级解密,生成解密后的第五子密钥;
[0191] 根据第四子密钥和解密后的第五子密钥进行奇偶交叉结合,生成解密后的第四密钥;
[0192] 根据解密后的第四密钥,对导入文件的加密密文进行解密,生成对应的第二临时文件。
[0193] 在一个实施例中,处理器执行计算机程序时还实现以下步骤:
[0194] 获取待加密文件,并读取待加密文件的文件名和文件内容;
[0195] 将根据预设个数的随机字符组成的字符串,确定为第一密钥;
[0196] 将第一密钥进行奇偶拆分,得到拆分后的第一子密钥和第二子密钥;
[0197] 根据待加密文件的文件名生成对应的第三密钥;
[0198] 根据第三密钥,对第二子密钥进行一级加密和二级加密,得到加密后的第二子密钥;
[0199] 根据第一子密钥和加密后的第二子密钥进行奇偶交叉结合,生成加密后的第一密钥,并存储至待加密文件的文件内容中;
[0200] 根据第一密钥对待加密文件的文件内容进行加密,生成对应的加密文件。
[0201] 在一个实施例中,处理器执行计算机程序时还实现以下步骤:
[0202] 接收加密请求,并获取加密请求携带的输入信息;
[0203] 当确定输入信息为文件名称时,将文件名称对应的文件确定为待加密文件;
[0204] 当确定输入信息为目录名称时,获取目录名称下的所有文件,并将目录名称下所有文件确定为待加密文件。
[0205] 在一个实施例中,处理器执行计算机程序时还实现以下步骤:在运行第一临时文件或第二临时文件时,扩大指向第一临时文件或第二临时文件的文件路径的指针内存。
[0206] 在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
[0207] 获取加密文件,并对加密文件进行一级解密和二级解密,生成对应的第一临时文件;
[0208] 读取第一临时文件携带的导入文件;当确定导入文件携带加密标志时,对导入文件进行一级解密和二级解密,生成对应的第二临时文件;
[0209] 运行第二临时文件,将与加密文件对应的关联文件导入第一临时文件,得到更新后的第一临时文件;
[0210] 运行更新后的第一临时文件,得到与加密文件对应的执行结果,和解密后的字节码文件;
[0211] 删除第一临时文件、第二临时文件以及解密后的字节码文件。
[0212] 在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
[0213] 基于字节码文件对应的字节码对象设置访问权限;访问权限包括禁止访问字节码对象的原始字符串。
[0214] 在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
[0215] 获取加密文件,并读取加密文件对应的文件名、第一子密钥和加密后的第二子密钥;
[0216] 根据加密文件的文件名生成第三密钥;根据第三密钥,对加密后的第二子密钥进行一级解密和二级解密,生成解密后的第二子密钥;
[0217] 根据第一子密钥和解密后的第二子密钥进行奇偶交叉结合,生成解密后的第一密钥;
[0218] 根据解密后的第一密钥,对加密文件的加密密文进行解密,生成对应的第一临时文件。
[0219] 在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
[0220] 当确定导入文件携带加密标志时,获取导入文件对应的文件名、第四子密钥和加密后的第五子密钥;
[0221] 根据导入文件的文件名生成第六密钥;根据第六密钥,对加密后的第五子密钥进行一级解密和二级解密,生成解密后的第五子密钥;
[0222] 根据第四子密钥和解密后的第五子密钥进行奇偶交叉结合,生成解密后的第四密钥;
[0223] 根据解密后的第四密钥,对导入文件的加密密文进行解密,生成对应的第二临时文件。
[0224] 在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
[0225] 获取待加密文件,并读取待加密文件的文件名和文件内容;
[0226] 将根据预设个数的随机字符组成的字符串,确定为第一密钥;
[0227] 将第一密钥进行奇偶拆分,得到拆分后的第一子密钥和第二子密钥;
[0228] 根据待加密文件的文件名生成对应的第三密钥;根据第三密钥,对第二子密钥进行一级加密和二级加密,得到加密后的第二子密钥;
[0229] 根据第一子密钥和加密后的第二子密钥进行奇偶交叉结合,生成加密后的第一密钥,并存储至待加密文件的文件内容中;
[0230] 根据第一密钥对待加密文件的文件内容进行加密,生成对应的加密文件。
[0231] 在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
[0232] 接收加密请求,并获取加密请求携带的输入信息;
[0233] 当确定输入信息为文件名称时,将文件名称对应的文件确定为待加密文件;
[0234] 当确定输入信息为目录名称时,获取目录名称下的所有文件,并将目录名称下所有文件确定为待加密文件。
[0235] 在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
[0236] 在运行第一临时文件或第二临时文件时,扩大指向第一临时文件或第二临时文件的文件路径的指针内存。
[0237] 本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read‑Only Memory,ROM)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic Random Access Memory,DRAM)等。
[0238] 以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
[0239] 以上实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。