最近項目需要對部分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文件名一致,只是後綴不同,然後可將生成的其他文件刪除。