如何使用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实现代码行数统计示例分享
Feb 10 Python
Python实现获取某天是某个月中的第几周
Feb 11 Python
浅谈Python中chr、unichr、ord字符函数之间的对比
Jun 16 Python
python3制作捧腹网段子页爬虫
Feb 12 Python
对pandas的dataframe绘图并保存的实现方法
Aug 05 Python
Django生成PDF文档显示在网页上以及解决PDF中文显示乱码的问题
Jul 04 Python
在Pytorch中使用样本权重(sample_weight)的正确方法
Aug 17 Python
python 上下文管理器及自定义原理解析
Nov 19 Python
Transpose 数组行列转置的限制方式
Feb 11 Python
基于python实现坦克大战游戏
Oct 27 Python
python中Array和DataFrame相互转换的实例讲解
Feb 03 Python
两行代码解决Jupyter Notebook中文不能显示的问题
Apr 24 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
《星际争霸重制版》兵种对比图鉴
2020/03/02 星际争霸
星际争霸任务指南——虫族
2020/03/04 星际争霸
遍历指定目录下的所有目录和文件的php代码
2011/11/27 PHP
PHP中操作ini配置文件的方法
2013/04/25 PHP
PHP实现中文圆形印章特效
2015/06/19 PHP
PHP使用imagick扩展实现合并图像的方法
2017/04/25 PHP
php readfile下载大文件失败的解决方法
2017/05/22 PHP
php7 图形用户界面GUI 开发示例
2020/02/22 PHP
一个小型js框架myJSFrame附API使用帮助
2008/06/28 Javascript
PHP配置文件php.ini中打开错误报告的设置方法
2015/01/09 PHP
原生js实现移动端瀑布流式代码示例
2015/12/18 Javascript
用原生js统计文本行数的简单示例
2016/08/19 Javascript
老生常谈jquery id选择器和class选择器的区别
2017/02/12 Javascript
详解node-ccap模块生成captcha验证码
2017/07/01 Javascript
JavaScript hasOwnProperty() 函数实例详解
2017/08/04 Javascript
vue实现分页组件
2020/06/16 Javascript
详解Nodejs get获取远程服务器接口数据
2019/03/26 NodeJs
微信小程序 冒泡事件原理解析
2019/09/27 Javascript
react quill中图片上传由默认转成base64改成上传到服务器的方法
2019/10/30 Javascript
Jquery属性的获取/设置及样式添加/删除操作技巧分析
2019/12/23 jQuery
Python闭包思想与用法浅析
2018/12/27 Python
Flask框架模板继承实现方法分析
2019/07/31 Python
pycharm下pyqt4安装及环境配置的教程
2020/04/24 Python
Python CategoricalDtype自定义排序实现原理解析
2020/09/11 Python
python 求两个向量的顺时针夹角操作
2021/03/04 Python
印度领先的在线时尚商店:Koovs
2016/08/28 全球购物
英国最专业的健身器材供应商之一:Best Gym Equipment
2017/12/22 全球购物
荷兰家电销售网站:Welhof
2020/12/08 全球购物
servlet面试题
2012/08/20 面试题
工伤赔偿协议书
2014/04/15 职场文书
公司法人授权委托书范本
2014/09/12 职场文书
单位工作证明
2014/10/07 职场文书
终止劳动合同证明书样本
2014/11/19 职场文书
故意伤害人身损害赔偿协议书
2014/11/19 职场文书
停电通知范文
2015/04/16 职场文书
python画条形图的具体代码
2022/04/20 Python