如何使用Cython對python代碼進行加密
Cython是屬于PYTHON的超集,他首先會將PYTHON代碼轉化成C語言代碼,然后通過c編譯器生成可執行文件。優勢:資源豐富,適合快速開發。翻譯成C后速度比較快,在windows環境中用cython加密后的文件后綴是pyd文件,在linux環境中加密后的問題后綴是so文件,下面以linux環境作為演示
環境準備
系統環境:centos 7 Python版本:python3.x 需要的第三方包:cython加密代碼部分
encryption.py
from distutils.core import setupfrom Cython.Build import cythonizesetup(ext_modules = cythonize(['Jruing.py'])) # 列表中是要加密的文件名
要加密的代碼部分
Jruing.py
def hello_world(): print('hello world!!!')
將以上代碼保存為encryption.py,在命令行中輸入python encryption.py build_ext,它會在encryption.py這個文件的當前路徑下生成build文件夾,build/lib-*/Jruing-*.so (“*”部分代表的是Python版本等一系列信息,這個不重要,windows環境會在同樣的目錄下生成Jruing-*.pyd文件),我們可以把這個so文件直接重命名為Jruing.so
調用加密后的文件中的函數
我們進入到so文件所在的目錄,編寫一個調用hello_world的程序
from Jruing import hello_world # Jruing為so文件的文件名hello_world()
加密Flask Web服務
flask 文件一般會創建一個app對象,它啟動也是通過這個app對象去啟動的,直接加密會加密成功,但是執行會出現問題,我們可以在調用文件中導入app對象,然后app.run()啟動就可以了,具體操作如下
一個flask web服務Demo
flask_demo.py
from flask import Flaskapp = Flask(__name__)@app.route(’/’,methods=[’GET’])def root(): return 'hello world'if __name__ == ’__main__’: app.run(host=’127.0.0.1’,port=5000)
在加密之前我們把它改為
flask_demo_test.py
from flask import Flaskapp = Flask(__name__)@app.route(’/’,methods=[’GET’])def root(): return 'hello world'
用上面提到的方法對flask_demo_test.py文件進行加密
調用flask_demo_test.py啟動服務
from flask_demo_test import appapp.run(host=’127.0.0.1’,port=5000)
這樣就好了!!!!
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。
相關文章: