如何使用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面向对象特殊成员
Apr 24 Python
python 多线程中子线程和主线程相互通信方法
Nov 09 Python
python读取csv和txt数据转换成向量的实例
Feb 12 Python
python SQLAlchemy 中的Engine详解
Jul 04 Python
Python考拉兹猜想输出序列代码实践
Jul 05 Python
wxPython实现文本框基础组件
Nov 18 Python
Pytorch Tensor基本数学运算详解
Dec 30 Python
Python通过TensorFLow进行线性模型训练原理与实现方法详解
Jan 15 Python
简单了解python调用其他脚本方法实例
Mar 26 Python
django使用JWT保存用户登录信息
Apr 22 Python
如何基于windows实现python定时爬虫
May 01 Python
python常量折叠基础知识点讲解
Feb 28 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网页游戏学习之Xnova(ogame)源码解读(十三)
2014/06/26 PHP
是 WordPress 让 PHP 更流行了 而不是框架
2016/02/03 PHP
关于javascript document.createDocumentFragment()
2009/04/04 Javascript
javascript 匿名函数的理解(透彻版)
2010/01/28 Javascript
jquery实现div阴影效果示例代码
2013/09/16 Javascript
JS验证邮箱格式是否正确的代码
2013/12/05 Javascript
Javascript中的关键字和保留字整理
2014/10/16 Javascript
Javascript数组Array基础介绍
2016/03/13 Javascript
分享javascript实现的冒泡排序代码并优化
2016/06/05 Javascript
jQuery插件FusionCharts实现的MSBar2D图效果示例【附demo源码】
2017/03/24 jQuery
JS中的数组转变成JSON格式字符串的方法
2017/05/09 Javascript
Web技术实现移动监测的介绍
2017/09/18 Javascript
解读vue生成的文件目录结构及说明
2017/11/27 Javascript
快速了解vue-cli 3.0 新特性
2018/02/28 Javascript
通过一次报错详细谈谈Point事件
2018/05/17 Javascript
vue+webpack中配置ESLint
2018/11/07 Javascript
vue 如何使用递归组件
2020/10/23 Javascript
[48:48]VGJ.T vs Liquid 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
python机器学习之神经网络(一)
2017/12/20 Python
python fuzzywuzzy模块模糊字符串匹配详细用法
2019/08/29 Python
Python log模块logging记录打印用法解析
2020/01/20 Python
css3 自定义字体font-face使用介绍
2014/05/14 HTML / CSS
NBA欧洲商店(英国):NBA Europe Store UK
2018/07/27 全球购物
abstract class和interface有什么区别?
2012/01/03 面试题
与UNIX有关的几个名词
2015/09/17 面试题
商务日语专业毕业生求职信
2013/10/26 职场文书
关于赌博的检讨书
2014/01/08 职场文书
给孩子的新年寄语
2014/04/08 职场文书
幼儿园安全教育月活动总结
2015/05/08 职场文书
2015年加油站工作总结
2015/05/13 职场文书
党组织关系的介绍信模板
2019/06/21 职场文书
修辞手法有哪些?
2019/08/29 职场文书
golang中的空slice案例
2021/04/27 Golang
浅谈 JavaScript 沙箱Sandbox
2021/11/02 Javascript
python实现学生信息管理系统(面向对象)
2022/06/05 Python
MySQL分布式恢复进阶
2022/07/23 MySQL