溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

使用Cython對(duì)python代碼進(jìn)行加密的方法

發(fā)布時(shí)間:2020-07-09 10:57:13 來源:億速云 閱讀:516 作者:清晨 欄目:開發(fā)技術(shù)

這篇文章主要介紹使用Cython對(duì)python代碼進(jìn)行加密的方法,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

Cython是屬于PYTHON的超集,他首先會(huì)將PYTHON代碼轉(zhuǎn)化成C語言代碼,然后通過c編譯器生成可執(zhí)行文件。優(yōu)勢(shì):資源豐富,適合快速開發(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,它會(huì)在encryption.py這個(gè)文件的當(dāng)前路徑下生成build文件夾,build/lib-*/Jruing-*.so (“*”部分代表的是Python版本等一系列信息,這個(gè)不重要,windows環(huán)境會(huì)在同樣的目錄下生成Jruing-*.pyd文件),我們可以把這個(gè)so文件直接重命名為Jruing.so

調(diào)用加密后的文件中的函數(shù)

我們進(jìn)入到so文件所在的目錄,編寫一個(gè)調(diào)用hello_world的程序

from Jruing import hello_world # Jruing為so文件的文件名
hello_world()

加密Flask Web服務(wù)

flask 文件一般會(huì)創(chuàng)建一個(gè)app對(duì)象,它啟動(dòng)也是通過這個(gè)app對(duì)象去啟動(dòng)的,直接加密會(huì)加密成功,但是執(zhí)行會(huì)出現(xiàn)問題,我們可以在調(diào)用文件中導(dǎo)入app對(duì)象,然后app.run()啟動(dòng)就可以了,具體操作如下

一個(gè)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"

用上面提到的方法對(duì)flask_demo_test.py文件進(jìn)行加密

調(diào)用flask_demo_test.py啟動(dòng)服務(wù)

from flask_demo_test import app
app.run(host='127.0.0.1',port=5000)

這樣就好了?。。。?/p>

以上是使用Cython對(duì)python代碼進(jìn)行加密的方法的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI