如何使用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实现汉诺塔方法汇总
Jul 25 Python
书单|人生苦短,你还不用python!
Dec 29 Python
python中使用PIL制作并验证图片验证码
Mar 15 Python
对python 生成拼接xml报文的示例详解
Dec 28 Python
利用django+wechat-python-sdk 创建微信服务器接入的方法
Feb 20 Python
Python3中列表list合并的四种方法
Apr 19 Python
Python使用Pandas库实现MySQL数据库的读写
Jul 06 Python
python3 实现爬取TOP500的音乐信息并存储到mongoDB数据库中
Aug 24 Python
python读取Excel表格文件的方法
Sep 02 Python
python操作gitlab API过程解析
Dec 27 Python
python库skimage给灰度图像染色的方法示例
Apr 27 Python
python爬虫看看虎牙女主播中谁最“顶”步骤详解
Dec 01 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 多行多列显示
2009/08/15 PHP
phpmyadmin3 安装配置图解教程
2012/03/29 PHP
php后退一页表单内容保存实现方法
2012/06/17 PHP
Zend的MVC机制使用分析(二)
2013/05/02 PHP
PHP动态页生成静态页的3种常用方法
2014/11/13 PHP
php文件上传的两种实现方法
2016/04/04 PHP
php实现和c#一致的DES加密解密实例
2017/07/24 PHP
PHP内置函数生成随机数实例
2019/01/18 PHP
jQuery的运行机制和设计理念分析
2011/04/05 Javascript
jQuery 中使用JSON的实现代码
2011/12/01 Javascript
JavaScript基本编码模式小结
2012/05/23 Javascript
通过一段代码简单说js中的this的使用
2013/07/23 Javascript
js中一个函数获取另一个函数返回值问题探讨
2013/11/21 Javascript
jQuery产品间断向下滚动效果核心代码
2014/05/08 Javascript
bootstrap Table插件使用demo
2017/08/07 Javascript
vue使用iframe嵌入网页的示例代码
2020/06/09 Javascript
Angular5.0 子组件通过service传递值给父组件的方法
2018/07/13 Javascript
浅谈vux之x-input使用以及源码解读
2018/11/04 Javascript
vue点击按钮动态创建与删除组件功能
2019/12/29 Javascript
python操作日期和时间的方法
2014/03/11 Python
详解Python中的type()方法的使用
2015/05/21 Python
Python+request+unittest实现接口测试框架集成实例
2018/03/16 Python
Python基础教程之异常详解
2019/01/10 Python
Python生命游戏实现原理及过程解析(附源代码)
2019/08/01 Python
基于python中__add__函数的用法
2019/11/25 Python
CSS3中的transform属性进行2D和3D变换的基本用法
2016/05/12 HTML / CSS
乐高积木玩具美国官网:LEGO Shop US
2016/09/16 全球购物
英国第一职业高尔夫商店:Clickgolf.co.uk
2020/11/18 全球购物
大二自我鉴定
2014/01/31 职场文书
岗位职责风险防控
2014/02/18 职场文书
开学寄语大全
2014/04/08 职场文书
运动员口号
2014/06/09 职场文书
工作作风懒散检讨书
2014/10/29 职场文书
2014年检验科工作总结
2014/11/22 职场文书
医生行业员工的辞职信
2019/06/24 职场文书
创业计划书之农家乐
2019/10/09 职场文书