如何使用Cython对python代码进行加密


Posted in Python onJuly 08, 2020

Cython是属于PYTHON的超集,他首先会将PYTHON代码转化成C语言代码,然后通过c编译器生成可执行文件。优势:资源丰富,适合快速开发。翻译成C后速度比较快,在windows环境中用cython加密后的文件后缀是pyd文件,在linux环境中加密后的问题后缀是so文件,下面以linux环境作为演示

环境准备

  • 系统环境: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这个文件的当前路径下生成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 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文件进行加密

调用flask_demo_test.py启动服务

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

这样就好了!!!!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中random模块生成随机数详解
Mar 10 Python
简单学习Python多进程Multiprocessing
Aug 29 Python
Python实现学生成绩管理系统
Apr 05 Python
Tensorflow 利用tf.contrib.learn建立输入函数的方法
Feb 08 Python
基于Django与ajax之间的json传输方法
May 29 Python
kali中python版本的切换方法
Jul 11 Python
TensorFlow2.0:张量的合并与分割实例
Jan 19 Python
python对一个数向上取整的实例方法
Jun 18 Python
python如何运行js语句
Sep 09 Python
python安装第三方库如xlrd的方法
Oct 31 Python
Python用摘要算法生成token及检验token的示例代码
Dec 01 Python
在NumPy中深拷贝和浅拷贝相关操作的定义和背后的原理
Apr 14 Python
python中的错误如何查看
Jul 08 #Python
获取python运行输出的数据并解析存为dataFrame实例
Jul 07 #Python
利用keras使用神经网络预测销量操作
Jul 07 #Python
Python Mock模块原理及使用方法详解
Jul 07 #Python
opencv 图像礼帽和图像黑帽的实现
Jul 07 #Python
PyTorch: Softmax多分类实战操作
Jul 07 #Python
opencv 形态学变换(开运算,闭运算,梯度运算)
Jul 07 #Python
You might like
php 删除记录同时删除图片文件的实现代码
2010/05/12 PHP
PHP判断文件是否存在、是否可读、目录是否存在的代码
2012/10/03 PHP
深入理解PHP之源码目录结构与功能说明
2016/06/01 PHP
php 二维数组快速排序算法的实现代码
2017/10/17 PHP
PHP简单实现防止SQL注入的方法
2018/03/13 PHP
Laravel 微信小程序后端搭建步骤详解
2019/11/26 PHP
js使用正则实现ReplaceAll全部替换的方法
2014/07/18 Javascript
jQuery级联操作绑定事件实例
2014/09/02 Javascript
一款由jquery实现的整屏切换特效
2014/09/15 Javascript
详解JavaScript的流程控制语句
2015/11/30 Javascript
原生js的RSA和AES加密解密算法
2016/10/08 Javascript
详解jQuery中基本的动画方法
2016/12/14 Javascript
vue构建单页面应用实战
2017/04/10 Javascript
iscroll-probe实现下拉刷新和下拉加载效果
2017/06/28 Javascript
微信小程序报错:this.setData is not a function的解决办法
2017/09/27 Javascript
vue中父子组件传值,解决钩子函数mounted只运行一次的操作
2020/07/27 Javascript
[02:48]DOTA2超级联赛专访海涛:你们的选择没有错
2013/06/07 DOTA
python如何拆分含有多种分隔符的字符串
2018/03/20 Python
Python: 传递列表副本方式
2019/12/19 Python
Python将字典转换为XML的方法
2020/08/01 Python
关于python3.9安装wordcloud出错的问题及解决办法
2020/11/02 Python
matplotlib绘制鼠标的十字光标的实现(内置方式)
2021/01/06 Python
初探CSS3中的calc()功能
2015/07/14 HTML / CSS
世界第一曲奇连锁店:Mrs. Fields Cookies
2017/02/04 全球购物
日语专业毕业生求职信
2013/12/04 职场文书
政法大学毕业生自荐信范文
2014/01/01 职场文书
2014年大学生党课心得体会范文
2014/03/29 职场文书
房屋租赁协议书
2014/04/10 职场文书
励志演讲稿300字
2014/08/21 职场文书
信仰心得体会
2014/09/05 职场文书
自主招生专家推荐信
2015/03/26 职场文书
员工拾金不昧表扬稿
2015/05/05 职场文书
《语言的突破》读后感3篇
2019/12/12 职场文书
vue实现水波涟漪效果的点击反馈指令
2021/05/31 Vue.js
教你如何使用Python Tkinter库制作记事本
2021/06/10 Python
MySQL深度分页(千万级数据量如何快速分页)
2021/07/25 MySQL