如何使用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实现设置windows桌面壁纸代码分享
Mar 28 Python
利用python打开摄像头及颜色检测方法
Aug 03 Python
python flask安装和命令详解
Apr 02 Python
django formset实现数据表的批量操作的示例代码
Dec 06 Python
python多项式拟合之np.polyfit 和 np.polyld详解
Feb 18 Python
Python任务自动化工具tox使用教程
Mar 17 Python
Python requests.post方法中data与json参数区别详解
Apr 30 Python
浅谈Python描述数据结构之KMP篇
Sep 06 Python
python如何停止递归
Sep 09 Python
Python进行特征提取的示例代码
Oct 15 Python
Python中用xlwt制作表格实例讲解
Nov 05 Python
python函数指定默认值的实例讲解
Mar 29 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 stream_get_meta_data返回值
2013/09/29 PHP
PHP使用Redis长连接的方法详解
2018/02/12 PHP
PHP基于递归算法解决兔子生兔子问题
2018/05/11 PHP
centos7上编译安装php7以php-fpm方式连接apache
2018/11/08 PHP
ThinkPHP5.1+Ajax实现的无刷新分页功能示例
2020/02/10 PHP
小议javascript 设计模式 推荐
2009/10/28 Javascript
Javascript模块化编程(一)AMD规范(规范使用模块)
2013/01/17 Javascript
js的.innerHTML = ""IE9下显示有错误的解决方法
2013/09/16 Javascript
JS动态添加与删除select中的Option对象(示例代码)
2013/12/20 Javascript
jquery用data方法获取某个元素上的事件
2014/06/23 Javascript
js判断某个字符出现的次数的简单实例
2016/06/03 Javascript
bootstrap与Jquery UI 按钮样式冲突的解决办法
2016/09/23 Javascript
基于canvas粒子系统的构建详解
2017/08/31 Javascript
vue.js+element-ui动态配置菜单的实例
2018/09/07 Javascript
从vue源码看props的用法
2019/01/09 Javascript
layui 关闭open弹出框 刷新table表格页面的方法
2019/09/16 Javascript
基于scrapy的redis安装和配置方法
2018/06/13 Python
Python 3.x 判断 dict 是否包含某键值的实例讲解
2018/07/06 Python
浅析Python函数式编程
2018/10/06 Python
numpy和pandas中数组的合并、拉直和重塑实例
2019/06/28 Python
python实现操作文件(文件夹)
2019/10/31 Python
python 实现dict转json并保存文件
2019/12/05 Python
Python列表操作方法详解
2020/02/09 Python
在tensorflow以及keras安装目录查询操作(windows下)
2020/06/19 Python
JSP和EJB可以共享HttpSession么?EJB里面可以改变session里面的内容
2013/06/05 面试题
英语专业毕业生自荐信
2013/10/28 职场文书
给老婆的婚前保证书
2014/02/01 职场文书
优良学风班申请材料
2014/02/13 职场文书
四风专项整治工作情况汇报
2014/10/28 职场文书
安全事故隐患排查治理制度
2015/08/05 职场文书
给领导敬酒词
2015/08/12 职场文书
受欢迎的自荐信,就这么写!
2019/04/19 职场文书
pandas取dataframe特定行列的实现方法
2021/05/24 Python
Python标准库之typing的用法(类型标注)
2021/06/02 Python
Java 超详细讲解IO操作字节流与字符流
2022/03/25 Java/Android
SQL Server2019安装的详细步骤实战记录(亲测可用)
2022/06/10 SQL Server