在實際的工作中,有時候我們需要部署自己的python應用,但這時候我們並不希望別人能夠看到自己的python源程式。因此,我們需要為自己的源**進行加密,python已經為我們提供了這樣一套工作機制。
第一種加密python源**的方式,是將.py檔案轉化為.pyc檔案,但這種加密方式很容易被反編譯,因此實用性並不高。
第二種加密python源**的方式,是將.py檔案轉化為.so檔案,這樣加密的可靠性非常高,無法被被人破解,也就很好地保護了源**。
本文以linux系統(ubuntu)為例,講解如何將自己的python程式(.py檔案)加密為.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 datetime
class today():
def get_time(self):
print(datetime.datetime.now())
def say(self):
print("hello from jc!")
加密指令碼setup.py的**如下:
from distutils.core import setup
from cython.build import cythonize
setup(ext_modules = cythonize(["mytest.py"]))
測試**so_test.py的**如下:
from mytest import today
t = today()
t.get_time()
t.say()
切換至pythontest資料夾,先執行so_test.py指令碼(為了顯示時間,便於跟後面的程式區分),再執行setup.py對mytest.py程式加密,命令如下:
$ python3 so_test.py
$ python3 setup.py build_ext
輸出如下:
2019-01-18 21:15:21.126709
hello from jc!
執行完加密命令列(python3 setup.py build_ext)後,資料夾中的檔案如下:
在build資料夾中,有我們需要的so檔案,如下:
生成的so檔案一方面對我們的源程式進行了加密,另一方面,我們還能繼續呼叫原來的mytest.py檔案中的內容。為了驗證此功能,我們先刪除mytest.py,再執行so_test.py檔案,如下:
可以發現,我們刪除了mytest.py檔案,即源**,但so_test.py檔案可以正常呼叫源程式的內容,這是因為,兩次執行so_test.py的輸出時間不一樣。
zip 偽加密 Python處理指令碼
乙個zip檔案沒有設定密碼,但是你可以讓它看起來有密碼 原理 加密標誌位在general purpose bit flag中,從後向前數,第乙個bit為1,表示有加密 查詢zip的加密標誌位,將其置為0即可恢復 4.3.7 local file header local file header si...
資源加密和指令碼加密
指令碼加密主要是用cocos2dx自帶的加密方法,把js指令碼轉換成jsc二進位制檔案。主要是利用cocos jscompile命令進行轉換可以輸入cocos jscompile h檢視一下主要功能 usage cocos jscompile h v s src dir arr d dst dir ...
shell 指令碼加密
第一種方法 gzexe 這種加密方式不是非常保險的方法,但是能夠滿足一般的加密用途,可以隱蔽指令碼中的密碼等資訊。它是使用系統自帶的gzexe程式,它不但加密,同時壓縮檔案。使用方法 gzexe file.sh 它會把原來沒有加密的檔案備份為 file.sh 同時 file.sh 即被變成加密檔案 ...