如何使用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自定义函数的创建、调用和函数的参数详解
Mar 11 Python
在Python中用has_key()方法查找键是否存在的教程
May 21 Python
Python实现的最近最少使用算法
Jul 10 Python
Python编程之字符串模板(Template)用法实例分析
Jul 22 Python
Python通过Pygame绘制移动的矩形实例代码
Jan 03 Python
python模块导入的细节详解
Dec 10 Python
Django框架实现的分页demo示例
May 25 Python
Python实现隐马尔可夫模型的前向后向算法的示例代码
Dec 31 Python
python argparse模块通过后台传递参数实例
Apr 20 Python
基于PyQT实现区分左键双击和单击
May 19 Python
利用keras使用神经网络预测销量操作
Jul 07 Python
python spilt()分隔字符串的实现示例
May 21 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对mongodb的扩展(初出茅庐)
2012/11/11 PHP
PHP用身份证号获取星座和生肖的方法
2013/11/07 PHP
php实现html标签闭合检测与修复方法
2015/07/09 PHP
yii2.0整合阿里云oss的示例代码
2017/09/19 PHP
juqery 学习之三 选择器 层级 基本
2010/11/25 Javascript
JavaScript高级程序设计(第3版)学习笔记4 js运算符和操作符
2012/10/11 Javascript
原生JS操作网页给p元素添加onclick事件及表格隔行变色
2013/12/01 Javascript
AngularJS基础 ng-keypress 指令简单示例
2016/08/02 Javascript
vue脚手架vue-cli的学习使用教程
2017/06/06 Javascript
AngularJS2 与 D3.js集成实现自定义可视化的方法
2017/12/01 Javascript
vue中的计算属性的使用和vue实例的方法示例
2017/12/04 Javascript
Angular使用动态加载组件方法实现Dialog的示例
2018/05/11 Javascript
微信小程序canvas实现刮刮乐效果
2018/07/09 Javascript
AngularJs1.x自定义指令独立作用域的函数传入参数方法
2018/10/09 Javascript
Vuex的基本概念、项目搭建以及入坑点
2018/11/04 Javascript
小程序实现单选多选功能
2018/11/04 Javascript
微信小程序下拉框功能的实例代码
2018/11/06 Javascript
js仿360开机效果
2019/12/26 Javascript
vue 获取元素额外生成的data-v-xxx操作
2020/09/09 Javascript
Vue与React的区别和优势对比
2020/12/18 Vue.js
Python实现从订阅源下载图片的方法
2015/03/11 Python
Python中条件判断语句的简单使用方法
2015/08/21 Python
Django框架教程之正则表达式URL误区详解
2018/01/28 Python
python logging日志模块以及多进程日志详解
2018/04/18 Python
Python GUI Tkinter简单实现个性签名设计
2018/06/19 Python
解决Python3 抓取微信账单信息问题
2019/07/19 Python
Jupyter notebook运行Spark+Scala教程
2020/04/10 Python
selenium自动化测试入门实战
2020/12/21 Python
python中pdb模块实例用法
2021/01/15 Python
Django实现简单的分页功能
2021/02/22 Python
使用before和:after伪类制作css3圆形按钮
2014/04/08 HTML / CSS
一款纯css3实现的响应式导航
2014/10/31 HTML / CSS
美国玩具公司:U.S.Toy
2018/05/19 全球购物
十八大感想感言
2014/02/10 职场文书
2014年家长学校工作总结
2014/11/20 职场文书
一篇文章了解正则表达式的替换技巧
2022/02/24 Javascript