Python代码加密,将python文件编译成so文件
Python程序(.py文件)是公開的,容易被別人拿去使用,為了更好保護知識產權,可以對python文件加密為.so文件。
首先,我們需要在Ubuntu系統中安裝一些準備工具,包括python3-dev,gcc,Cython,其中Cython為Python的第三方模塊。安裝的命令如下:
sudo apt install python3-dev gcc pip3 install cython接著,我們新建pythontest文件夾,用于測試我們的代碼,文件夾的內容如下:
?
其中,mytest.py為我們需要加密的Python程序,setup.py為加密的腳本。mytest.py的代碼如下:
import datetimeclass Today():def get_time(self):print(datetime.datetime.now())def say(self):print("hello from Domi!")加密腳本setup.py的代碼如下:
from distutils.core import setup from Cython.Build import cythonizesetup(ext_modules=cythonize(["mytest.py"]))測試代碼so_test.py的代碼如下:
from distutils.core import setup from Cython.Build import cythonizesetup(ext_modules=cythonize(["mytest.py"]))切換至pythontest文件夾,先運行so_test.py腳本(為了顯示時間,便于跟后面的程序區分),再運行setup.py對mytest.py程序加密,命令如下:
python3 so_test.pypython3 setup.py build_ext在build文件夾中,有我們需要的so文件,/home/pi/so_test/build/lib.linux-armv7l-3.7文件夾
生成的so文件一方面對我們的源程序進行了加密,另一方面,我們還能繼續調用原來的mytest.py文件中的內容。為了驗證此功能,我們先刪除mytest.py,再運行so_test.py文件,
可以發現,我們刪除了mytest.py文件,即源代碼,但so_test.py文件可以正常調用源程序的內容,這是因為,兩次運行so_test.py的輸出時間不一樣。
總結:在實際的工作中,我們可以按照上面的方法將.py程序加密為.so文件,當然也可以寫個腳本實現更復雜的功能。本次的文章僅作為展示,希望能夠給讀者一些啟發~
?
總結
以上是生活随笔為你收集整理的Python代码加密,将python文件编译成so文件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Matlab直线一级倒立摆控制方法研究
- 下一篇: Win10如何找出占用硬盘空间大的文件及