方法: Cpython
优点: 生成的.so或.pyd文件难以破解。
缺点: 兼容性差,不同的操作系统,脚本可能要重新编译;部分函数不支持加密,这个时候想解决措施就比较艰难了。
实现: 将.py/.pyx编译成.c文件,再将.c文件编译成.so(UNIX)或.pyd(Windows)。
案例:
1) 编写文件 test.py,随后对这个文件加密:
def f(a,b):
c=a+b
print(c)
2) 编写 setup.py:
from distutils.core import setup
from Cython.Build import cythonize
setup(name='testhaha',
ext_modules=cythonize('test.py'))
3)编译为 .c,再进一步编译为 .so 或 .pyd:
python setup.py build_ext --inplace
没有执行这一句的时候文件夹:
执行中:
执行后:
4)删掉多余的文件后:
执行:
python -c "from test import f;f(4,5)"
参考资料: