如何使用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实现图片处理和特征提取详解
Nov 13 Python
利用python实现简单的邮件发送客户端示例
Dec 23 Python
Python基于lxml模块解析html获取页面内所有叶子节点xpath路径功能示例
May 16 Python
基于Python函数和变量名解析
Jul 19 Python
详细介绍pandas的DataFrame的append方法使用
Jul 31 Python
python内存管理机制原理详解
Aug 12 Python
PYTHON绘制雷达图代码实例
Oct 15 Python
Django查询优化及ajax编码格式原理解析
Mar 25 Python
如何Tkinter模块编写Python图形界面
Oct 14 Python
python tqdm库的使用
Nov 30 Python
selenium自动化测试入门实战
Dec 21 Python
python3实现常见的排序算法(示例代码)
Jul 04 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
深入apache host的配置详解
2013/06/09 PHP
PHP中把有符号整型转换为无符号整型方法
2015/05/27 PHP
PDO::lastInsertId讲解
2019/01/29 PHP
jquery 仿QQ校友的DIV模拟窗口效果源码
2010/03/24 Javascript
JQuery中如何传递参数如click(),change()等具体实现
2013/04/28 Javascript
自己实现ajax封装示例分享
2014/04/01 Javascript
Java File类的常用方法总结
2015/03/18 Javascript
js实现类似菜单风格的TAB选项卡效果代码
2015/08/28 Javascript
Bootstrap3使用typeahead插件实现自动补全功能
2016/07/07 Javascript
JS实现图片点击后出现模态框效果
2017/05/03 Javascript
jQuery实现手势解锁密码特效
2017/08/14 jQuery
详解50行代码,Node爬虫练手项目
2019/04/22 Javascript
JavaScript基础之this和箭头函数详析
2019/09/05 Javascript
Jquery+AJAX实现无刷新上传并重命名文件操作示例【PHP后台接收】
2020/05/29 jQuery
在JavaScript中查找字符串中最长单词的三种方法(推荐)
2021/01/18 Javascript
k8s node节点重新加入master集群的实现
2021/02/22 Javascript
[50:28]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 Newbee vs KG
2018/04/01 DOTA
用Python脚本生成Android SALT扰码的方法
2013/09/18 Python
在Python的while循环中使用else以及循环嵌套的用法
2015/10/14 Python
django 按时间范围查询数据库实例代码
2018/02/11 Python
Python实现将数据框数据写入mongodb及mysql数据库的方法
2018/04/02 Python
Python中拆分字符串的操作方法
2019/07/23 Python
python2与python3爬虫中get与post对比解析
2019/09/18 Python
Python高级特性之闭包与装饰器实例详解
2019/11/19 Python
python中with用法讲解
2020/02/07 Python
Python无头爬虫下载文件的实现
2020/04/02 Python
英国最好的包装供应商:Priory Direct
2019/12/17 全球购物
幼儿园运动会加油词
2014/02/14 职场文书
就业协议书的作用
2014/04/11 职场文书
触电现场处置方案
2014/05/14 职场文书
心得体会的写法
2014/09/05 职场文书
企业反腐倡廉心得体会
2015/08/15 职场文书
《思路决定出路》读后感3篇
2019/12/11 职场文书
SONY600GR,国产收音机厂商永远的痛
2022/04/05 无线电
mysql数据库实现设置字段长度
2022/06/10 MySQL
Go中使用gjson来操作JSON数据的实现
2022/08/14 Golang