加密代码片段样例
文件名:iter_n.py
import time
def iter_from_n(n):
list_n = []
for index,value in enumerate(range(n)):
list_n.append([index,value])
return list_n
if __name__=="__main__":
t1 = time.time()
iter_from_n(100000)
t2 = time.time()
print ("花费时间:{}".format(t2-t1))
0. 直接执行py文件
命令:python iter_n.py
1.pyc加密
命令:python -m compileall [目录|文件.py]
命令:python iter_n.cpython-37.pyc
说明:无法直接调用内部封装模块
2.pyd加密
2.1 Cython加密
pip install Cython==0.29.22
gcc相关环境编译相关文件
setup.py文件
from distutils.core import setup
from Cython.Build import cythonize
setup(name='iter_n',
ext_modules=cythonize('iter_n.py'))
2.1.1 编译命令
python setup.py build_ext --inplace
2.1.2 编译命令
python setup.py [build|build_ext]
python setup.py install
2.2 easycython加密
pip install easycython
2.2.1 编译命令
easycython iter_n.py
2.2.2 编译命令
easycython iter_n.pyx
2.3 模块使用
2.3.1 生成pyd文件
2.3.2 模块调用
test.py
from iter_n import iter_from_n
print (iter_from_n(10))
3.py2exe
pip install py2exe
setup.py文件
#coding=utf-8
from distutils.core import setup
import py2exe
options = {"py2exe":
{
"compressed": 1, #压缩
"optimize": 2,
"ascii": 1,
"bundle_files": 1 #所有文件打包成一个exe文件
}
}
setup (
options = options,
zipfile=None, #不生成library.zip文件
console=[{"script": "iter_n .py", 'icon_resources': [(1, 'icon.ico')] }]#源文件,程序图标
)
3.1 编译命令
python setup.py py2exe
4.pyinstaller
pip install pyinstaller
常用参数:
–icon=图标路径
-F 打包成一个exe文件
-w 使用窗口,无控制台
-c 使用控制台,无窗口
-D 创建一个目录,里面包含exe以及其他一些依赖性文件
pyinstaller -h 来查看参数
pyinstaller -F -w -i icon.ico iter_n .py
5.pyarmor
pip install pyarmor
5.1pyarmor加密
pyarmor obfuscate --recursive [目录|文件.py]
5.2 设置使用日期
5.2.1 生成日期许可证
pyarmor licenses --expired 2024-01-01 目录
5.2.2 生成日期许可证
pyarmor obfuscate --recursive --with-license licenses/r001/license.lic iter_n.py
5.3加密后的文件
5.4 模块调用
test.py
from iter_n import iter_from_n
print (iter_from_n(10))