Django項目中所有.py 文件加密


1:如下是加密方法利用python的編譯包將Py文件 與pyc 文件之間相互轉換,

   這種方式不太安全, 反編譯成本太低

 

 1 import os
 2 
 3 
 4 class EncryptionProject:
 5 
 6     def __init__(self, file_path, file_type):
 7         self.filepath = file_path
 8         # 文件類型
 9         self.filetype = file_type
10 
11     def read_project(self):
12         # 文件所在路徑
13         filepath = os.getcwd() + self.filepath
14         encry_list = []
15         for dirpath, dirnames, files in os.walk(filepath):
16             if len(files) > 0:
17                 for i in files:
18                     if len(i) > 0:
19                         if i.split(".")[1] == self.filetype:
20                             encry_list.append(dirpath + "\\" + i)
21             else:
22                 if len(files) > 0:
23                     if files.split(".")[1] == self.filetype:
24                         encry_list.append(dirpath + "\\" + files)
25         return encry_list
26 
27     # 批量將 文件夾py 文件編譯為pyc 文件
28     def py_pyc(self):
29         import py_compile
30         encry_list = self.read_project()
31         for i in encry_list:
32             py_compile.compile(i)
33         return "加密成功"
34 
35     # 批量將 文件夾pyc 文件編譯為py 文件
36     def pyc_py(self):
37         import uncompyle6
38         encry_list = self.read_project()
39         for i in encry_list:
40             uncompyle6.decompile_file(i)
41         return "反編譯成功"
42 
43     # 批量將 文件夾py 文件編譯為.c 文件
44     def py_c(self):
45         from distutils.core import setup
46         from Cython.Build import cythonize
47         encry_list = self.read_project()
48         for i in encry_list:
49             setup(ext_modules=cythonize([i]))
50         return "加密成功"
51 
52 
53 if __name__ == "__main__":
54     file_path = "\\test\CIA_Test01"
55     file_type = 'py'
56     result = EncryptionProject(file_path, file_type).py_c()
57     print(result)

 

2: python 有一個第三方庫 jmpy3對上述流程進行了優化,支持單個文件和整個項目進行編譯,

  使用起來更加友好,加密生成pyd 文件,反編譯成本極高

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM