如何使用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中glob模块查找文件路径的用法
Jul 05 Python
python实现多线程抓取知乎用户
Dec 12 Python
基于Python __dict__与dir()的区别详解
Oct 30 Python
K-means聚类算法介绍与利用python实现的代码示例
Nov 13 Python
在Python中将函数作为另一个函数的参数传入并调用的方法
Jan 22 Python
Python字典生成式、集合生成式、生成器用法实例分析
Jan 07 Python
tensorflow 实现打印pb模型的所有节点
Jan 23 Python
Python中openpyxl实现vlookup函数的实例
Oct 28 Python
python 根据列表批量下载网易云音乐的免费音乐
Dec 03 Python
一行代码python实现文件共享服务器
Apr 22 Python
Python可变与不可变数据和深拷贝与浅拷贝
Apr 06 Python
Python sklearn分类决策树方法详解
Sep 23 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 fsockopen写的HTTP下载的类
2007/02/22 PHP
PHP内核介绍及扩展开发指南―基础知识
2011/09/11 PHP
php实现查询百度google收录情况(示例代码)
2013/08/02 PHP
JSON两种结构之对象和数组的理解
2016/07/19 PHP
laravel excel 上传文件保存到本地服务器功能
2019/11/14 PHP
CSS中简写属性要注意TRouBLe的顺序问题(避免踩坑)
2021/03/09 HTML / CSS
Firebug入门指南(Firefox浏览器)
2010/08/21 Javascript
基于JavaScript 数据类型之Boolean类型分析介绍
2013/04/19 Javascript
jquery分页对象使用示例
2014/04/01 Javascript
Vue.js基础学习之class与样式绑定
2017/03/20 Javascript
AngularJS中$http的交互问题
2017/03/29 Javascript
JS自动生成动态HTML验证码页面
2017/06/14 Javascript
原生JS上传大文件显示进度条 php上传文件代码
2020/03/27 Javascript
vue中过滤器filter的讲解
2019/01/21 Javascript
Vue中通过Vue.extend动态创建实例的方法
2019/08/13 Javascript
[01:01:31]2018DOTA2亚洲邀请赛3月29日小组赛B组 Mineski VS paiN
2018/03/30 DOTA
Python中用于转换字母为小写的lower()方法使用简介
2015/05/19 Python
Python实现控制台中的进度条功能代码
2017/12/22 Python
Python基于递归实现电话号码映射功能示例
2018/04/13 Python
python 绘制拟合曲线并加指定点标识的实现
2019/07/10 Python
django数据关系一对多、多对多模型、自关联的建立
2019/07/24 Python
在macOS上搭建python环境的实现方法
2019/08/13 Python
Python pyautogui模块实现鼠标键盘自动化方法详解
2020/02/17 Python
Python爬虫如何应对Cloudflare邮箱加密
2020/06/24 Python
python时间序列数据转为timestamp格式的方法
2020/08/03 Python
全球速卖通巴西站点:Aliexpress巴西
2016/08/24 全球购物
美国皮靴公司自1863年:The Frye Company
2016/11/30 全球购物
美国第一香水网站:Perfume.com
2017/01/23 全球购物
婚鞋、新娘鞋、礼服鞋、童鞋:Nina Shoes
2019/09/04 全球购物
都柏林通行卡/城市通票:The Dublin Pass
2020/02/16 全球购物
软件工程师面试题
2012/06/25 面试题
2014年秋季开学典礼致辞
2014/08/02 职场文书
2014派出所所长群众路线对照检查材料思想汇报
2014/09/18 职场文书
民主生活会发言材料
2014/10/20 职场文书
PHP策略模式写法
2021/04/01 PHP
python中 Flask Web 表单的使用方法
2022/05/20 Python