爲你的Python程序加密

在實際的工做中,有時候咱們須要部署本身的Python應用,但這時候咱們並不但願別人可以看到本身的Python源程序。所以,咱們須要爲本身的源代碼進行加密,Python已經爲咱們提供了這樣一套工做機制。python

第一種加密Python源代碼的方式,是將.py文件轉化爲.pyc文件,但這種加密方式很容易被反編譯,所以實用性並不高。工具

第二種加密Python源代碼的方式,是將.py文件轉化爲.so文件,這樣加密的可靠性很是高,沒法被被人破解,也就很好地保護了源代碼。測試

本文以Linux系統(Ubuntu)爲例,講解如何將本身的Python程序(.py文件)加密爲.so文件。ui

首先,咱們須要在Ubuntu系統中安裝一些準備工具,包括python3-dev,gcc,Cython,其中Cython爲Python的第三方模塊。安裝的命令以下:加密

接着,咱們新建pythontest文件夾,用於測試咱們的代碼,文件夾的內容以下:命令行

其中,mytest.py爲咱們須要加密的Python程序,setup.py爲加密的腳本。mytest.py的代碼以下:blog

加密腳本setup.py的代碼以下:部署

測試代碼so_test.py的代碼以下:編譯

切換至pythontest文件夾,先運行so_test.py腳本(爲了顯示時間,便於跟後面的程序區分),再運行setup.py對mytest.py程序加密,命令以下:test

輸出以下:

運行完加密命令行(python3 setup.py build_ext)後,文件夾中的文件以下:

在build文件夾中,有咱們須要的so文件,以下:

生成的so文件一方面對咱們的源程序進行了加密,另外一方面,咱們還能繼續調用原來的mytest.py文件中的內容。爲了驗證此功能,咱們先刪除mytest.py,再運行so_test.py文件,以下:

能夠發現,咱們刪除了mytest.py文件,即源代碼,但so_test.py文件能夠正常調用源程序的內容,這是由於,兩次運行so_test.py的輸出時間不同。

總結:在實際的工做中,咱們能夠按照上面的方法將.py程序加密爲.so文件,固然也能夠寫個腳本實現更復雜的功能。本次的文章僅做爲展現,但願可以給讀者一些啓發~

相關文章
相關標籤/搜索