最近項目需要對部分python文件加密,調研了部分方法都覺得不可行,最后采用了將python轉換成so文件、pyd文件的方法。so文件,為liunx下的動態鏈接庫文件,在windows下為dll文件,pyd文件是Python的動態模塊,實質是dll文件,反編譯難度較大,應該可以達到加密的效果。
安裝Cpython,distutils
在需加密的文件的同一目錄下新建setup.py文件,內容加上:
from distutils.core import setup from Cython.Build import cythonize from distutils.extension import Extension #這里為文件名 extensions = [ Extension('pred_BA',['pred_BA.py']) ] setup(ext_modules=cythonize(extensions))
運行setup.py:
python setup.py build_ext
文件夾下會新增.c和bulid文件夾,build里面的lib文件夾下即為生成的pyd文件,將該文件替換py文件即可,記得pyd文件須與py文件名一致,只是后綴不同,然后可將生成的其他文件刪除。