如何使用Cython對python代碼進(jìn)行加密
Cython是屬于PYTHON的超集,他首先會將PYTHON代碼轉(zhuǎn)化成C語言代碼,然后通過c編譯器生成可執(zhí)行文件。優(yōu)勢:資源豐富,適合快速開發(fā)。翻譯成C后速度比較快,在windows環(huán)境中用cython加密后的文件后綴是pyd文件,在linux環(huán)境中加密后的問題后綴是so文件,下面以linux環(huán)境作為演示
環(huán)境準(zhǔn)備
- 系統(tǒng)環(huán)境:centos 7
- Python版本:python3.x
- 需要的第三方包:cython
加密代碼部分
encryption.py
from distutils.core import setup
from Cython.Build import cythonize
setup(ext_modules = cythonize(["Jruing.py"])) # 列表中是要加密的文件名
要加密的代碼部分
Jruing.py
def hello_world():
print("hello world!?。?)
將以上代碼保存為encryption.py,在命令行中輸入python encryption.py build_ext,它會在encryption.py這個文件的當(dāng)前路徑下生成build文件夾,build/lib-*/Jruing-*.so (“*”部分代表的是Python版本等一系列信息,這個不重要,windows環(huán)境會在同樣的目錄下生成Jruing-*.pyd文件),我們可以把這個so文件直接重命名為Jruing.so
調(diào)用加密后的文件中的函數(shù)
我們進(jìn)入到so文件所在的目錄,編寫一個調(diào)用hello_world的程序
from Jruing import hello_world # Jruing為so文件的文件名
hello_world()
加密Flask Web服務(wù)
flask 文件一般會創(chuàng)建一個app對象,它啟動也是通過這個app對象去啟動的,直接加密會加密成功,但是執(zhí)行會出現(xiàn)問題,我們可以在調(diào)用文件中導(dǎo)入app對象,然后app.run()啟動就可以了,具體操作如下
一個flask web服務(wù)Demo
flask_demo.py
from flask import Flask
app = 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 Flask
app = Flask(__name__)
@app.route('/',methods=['GET'])
def root():
return "hello world"
用上面提到的方法對flask_demo_test.py文件進(jìn)行加密
調(diào)用flask_demo_test.py啟動服務(wù)
from flask_demo_test import app
app.run(host='127.0.0.1',port=5000)
這樣就好了!?。?!
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
python函數(shù)式編程學(xué)習(xí)之yield表達(dá)式形式詳解
這篇文章主要給大家介紹了關(guān)于python函數(shù)式編程學(xué)習(xí)之yield表達(dá)式形式的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用python具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起看看吧。2018-03-03
python設(shè)計tcp數(shù)據(jù)包協(xié)議類的例子
今天小編就為大家分享一篇python設(shè)計tcp數(shù)據(jù)包協(xié)議類的例子,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-07-07
Python Django 頁面上展示固定的頁碼數(shù)實現(xiàn)代碼
這篇文章主要介紹了Python Django 頁面上展示固定的頁碼數(shù)實現(xiàn)代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-08-08
C# DataGridView行列轉(zhuǎn)換的具體實現(xiàn)
本文主要介紹了C# DataGridView行列轉(zhuǎn)換的具體實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02
Windows環(huán)境下Python3.6.8 importError: DLLload failed:找不到指定的模塊
這篇文章主要介紹了Windows環(huán)境下Python3.6.8 importError: DLLload failed:找不到指定的模塊,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11

