CN113360859B - 基于Python解释器的加密文件安全控制方法和装置 - Google Patents
基于Python解释器的加密文件安全控制方法和装置 Download PDFInfo
- Publication number
- CN113360859B CN113360859B CN202110606468.5A CN202110606468A CN113360859B CN 113360859 B CN113360859 B CN 113360859B CN 202110606468 A CN202110606468 A CN 202110606468A CN 113360859 B CN113360859 B CN 113360859B
- Authority
- CN
- China
- Prior art keywords
- file
- encrypted
- key
- sub
- temporary
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 52
- 230000008676 import Effects 0.000 claims abstract description 109
- 238000004590 computer program Methods 0.000 claims description 25
- 230000005540 biological transmission Effects 0.000 abstract description 4
- 230000006870 function Effects 0.000 description 14
- 230000008569 process Effects 0.000 description 10
- 238000010586 diagram Methods 0.000 description 6
- 238000004891 communication Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 238000005336 cracking Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/14—Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
- H04L9/0631—Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Technology Law (AREA)
- Multimedia (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Storage Device Security (AREA)
Abstract
本申请涉及一种基于Python解释器的加密文件安全控制方法和装置。所述方法包括:获取加密文件,对加密文件进行一级解密和二级解密,生成对应的第一临时文件。当确定第一临时文件的导入文件携带加密标志时,对导入文件进行一级解密和二级解密,生成对应的第二临时文件。运行第二临时文件,将与加密文件对应的关联文件导入第一临时文件,得到更新后的第一临时文件。运行更新后的第一临时文件,得到加密文件的执行结果、字节码文件,删除第一临时文件、第二临时文件和字节码文件。采用本方法将第一临时文件、第二临时文件和字节码文件均进行删除,可避免恶意用户获取相应的临时文件或字节码文件反向编译得到解密文件,提升文件或数据传输过程中的安全性。
Description
技术领域
本申请涉及信息安全技术领域,特别是涉及一种基于Python解释器的加密文件安全控制方法和装置。
背景技术
随着信息安全技术的发展,以及互联网应用在人们生活、工作中的逐步推广应用,越来越多人们采用网络通信的方式传输数据,比如用户个人信息、商务数据或重要文件等数据。而由于所传输的数据或文件大多涉及用户隐私或商业机密,出现了使用加密技术对传输的文件或数据进行保护的方式。
传统上多采用Python解释器对加密文件进行解密,以使得数据通信双方能够获知具体传输的数据。其中,Python语言属于解释性语言,对通过Python语言编写得到源码文件(.py),进行编译,可生成对应的字节码文件(Bytecode file,.pyc),但字节码文件具有特定的文件格式,很容易被逆向工具反编译,进而非数据通信双方的第三方也可获知具体的源码文件内容,出现大量传输文件或数据泄漏的问题,文件或数据的安全性仍较为低下。
发明内容
基于此,有必要针对上述技术问题,提供一种能够提升文件安全性能的基于Python解释器的加密文件安全控制方法和装置。
一种基于Python解释器的加密文件安全控制方法,所述方法包括:
获取加密文件,并对所述加密文件进行一级解密和二级解密,生成对应的第一临时文件;
读取所述第一临时文件携带的导入文件;
当确定所述导入文件携带加密标志时,对所述导入文件进行所述一级解密和所述二级解密,生成对应的第二临时文件;
运行所述第二临时文件,将与所述加密文件对应的关联文件导入所述第一临时文件,得到更新后的第一临时文件;
运行更新后的所述第一临时文件,得到与所述加密文件对应的执行结果,和解密后的字节码文件;
删除所述第一临时文件、第二临时文件以及所述解密后的字节码文件。
在其中一个实施例中,所述方法还包括:
基于所述字节码文件对应的字节码对象设置访问权限;所述访问权限包括禁止访问所述字节码对象的原始字符串。
在其中一个实施例中,所述获取加密文件,并对所述加密文件进行一级解密和二级解密,生成对应的第一临时文件,包括:
获取加密文件,并读取所述加密文件对应的文件名、第一子密钥和加密后的第二子密钥;
根据所述加密文件的文件名生成第三密钥;
根据所述第三密钥,对所述加密后的第二子密钥进行一级解密和二级解密,生成解密后的第二子密钥;
根据所述第一子密钥和解密后的所述第二子密钥进行奇偶交叉结合,生成解密后的第一密钥;
根据解密后的所述第一密钥,对所述加密文件的加密密文进行解密,生成对应的第一临时文件。
在其中一个实施例中,所述当确定所述导入文件携带加密标志时,对所述导入文件进行所述一级解密和所述二级解密,生成对应的第二临时文件,包括:
当确定所述导入文件携带加密标志时,获取所述导入文件对应的文件名、第四子密钥和加密后的第五子密钥;
根据所述导入文件的文件名生成第六密钥;
根据所述第六密钥,对所述加密后的第五子密钥进行一级解密和二级解密,生成解密后的第五子密钥;
根据所述第四子密钥和解密后的所述第五子密钥进行奇偶交叉结合,生成解密后的第四密钥;
根据解密后的所述第四密钥,对所述导入文件的加密密文进行解密,生成对应的第二临时文件。
在其中一个实施例中,在所述获取加密文件,并对所述加密文件进行一级解密和二级解密,生成对应的第一临时文件之前,还包括:
获取待加密文件,并读取所述待加密文件的文件名和文件内容;
将根据预设个数的随机字符组成的字符串,确定为第一密钥;
将所述第一密钥进行奇偶拆分,得到拆分后的第一子密钥和第二子密钥;
根据所述待加密文件的文件名生成对应的第三密钥;
根据所述第三密钥,对所述第二子密钥进行一级加密和二级加密,得到加密后的第二子密钥;
根据所述第一子密钥和加密后的第二子密钥进行奇偶交叉结合,生成加密后的第一密钥,并存储至所述待加密文件的文件内容中;
根据所述第一密钥对所述待加密文件的文件内容进行加密,生成对应的加密文件。
在其中一个实施例中,在所述获取待加密文件,并读取所述待加密文件的文件名和文件内容之前,还包括:
接收加密请求,并获取所述加密请求携带的输入信息;
当确定所述输入信息为文件名称时,将所述文件名称对应的文件确定为待加密文件;
当确定所述输入信息为目录名称时,获取所述目录名称下的所有文件,并将所述目录名称下所有文件确定为待加密文件。
在其中一个实施例中,所述方法还包括:
在运行所述第一临时文件或第二临时文件时,扩大指向所述第一临时文件或所述第二临时文件的文件路径的指针内存。
一种基于Python解释器的加密文件安全控制装置,所述装置包括:
第一临时文件生成模块,用于获取加密文件,并对所述加密文件进行一级解密和二级解密,生成对应的第一临时文件;
导入文件读取模块,用于读取所述第一临时文件携带的导入文件;
第二临时文件生成模块,用于当确定所述导入文件携带加密标志时,对所述导入文件进行所述一级解密和所述二级解密,生成对应的第二临时文件;
第一临时文件更新模块,用于运行所述第二临时文件,将与所述加密文件对应的关联文件导入所述第一临时文件,得到更新后的第一临时文件;
执行结果生成模块,用于运行更新后的所述第一临时文件,得到与所述加密文件对应的执行结果,和解密后的字节码文件;
删除模块,用于删除所述第一临时文件、第二临时文件以及所述解密后的字节码文件。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
获取加密文件,并对所述加密文件进行一级解密和二级解密,生成对应的第一临时文件;
读取所述第一临时文件携带的导入文件;
当确定所述导入文件携带加密标志时,对所述导入文件进行所述一级解密和所述二级解密,生成对应的第二临时文件;
运行所述第二临时文件,将与所述加密文件对应的关联文件导入所述第一临时文件,得到更新后的第一临时文件;
运行更新后的所述第一临时文件,得到与所述加密文件对应的执行结果,和解密后的字节码文件;
删除所述第一临时文件、第二临时文件以及所述解密后的字节码文件。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
获取加密文件,并对所述加密文件进行一级解密和二级解密,生成对应的第一临时文件;
读取所述第一临时文件携带的导入文件;
当确定所述导入文件携带加密标志时,对所述导入文件进行所述一级解密和所述二级解密,生成对应的第二临时文件;
运行所述第二临时文件,将与所述加密文件对应的关联文件导入所述第一临时文件,得到更新后的第一临时文件;
运行更新后的所述第一临时文件,得到与所述加密文件对应的执行结果,和解密后的字节码文件;
删除所述第一临时文件、第二临时文件以及所述解密后的字节码文件。
上述基于Python解释器的加密文件安全控制方法和装置中,通过获取加密文件,并对加密文件进行一级解密和二级解密,生成对应的第一临时文件,进而读取第一临时文件携带的导入文件。当确定导入文件携带加密标志时,对导入文件进行一级解密和二级解密,生成对应的第二临时文件,通过运行第二临时文件,将与加密文件对应的关联文件导入第一临时文件,得到更新后的第一临时文件。通过运行更新后的第一临时文件,得到与加密文件对应的执行结果,和解密后的字节码文件,并删除第一临时文件、第二临时文件以及解密后的字节码文件。实现了对加密文件以及导入文件分别实行较为复杂的一级解密、二级解密,降低恶意复制解密过程的可能性,同时通过将第一临时文件、第二临时文件以及解密后的字节码文件均进行删除,可避免恶意用户获取相应的临时文件或字节码文件反向编译得到解密文件,减少出现数据泄漏的问题,提升文件或数据传输过程中的安全性。
附图说明
图1为一个实施例中基于Python解释器的加密文件安全控制方法的应用环境图;
图2为一个实施例中基于Python解释器的加密文件安全控制方法的流程示意图;
图3为一个实施例中基于Python解释器的加密文件运行过程示意图;
图4为另一个实施例中基于Python解释器的加密文件安全控制方法的流程示意图;
图5为一个实施例中基于Python解释器的加密文件安全控制装置的结构框图;
图6为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请提供的基于Python解释器的加密文件安全控制方法,可以应用于如图1所示的应用环境中。其中,终端102与服务器104通过网络进行通信。服务器104通过从终端102获取加密文件,对加密文件进行一级解密和二级解密,生成对应的第一临时文件,并读取第一临时文件携带的导入文件。当服务器104确定导入文件携带加密标志时,对导入文件进行一级解密和二级解密,生成对应的第二临时文件。服务器104通过运行第二临时文件,将与加密文件对应的关联文件导入第一临时文件,得到更新后的第一临时文件,进而运行更新后的第一临时文件,得到与加密文件对应的执行结果,和解密后的字节码文件,并将执行结果发送至终端102。通过删除第一临时文件、第二临时文件以及解密后的字节码文件,避免反编译的手段获取到解密文件。其中,终端102可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备,服务器104可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
在一个实施例中,如图2所示,提供了一种基于Python解释器的加密文件安全控制方法,以该方法应用于图1中的服务器为例进行说明,包括以下步骤:
步骤S202,获取加密文件,并对加密文件进行一级解密和二级解密,生成对应的第一临时文件。
具体地,通过获取加密文件,并读取加密文件对应的文件名、第一子密钥和加密后的第二子密钥,并根据加密文件的文件名生成第三密钥,进而根据第三密钥,对加密后的第二子密钥进行一级解密和二级解密,生成解密后的第二子密钥。进一步通过根据第一子密钥和解密后的第二子密钥进行奇偶交叉结合,生成解密后的第一密钥,并根据解密后的第一密钥,对加密文件的加密密文进行解密,生成对应的第一临时文件。
其中,各加密文件的加密格式一样,即加密文件的文件第一行包括加密标志,文件名,时间,第一子密钥和加密后的第二子密钥,而加密文件的第二行是加密密文。其中,加密标志表示特定的字符串,用于识别当前文件是否为加密文件,在本实施例中,加密标志用“PACTERA-RPA”进行表示。其中,第一临时文件可存储至数组random中。
进一步地,通过获取加密文件的文件名,并通过重复文件名直至达到预设长度时,生成对应的第三密钥。其中,预设长度可以是64位。进而根据第三密钥对加密后的第二子密钥进行一级解密和二级解密,即根据第三密钥,采用base64对加密后的第二子密钥进行一级解密,进而根据第三密钥,采用AES的ECB模式对进行一级解密后的第二子密钥进行二级解密,得到完全解密后的第二子密钥。
其中,一级解密采用的base64模式表示基于64个可打印字符来表示二进制数据的方法,Base64一般用于在HTTP协议下传输二进制数据,由于HTTP协议是文本协议,所以在HTTP协议下传输二进制数据时,需要将二进制数据转换为字符数据,则可通过Base64使用64个可打印字符来表示二进制数据,得到对应的字符数据。
同样地,二级解密采用的AES的ECB模式表示高级加密标准中的电码本模式,其中,电码本模式需要将整个待加密文件分成若干段相同的小段,并分别对每一小段进行加密。进而通过电码本模式进行解密时,则需要对已加密的若干相同的小段分别进行解密,最后将解密后的小段进行拼接,得到解密后的文件。
在一个实施例中,得到完全解密后的第二子密钥后,根据第一子密钥和解密后的第二子密钥进行奇偶交叉结合,生成解密后的第一密钥。进而根据解密后的第一密钥,对加密文件的加密密文进行解密,生成对应的第一临时文件。其中,第一密钥为预设个数的随机字符组成,在本实施例中,第一密钥可以是64位随机字符组成,而组成第一密钥的第一子密钥和第二子密钥均由32位随机字符组成。
在一个实施例中,获取加密文件后,对加密文件内容进行读取,即读取加密文件对应的文件名、第一子密钥和加密后的第二子密钥时,通过rb模式读取加密文件内容。其中,rb模式表示读取加密文件内容时,读取的是二进制文件。而通过rb模式读取加密文件内容时,由于只读取相应的二进制文件,进而则无需考虑普通的读取文件内容的方式存在的编码问题。
步骤S204,读取第一临时文件携带的导入文件。
具体地,在得到第一临时文件并运行第一临时文件时,读取第一临时文件携带的导入文件,即Import文件,并判断导入文件是否携带加密标志。其中,如导入文件携带加密标志时,即表示导入文件也同样进行了加密,属于加密导入文件。
其中,导入文件(Import文件)即表示包含有可导入当前Python源码中的不同函数或者语句,即通过运行导入文件,可将导入文件涉及的不同函数或者语句导入至当前Python源码中。
在一个实施例中,对Python源码的解密操作是在main.c中的pymain_open_filename函数,如果要打开的文件是加密文件,就进行解密并将明文存放到第一临时文件中,然后再将第一临时文件路径传给源码中原本指向运行文件的指针pymain->filename。而对Import文件解密是在posixmodule.c中的win32_xstat_impl函数,如果Import文件是加密文件,就进行解密并存放到第二临时文件中,然后再将第二临时文件路径传给源码中原本指向Import文件的指针path。
举例来说,扩大指针内存的方式可以是:修改Python源码中obmalloc.c文件中的_PyMem_RawWcsdup函数,将size设为512,即指针初始分配空间设置为512。
步骤S206,当确定导入文件携带加密标志时,对导入文件进行一级解密和二级解密,生成对应的第二临时文件。
具体地,当确定导入文件携带加密标志时,即确定导入文件也属于加密导入文件,通过获取导入文件对应的文件名、第四子密钥和加密后的第五子密钥,并根据导入文件的文件名生成第六密钥,进而根据第六密钥,对加密后的第五子密钥进行一级解密和二级解密,生成解密后的第五子密钥。进一步地,根据第四子密钥和解密后的第五子密钥进行奇偶交叉结合,生成解密后的第四密钥,并根据解密后的第四密钥,对导入文件的加密密文进行解密,生成对应的第二临时文件。
其中,加密标志表示特定的字符串,用于识别导入文件是否为加密文件,在本实施例中,加密标志用“PACTERA-RPA”进行表示。
进一步地,通过获取导入文件的文件名,并通过重复文件名直至达到预设长度时,生成对应的第三密钥。其中,预设长度可以是64位。进而根据第三密钥对加密后的第二子密钥进行一级解密和二级解密,即根据第三密钥,采用base64对加密后的第二子密钥进行一级解密,进而根据第三密钥,采用AES的ECB模式对进行一级解密后的第二子密钥进行二级解密,得到完全解密后的第二子密钥。
在一个实施例中,得到完全解密后的第二子密钥后,根据第一子密钥和解密后的第二子密钥进行奇偶交叉结合,生成解密后的第一密钥。进而根据解密后的第一密钥,对导入文件的加密密文进行解密,生成对应的第二临时文件。其中,第二临时文件可存储至数组randoms中。
在一个实施例中,在运行第一临时文件或第二临时文件时,扩大指向第一临时文件或第二临时文件的文件路径的指针内存。
其中,为防止内存溢出,需要扩大源码中指向运行文件路径的指针的内存,再将已扩大内存的指针指向第一临时文件或第二临时文件的路径,进而可运行第一临时文件或第二临时文件中的代码。
步骤S208,运行第二临时文件,将与加密文件对应的关联文件导入第一临时文件,得到更新后的第一临时文件。
具体地,通过运行第二临时文件,获取导入文件携带的与加密文件对应的关联文件,比如导入文件携带的需要调用的函数或者语句等,将所获取的关联文件导入第一临时文件中,得到更新后的第一临时文件。
其中,通过对Python加密代码进行解密,存放在第一临时文件中,将第一临时文件路径传给源码中原本指向运行文件的指针,相当于Python解释器运行第一临时文件文件,解释器读取解密内容,读取其中的Import文件。当Import文件发现是加密文件,进行解密并存放在第二临时文件中,再将第二临时文件路径传给源码中原本指向Import文件的指针,相当于Python解释器读取的Import文件是第二临时文件,则第二临时文件的运行结果是Python源码解密后的执行结果。
步骤S210,运行更新后的第一临时文件,得到与加密文件对应的执行结果,和解密后的字节码文件。
具体地,通过运行更新后的第一临时文件,即运行已导入需要调用的函数或语句的第一临时文件,得到与加密文件对应的执行结果,并自动生成解密后的字节码文件。其中,解密后的字节码文件可存储至数组pycarray中。
在一个实施例中,可预先对要运行的Python文件及其中的自定义Import模块(导入模块)进行加密,进而打开命令提示符(cmd),进入到Python解释器所在的目录,输入Python解释器名称 + 要运行的加密文件路径,即可得到运行结果。
步骤S212,删除第一临时文件、第二临时文件以及解密后的字节码文件。
具体地,Python解释器会在运行更新后的第一临时文件后自动生成对应的字节码文件,为防止恶意用户直接根据字节码文件来得到源码文件,需要在生成字节码文件之后,删除数组random中的第一临时文件、数组randoms中的第二临时文件以及数组pycarray中的字节码文件。
其中,可以通过在当前Python源码中的ceval.c文件中的对应行加入删除代码,实现删除数组pycarray中的字节码文件。
在一个实施例中,在删除第一临时文件、第二临时文件以及解密后的字节码文件之后,还包括:
基于字节码文件对应的字节码对象设置访问权限;访问权限包括禁止访问字节码对象的原始字符串。
具体地,基于字节码文件对应的字节码对象设置访问权限,即禁止访问字节码对象的原始字符串,可注释掉 Python源码中codeobject.c文件中关于访问权限设置的对应行。举例来说,可以注释掉源码的codeobject.c文件中允许用户访问对象的 co_code 属性的代码行,进而可防止恶意用户访问对象的 co_code 属性来获取字节码,并通过反编译的手段获取到解密文件的情况出现,提升文件的安全保密性能。
在一个实施例中,如图3所示,提供了一种基于Python解释器的加密文件运行过程,参照图3可知,通过运行文件,在确定文件是加密文件时,可获取得到相应的第一密钥key1,即由一半需要解密的第二子密钥和另一半不需要解密的第一子密钥组成,通过获取用于对第二子密钥进行解密的第三密钥key2,根据第三密钥对第二子密钥进行解密,得到解密后的的第二子密钥对应的明文,通过将第一子密钥和解密后的第二子密钥进行合并可得到解密后的第一密钥key1。
其中,通过第一密钥对加密文件进行解密,得到第一临时文件,存储至相应的临时存放地址。其中,在加密文件解密结束后,从相应的临时地址删除所存储的第一临时文件。
进一步地,根据解密后的第一临时文件,判断第一临时文件的导入模块对应的导入文件是否为加密文件,在确定导入文件是加密文件时,可获取得到相应的第一密钥key1,即由一半需要解密的第二子密钥和另一半不需要解密的第一子密钥组成,通过获取用于对第二子密钥进行解密的第三密钥key2,根据第三密钥对第二子密钥进行解密,得到解密后的的第二子密钥对应的明文,通过将第一子密钥和解密后的第二子密钥进行合并可得到解密后的第一密钥key1。
其中,通过第一密钥对导入文件进行解密,得到第二临时文件,存储至相应的临时存放地址。其中,在加密文件解密结束后,从相应的临时地址删除所存储的第二临时文件。
同样地,在运行第一临时文件、第二临时文件,生成对应的字节码文件后,也需将字节码文件进行移除。
在一个实施例中,需要在Python解释器源码中加入加密函数,包括:1)解密要运行的第一临时文件,在main.c中的pymain_open_filename函数中调用解密函数,在pythonrun.c文件中的PyRun_FileExFlags函数中删除生成的临时解密文件;2)解密要运行的第一临时文件中的自定义improt文件,在posixmodule.c中的win32_xstat_impl函数中调用解密函数,posixmodule.c文件中的win32_xstat_impl函数,在CloseHandle之后删除生成的第一临时文件、第二临时文件。
上述基于Python解释器的加密文件安全控制方法中,通过获取加密文件,并对加密文件进行一级解密和二级解密,生成对应的第一临时文件,进而读取第一临时文件携带的导入文件。当确定导入文件携带加密标志时,对导入文件进行一级解密和二级解密,生成对应的第二临时文件,通过运行第二临时文件,将与加密文件对应的关联文件导入第一临时文件,得到更新后的第一临时文件。通过运行更新后的第一临时文件,得到与加密文件对应的执行结果,和解密后的字节码文件,并删除第一临时文件、第二临时文件以及解密后的字节码文件。实现了对加密文件以及导入文件分别实行较为复杂的一级解密、二级解密,降低恶意复制解密过程的可能性,同时通过将第一临时文件、第二临时文件以及解密后的字节码文件均进行删除,可避免恶意用户获取相应的临时文件或字节码文件反向编译得到解密文件,减少出现数据泄漏的问题,提升文件或数据传输过程中的安全性。
在一个实施例中,生成对应的第一临时文件的步骤,即获取加密文件,并对加密文件进行一级解密和二级解密,生成对应的第一临时文件的步骤,具体包括:
获取加密文件,并读取加密文件对应的文件名、第一子密钥和加密后的第二子密钥;根据加密文件的文件名生成第三密钥;根据第三密钥,对加密后的第二子密钥进行一级解密和二级解密,生成解密后的第二子密钥;根据第一子密钥和解密后的第二子密钥进行奇偶交叉结合,生成解密后的第一密钥;根据解密后的第一密钥,对加密文件的加密密文进行解密,生成对应的第一临时文件。
具体地,通过获取加密文件的文件名,并通过重复文件名直至达到预设长度时,生成对应的第三密钥,进而根据第三密钥对加密后的第二子密钥进行一级解密和二级解密,即根据第三密钥,采用base64对加密后的第二子密钥进行一级解密,进而根据第三密钥,采用AES的ECB模式对进行一级解密后的第二子密钥,进行二级解密,得到完全解密后的第二子密钥。
进一步地,得到完全解密后的第二子密钥后,根据第一子密钥和解密后的第二子密钥进行奇偶交叉结合,生成解密后的第一密钥。进而根据解密后的第一密钥,对加密文件的加密密文进行解密,生成对应的第一临时文件。
本实施例中,通过获取加密文件,并读取加密文件对应的文件名、第一子密钥和加密后的第二子密钥,进而根据加密文件的文件名生成第三密钥,并根据第三密钥,对加密后的第二子密钥进行一级解密和二级解密,生成解密后的第二子密钥。根据第一子密钥和解密后的第二子密钥进行奇偶交叉结合,生成解密后的第一密钥,进而根据解密后的第一密钥,对加密文件的加密密文进行解密,生成对应的第一临时文件。实现了利用不同密钥,以及对密钥进行解密后,再对加密文件进行多级解密的复杂解密方式,可避免恶意用户复制解密过程,进而提升加密文件的安全性能。
在一个实施例中,生成对应的第二临时文件的步骤,即当确定导入文件携带加密标志时,对导入文件进行一级解密和二级解密,生成对应的第二临时文件的步骤,具体包括:
当确定导入文件携带加密标志时,获取导入文件对应的文件名、第四子密钥和加密后的第五子密钥;根据导入文件的文件名生成第六密钥;根据第六密钥,对加密后的第五子密钥进行一级解密和二级解密,生成解密后的第五子密钥;根据第四子密钥和解密后的第五子密钥进行奇偶交叉结合,生成解密后的第四密钥;根据解密后的第四密钥,对导入文件的加密密文进行解密,生成对应的第二临时文件。
具体地,当确定导入文件携带加密标志时,即确定导入文件也属于加密导入文件时,通过获取导入文件的文件名,并通过重复文件名直至达到预设长度时,生成对应的第三密钥。进而根据第三密钥对加密后的第二子密钥进行一级解密和二级解密,即根据第三密钥,采用base64对加密后的第二子密钥进行一级解密,进而根据第三密钥,采用AES的ECB模式对进行一级解密后的第二子密钥进行二级解密,得到完全解密后的第二子密钥。
进一步地,在得到完全解密后的第二子密钥后,根据第一子密钥和解密后的第二子密钥进行奇偶交叉结合,生成解密后的第一密钥。进而根据解密后的第一密钥,对导入文件的加密密文进行解密,生成对应的第二临时文件。
本实施中,当确定导入文件携带加密标志时,获取导入文件对应的文件名、第四子密钥和加密后的第五子密钥,并根据导入文件的文件名生成第六密钥,进而根据第六密钥,对加密后的第五子密钥进行一级解密和二级解密,生成解密后的第五子密钥。根据第四子密钥和解密后的第五子密钥进行奇偶交叉结合,生成解密后的第四密钥,进而根据解密后的第四密钥,对导入文件的加密密文进行解密,生成对应的第二临时文件。实现了利用不同密钥,以及对密钥进行解密后,再对导入文件进行多级解密的复杂解密方式,可避免恶意用户复制解密过程,进而提升导入文件的安全性能。
在一个实施例中,如图4所示,提供了一种基于Python解释器的加密文件安全控制方法,具体包括以下步骤:
步骤S402,获取待加密文件,并读取待加密文件的文件名和文件内容。
具体地,通过rb模式读取待加密文件的文件名和文件内容,其中,rb模式表示读取待加密文件内容时,读取的是二进制文件。而通过rb模式读取待加密文件内容时,由于只读取相应的二进制文件,进而则无需考虑普通的读取文件内容的方式存在的编码问题。
在一个实施例中,在获取待加密文件,并读取待加密文件的文件名和文件内容之前,还包括:
接收加密请求,并获取加密请求携带的输入信息;
当确定输入信息为文件名称时,将文件名称对应的文件确定为待加密文件;
当确定输入信息为目录名称时,获取目录名称下的所有文件,并将目录名称下所有文件确定为待加密文件。
具体地,通过接收加密请求,并获取加密请求携带的输入信息,其中,输入信息可以是文件名称或者目录名称,当确定输入信息为文件名称时,即将文件名称对应的文件确定为待加密文件,对该文件单独进行加密。
进一步地,当确定输入信息为目录名称时,获取目录名称下的所有文件,并将该目录下的所有文件确定为待加密文件,即对该目录下的所有文件均进行加密。其中,目录下的所有文件可以包括记载用户信息或商业数据的内容文件,以及和内容文件关联的导入文件。
步骤S404,将根据预设个数的随机字符组成的字符串,确定为第一密钥。
具体地,根据预设个数的随机字符,比如64个随机字符组成得到的字符串,确定为第一密钥。
步骤S406,将第一密钥进行奇偶拆分,得到拆分后的第一子密钥和第二子密钥。
具体地,第一密钥可以包含字符或者数字,通过对由64为随机字符组成的第一密钥进行奇偶拆分,得到长度相同的第一子密钥和第二子密钥,其中,奇偶拆分表示的是位数,对由64为随机字符组成的第一密钥进行奇偶拆分时,得到32个奇数位组成第一子密钥,以及由32个偶数位组成的第二子密钥。
步骤S408,根据待加密文件的文件名生成对应的第三密钥。
具体地,通过获取待加密文件的文件名,并通过重复文件名直至达到预设长度时,生成对应的第三密钥。其中,预设长度可以是64位。
步骤S410,根据第三密钥,对第二子密钥进行一级加密和二级加密,得到加密后的第二子密钥。
具体地,根据第三密钥,采用AES的ECB模式对第二子密钥进行一级加密,进而根据第三密钥,采用base64对进行一级加密后的第二子密钥进行二级加密,得到加密后的第二子密钥。
其中,一级加密采用的base64模式表示基于64个可打印字符来表示二进制数据的方法,Base64一般用于在HTTP协议下传输二进制数据,由于HTTP协议是文本协议,所以在HTTP协议下传输二进制数据时,需要将二进制数据转换为字符数据,则可通过Base64使用64个可打印字符来表示二进制数据,得到对应的字符数据。
同样地,二级加密采用的AES的ECB模式表示高级加密标准中的电码本模式,其中,电码本模式需要将整个待加密文件分成若干段相同的小段,并分别对每一小段进行加密,最终得到加密后的第二子密钥。
步骤S412,根据第一子密钥和加密后的第二子密钥进行奇偶交叉结合,生成加密后的第一密钥,并存储至待加密文件的文件内容中。
具体地,通过将长度均为32的第一子密钥、加密后的第二子密钥进行奇偶交叉结合,可得到相应的加密后的第一密钥。其中,通过将加密后的第一密钥存储至待加密文件的文件内容中,其他恶意用户无法直接获取可用于对加密文件进行解密的第一密钥,而只能获取加密后的第一密钥,无法直接根据加密后的第一密钥对加密文件进行解密,进而提升了加密文件的安全性能。
步骤S414,根据第一密钥对待加密文件的文件内容进行加密,生成对应的加密文件。
具体地,根据由未加密的第一子密钥和第二子密钥组成的第一密钥,对待加密文件的文件内容进行加密,得到加密文件。其中,待加密文件包括包含文件内容的内容文件,以及与内容文件关联的导入文件,可对内容文件和导入文件均进行加密,以多级加密的复杂加密方式,可避免恶意用户获知加密过程后对加密过程进行破解,从而提升加密文件的安全性能。
上述基于Python解释器的加密文件安全控制方法中,通过获取待加密文件,并读取待加密文件的文件名和文件内容,根据待加密文件的文件名生成对应的第三密钥。通过将根据预设个数的随机字符组成的字符串,确定为第一密钥,并将第一密钥进行奇偶拆分,得到拆分后的第一子密钥和第二子密钥,进而根据第三密钥,对第二子密钥进行一级加密和二级加密,得到加密后的第二子密钥。根据第一子密钥和加密后的第二子密钥进行奇偶交叉结合,可生成加密后的第一密钥,并存储至待加密文件的文件内容中。而根据第一密钥对待加密文件的文件内容进行加密,可生成对应的加密文件。实现了采用多级加密的复杂加密方式,包括对密钥进行多次加密,并根据加密后的密钥对文件进行加密,可避免恶意用户对加密过程进行破解后获取相应的文件内容,从而提升加密文件的安全性能。
应该理解的是,虽然上述实施例涉及的各流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,上述实施例涉及的各流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图5所示,提供了一种基于Python解释器的加密文件安全控制装置,包括:第一临时文件生成模块502、导入文件读取模块504、第二临时文件生成模块506、第一临时文件更新模块508、执行结果生成模块510以及删除模块512,其中:
第一临时文件生成模块502,用于获取加密文件,并对加密文件进行一级解密和二级解密,生成对应的第一临时文件。
导入文件读取模块504,用于读取第一临时文件携带的导入文件。
第二临时文件生成模块506,用于当确定导入文件携带加密标志时,对导入文件进行一级解密和二级解密,生成对应的第二临时文件。
第一临时文件更新模块508,用于运行第二临时文件,将与加密文件对应的关联文件导入第一临时文件,得到更新后的第一临时文件。
执行结果生成模块510,用于运行更新后的第一临时文件,得到与加密文件对应的执行结果,和解密后的字节码文件。
删除模块512,用于删除第一临时文件、第二临时文件以及解密后的字节码文件。
上述基于Python解释器的加密文件安全控制装置中,通过获取加密文件,并对加密文件进行一级解密和二级解密,生成对应的第一临时文件,进而读取第一临时文件携带的导入文件。当确定导入文件携带加密标志时,对导入文件进行一级解密和二级解密,生成对应的第二临时文件,通过运行第二临时文件,将与加密文件对应的关联文件导入第一临时文件,得到更新后的第一临时文件。通过运行更新后的第一临时文件,得到与加密文件对应的执行结果,和解密后的字节码文件,并删除第一临时文件、第二临时文件以及解密后的字节码文件。实现了对加密文件以及导入文件分别实行较为复杂的一级解密、二级解密,降低恶意复制解密过程的可能性,同时通过将第一临时文件、第二临时文件以及解密后的字节码文件均进行删除,可避免恶意用户获取相应的临时文件或字节码文件反向编译得到解密文件,减少出现数据泄漏的问题,提升文件或数据传输过程中的安全性。
在一个实施例中,提供了一种基于Python解释器的加密文件安全控制装置,还包括:
待加密文件读取模块,用于获取待加密文件,并读取待加密文件的文件名和文件内容。
第一密钥确定模块,用于将根据预设个数的随机字符组成的字符串,确定为第一密钥。
第一密钥拆分模块,用于将第一密钥进行奇偶拆分,得到拆分后的第一子密钥和第二子密钥。
第三密钥生成模块,用于根据待加密文件的文件名生成对应的第三密钥;
第二子密钥加密模块,用于根据第三密钥,对第二子密钥进行一级加密和二级加密,得到加密后的第二子密钥。
加密后的第一密钥生成模块,用于根据第一子密钥和加密后的第二子密钥进行奇偶交叉结合,生成加密后的第一密钥,并存储至待加密文件的文件内容中;
加密文件生成模块,用于根据第一密钥对待加密文件的文件内容进行加密,生成对应的加密文件。
上述基于Python解释器的加密文件安全控制装置中,通过获取待加密文件,并读取待加密文件的文件名和文件内容,根据待加密文件的文件名生成对应的第三密钥。通过将根据预设个数的随机字符组成的字符串,确定为第一密钥,并将第一密钥进行奇偶拆分,得到拆分后的第一子密钥和第二子密钥,进而根据第三密钥,对第二子密钥进行一级加密和二级加密,得到加密后的第二子密钥。根据第一子密钥和加密后的第二子密钥进行奇偶交叉结合,可生成加密后的第一密钥,并存储至待加密文件的文件内容中。而根据第一密钥对待加密文件的文件内容进行加密,可生成对应的加密文件。实现了采用多级加密的复杂加密方式,包括对密钥进行多次加密,并根据加密后的密钥对文件进行加密,可避免恶意用户对加密过程进行破解后获取相应的文件内容,从而提升加密文件的安全性能。
在一个实施例中,提供了一种基于Python解释器的加密文件安全控制装置,还包括访问权限设置模块,用于:
基于字节码文件对应的字节码对象设置访问权限;访问权限包括禁止访问字节码对象的原始字符串。
在一个实施例中,第一临时文件生成模块,用于:
获取加密文件,并读取加密文件对应的文件名、第一子密钥和加密后的第二子密钥;根据加密文件的文件名生成第三密钥;根据第三密钥,对加密后的第二子密钥进行一级解密和二级解密,生成解密后的第二子密钥;根据第一子密钥和解密后的第二子密钥进行奇偶交叉结合,生成解密后的第一密钥;根据解密后的第一密钥,对加密文件的加密密文进行解密,生成对应的第一临时文件。
在一个实施例中,第二临时文件生成模块还用于:
当确定导入文件携带加密标志时,获取导入文件对应的文件名、第四子密钥和加密后的第五子密钥;根据导入文件的文件名生成第六密钥;根据第六密钥,对加密后的第五子密钥进行一级解密和二级解密,生成解密后的第五子密钥;根据第四子密钥和解密后的第五子密钥进行奇偶交叉结合,生成解密后的第四密钥;根据解密后的第四密钥,对导入文件的加密密文进行解密,生成对应的第二临时文件。
在一个实施例中,提供了一种基于Python解释器的加密文件安全控制装置,还包括:
输入信息获取模块,用于接收加密请求,并获取加密请求携带的输入信息;
待加密文件确定模块,用于当确定输入信息为文件名称时,将文件名称对应的文件确定为待加密文件;或当确定输入信息为目录名称时,获取目录名称下的所有文件,并将目录名称下所有文件确定为待加密文件。
在一个实施例中,提供了一种基于Python解释器的加密文件安全控制装置,还包括指针内存扩大模块,用于:
在运行第一临时文件或第二临时文件时,扩大指向第一临时文件或第二临时文件的文件路径的指针内存。
关于基于Python解释器的加密文件安全控制装置的具体限定可以参见上文中对于基于Python解释器的加密文件安全控制方法的限定,在此不再赘述。上述基于Python解释器的加密文件安全控制装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图6所示。该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储加密文件、第一临时文件、第二临时文件以及字节码文件等。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种基于Python解释器的加密文件安全控制方法。
本领域技术人员可以理解,图6中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现以下步骤:
获取加密文件,并对加密文件进行一级解密和二级解密,生成对应的第一临时文件;
读取第一临时文件携带的导入文件;当确定导入文件携带加密标志时,对导入文件进行一级解密和二级解密,生成对应的第二临时文件;
运行第二临时文件,将与加密文件对应的关联文件导入第一临时文件,得到更新后的第一临时文件;
运行更新后的第一临时文件,得到与加密文件对应的执行结果,和解密后的字节码文件;
删除第一临时文件、第二临时文件以及解密后的字节码文件。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:基于字节码文件对应的字节码对象设置访问权限;访问权限包括禁止访问字节码对象的原始字符串。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
获取加密文件,并读取加密文件对应的文件名、第一子密钥和加密后的第二子密钥;
根据加密文件的文件名生成第三密钥;根据第三密钥,对加密后的第二子密钥进行一级解密和二级解密,生成解密后的第二子密钥;
根据第一子密钥和解密后的第二子密钥进行奇偶交叉结合,生成解密后的第一密钥;
根据解密后的第一密钥,对加密文件的加密密文进行解密,生成对应的第一临时文件。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
当确定导入文件携带加密标志时,获取导入文件对应的文件名、第四子密钥和加密后的第五子密钥;
根据导入文件的文件名生成第六密钥;根据第六密钥,对加密后的第五子密钥进行一级解密和二级解密,生成解密后的第五子密钥;
根据第四子密钥和解密后的第五子密钥进行奇偶交叉结合,生成解密后的第四密钥;
根据解密后的第四密钥,对导入文件的加密密文进行解密,生成对应的第二临时文件。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
获取待加密文件,并读取待加密文件的文件名和文件内容;
将根据预设个数的随机字符组成的字符串,确定为第一密钥;
将第一密钥进行奇偶拆分,得到拆分后的第一子密钥和第二子密钥;
根据待加密文件的文件名生成对应的第三密钥;
根据第三密钥,对第二子密钥进行一级加密和二级加密,得到加密后的第二子密钥;
根据第一子密钥和加密后的第二子密钥进行奇偶交叉结合,生成加密后的第一密钥,并存储至待加密文件的文件内容中;
根据第一密钥对待加密文件的文件内容进行加密,生成对应的加密文件。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
接收加密请求,并获取加密请求携带的输入信息;
当确定输入信息为文件名称时,将文件名称对应的文件确定为待加密文件;
当确定输入信息为目录名称时,获取目录名称下的所有文件,并将目录名称下所有文件确定为待加密文件。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:在运行第一临时文件或第二临时文件时,扩大指向第一临时文件或第二临时文件的文件路径的指针内存。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
获取加密文件,并对加密文件进行一级解密和二级解密,生成对应的第一临时文件;
读取第一临时文件携带的导入文件;当确定导入文件携带加密标志时,对导入文件进行一级解密和二级解密,生成对应的第二临时文件;
运行第二临时文件,将与加密文件对应的关联文件导入第一临时文件,得到更新后的第一临时文件;
运行更新后的第一临时文件,得到与加密文件对应的执行结果,和解密后的字节码文件;
删除第一临时文件、第二临时文件以及解密后的字节码文件。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
基于字节码文件对应的字节码对象设置访问权限;访问权限包括禁止访问字节码对象的原始字符串。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
获取加密文件,并读取加密文件对应的文件名、第一子密钥和加密后的第二子密钥;
根据加密文件的文件名生成第三密钥;根据第三密钥,对加密后的第二子密钥进行一级解密和二级解密,生成解密后的第二子密钥;
根据第一子密钥和解密后的第二子密钥进行奇偶交叉结合,生成解密后的第一密钥;
根据解密后的第一密钥,对加密文件的加密密文进行解密,生成对应的第一临时文件。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
当确定导入文件携带加密标志时,获取导入文件对应的文件名、第四子密钥和加密后的第五子密钥;
根据导入文件的文件名生成第六密钥;根据第六密钥,对加密后的第五子密钥进行一级解密和二级解密,生成解密后的第五子密钥;
根据第四子密钥和解密后的第五子密钥进行奇偶交叉结合,生成解密后的第四密钥;
根据解密后的第四密钥,对导入文件的加密密文进行解密,生成对应的第二临时文件。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
获取待加密文件,并读取待加密文件的文件名和文件内容;
将根据预设个数的随机字符组成的字符串,确定为第一密钥;
将第一密钥进行奇偶拆分,得到拆分后的第一子密钥和第二子密钥;
根据待加密文件的文件名生成对应的第三密钥;根据第三密钥,对第二子密钥进行一级加密和二级加密,得到加密后的第二子密钥;
根据第一子密钥和加密后的第二子密钥进行奇偶交叉结合,生成加密后的第一密钥,并存储至待加密文件的文件内容中;
根据第一密钥对待加密文件的文件内容进行加密,生成对应的加密文件。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
接收加密请求,并获取加密请求携带的输入信息;
当确定输入信息为文件名称时,将文件名称对应的文件确定为待加密文件;
当确定输入信息为目录名称时,获取目录名称下的所有文件,并将目录名称下所有文件确定为待加密文件。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
在运行第一临时文件或第二临时文件时,扩大指向第一临时文件或第二临时文件的文件路径的指针内存。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-OnlyMemory,ROM)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic Random Access Memory,DRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (10)
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中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110606468.5A CN113360859B (zh) | 2021-05-28 | 2021-05-28 | 基于Python解释器的加密文件安全控制方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110606468.5A CN113360859B (zh) | 2021-05-28 | 2021-05-28 | 基于Python解释器的加密文件安全控制方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113360859A CN113360859A (zh) | 2021-09-07 |
CN113360859B true CN113360859B (zh) | 2022-08-09 |
Family
ID=77530947
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110606468.5A Active CN113360859B (zh) | 2021-05-28 | 2021-05-28 | 基于Python解释器的加密文件安全控制方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113360859B (zh) |
Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6490353B1 (en) * | 1998-11-23 | 2002-12-03 | Tan Daniel Tiong Hok | Data encrypting and decrypting apparatus and method |
CN103186731A (zh) * | 2011-12-29 | 2013-07-03 | 北京中文在线数字出版股份有限公司 | 一种混合方式的数字版权保护方法和系统 |
CN106453410A (zh) * | 2016-11-28 | 2017-02-22 | 上海摩软通讯技术有限公司 | 数据传输方法及数据传输装置 |
CN106599628A (zh) * | 2016-12-08 | 2017-04-26 | 合肥康捷信息科技有限公司 | 一种基于模块钩子的Python字节码文件保护方法 |
CN107026873A (zh) * | 2017-05-31 | 2017-08-08 | 重庆大学 | 一种基于椭圆曲线算法的加解密方法及系统 |
CN107086915A (zh) * | 2017-05-25 | 2017-08-22 | 山东浪潮商用系统有限公司 | 一种数据传输方法、数据发送端及数据接收端 |
CN108769740A (zh) * | 2018-06-05 | 2018-11-06 | 苏州科达科技股份有限公司 | 视频数据加密传输方法、系统、设备及存储介质 |
CN109005196A (zh) * | 2018-09-10 | 2018-12-14 | 北京旷视科技有限公司 | 数据传输方法、数据解密方法、装置及电子设备 |
CN110009346A (zh) * | 2019-03-11 | 2019-07-12 | 巍乾全球技术有限责任公司 | 用于拆分和恢复密钥的方法、程序产品、存储介质和系统 |
CN110826097A (zh) * | 2019-10-29 | 2020-02-21 | 维沃移动通信有限公司 | 一种数据处理方法及电子设备 |
CN111159757A (zh) * | 2019-12-18 | 2020-05-15 | 成都烽创科技有限公司 | 文件加密方法、解密方法及相应装置 |
CN111240654A (zh) * | 2020-01-03 | 2020-06-05 | 福建天晴在线互动科技有限公司 | 一种Python代码加固保护的方法及其系统 |
CN111368322A (zh) * | 2020-03-11 | 2020-07-03 | 中电科(天津)网络信息安全有限公司 | 一种文件解密方法、装置、电子设备和存储介质 |
-
2021
- 2021-05-28 CN CN202110606468.5A patent/CN113360859B/zh active Active
Patent Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6490353B1 (en) * | 1998-11-23 | 2002-12-03 | Tan Daniel Tiong Hok | Data encrypting and decrypting apparatus and method |
CN103186731A (zh) * | 2011-12-29 | 2013-07-03 | 北京中文在线数字出版股份有限公司 | 一种混合方式的数字版权保护方法和系统 |
CN106453410A (zh) * | 2016-11-28 | 2017-02-22 | 上海摩软通讯技术有限公司 | 数据传输方法及数据传输装置 |
CN106599628A (zh) * | 2016-12-08 | 2017-04-26 | 合肥康捷信息科技有限公司 | 一种基于模块钩子的Python字节码文件保护方法 |
CN107086915A (zh) * | 2017-05-25 | 2017-08-22 | 山东浪潮商用系统有限公司 | 一种数据传输方法、数据发送端及数据接收端 |
CN107026873A (zh) * | 2017-05-31 | 2017-08-08 | 重庆大学 | 一种基于椭圆曲线算法的加解密方法及系统 |
CN108769740A (zh) * | 2018-06-05 | 2018-11-06 | 苏州科达科技股份有限公司 | 视频数据加密传输方法、系统、设备及存储介质 |
CN109005196A (zh) * | 2018-09-10 | 2018-12-14 | 北京旷视科技有限公司 | 数据传输方法、数据解密方法、装置及电子设备 |
CN110009346A (zh) * | 2019-03-11 | 2019-07-12 | 巍乾全球技术有限责任公司 | 用于拆分和恢复密钥的方法、程序产品、存储介质和系统 |
CN110826097A (zh) * | 2019-10-29 | 2020-02-21 | 维沃移动通信有限公司 | 一种数据处理方法及电子设备 |
CN111159757A (zh) * | 2019-12-18 | 2020-05-15 | 成都烽创科技有限公司 | 文件加密方法、解密方法及相应装置 |
CN111240654A (zh) * | 2020-01-03 | 2020-06-05 | 福建天晴在线互动科技有限公司 | 一种Python代码加固保护的方法及其系统 |
CN111368322A (zh) * | 2020-03-11 | 2020-07-03 | 中电科(天津)网络信息安全有限公司 | 一种文件解密方法、装置、电子设备和存储介质 |
Non-Patent Citations (1)
Title |
---|
一种有效的Python字节码保护方法;陈悟等;《电子技术》;20170625(第06期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN113360859A (zh) | 2021-09-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Salam et al. | Implementation of searchable symmetric encryption for privacy-preserving keyword search on cloud storage | |
CN111475824B (zh) | 数据访问方法、装置、设备和存储介质 | |
US20140143553A1 (en) | Method and Apparatus for Encapsulating and Encrypting Files in Computer Device | |
CN105681039A (zh) | 用于生成密钥及对应解密的方法和设备 | |
CN106971121A (zh) | 数据处理方法、装置、服务器及存储介质 | |
CN110768784B (zh) | 密码传输方法、装置、计算机设备和存储介质 | |
CN106776904A (zh) | 一种不可信云计算环境中支持动态验证的模糊查询加密方法 | |
US20220216999A1 (en) | Blockchain system for supporting change of plain text data included in transaction | |
CN109936546B (zh) | 数据加密存储方法和装置以及计算设备 | |
CN111010266B (zh) | 消息的加解密、读写方法、装置、计算机设备和存储介质 | |
WO2014141802A1 (ja) | 情報処理装置、情報処理システム、および情報処理方法、並びにプログラム | |
CN113987557A (zh) | 一种文件加密处理方法、系统、电子设备和存储介质 | |
CN109614774B (zh) | 一种基于sgx的程序控制流混淆方法及系统 | |
CN115795538B (zh) | 脱敏文档的反脱敏方法、装置、计算机设备和存储介质 | |
KR20220092811A (ko) | 암호화 데이터를 저장하는 방법 및 장치 | |
KR101346284B1 (ko) | 암호화 파일의 생성 방법 및 해독 방법과 이 방법을 실행시키기 위한 프로그램을 기록한 컴퓨터로 판독 가능한 기록 매체 | |
CN114372284A (zh) | 一种安全计算机的用户数据保护方法 | |
CN111104693A (zh) | 一种Android平台软件数据破解方法、终端设备及存储介质 | |
CN113360859B (zh) | 基于Python解释器的加密文件安全控制方法和装置 | |
KR102602189B1 (ko) | 클라우드 기반의 문서 공유 서비스를 운영하기 위한 문서 공유 서비스 서버 및 그 동작 방법 | |
US9537842B2 (en) | Secondary communications channel facilitating document security | |
CN114201774A (zh) | 主键加密方法、主键解密方法、电子设备及存储介质 | |
JP4338185B2 (ja) | ファイルの暗号化・復号方法 | |
US11568070B2 (en) | Secure access control processes | |
KR102417811B1 (ko) | 개인 정보 보호 기능을 갖는 문서 번역 서비스를 제공하는 문서 번역 서비스 서버 및 그 동작 방법 |
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 |