如何使用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之print详解
Sep 28 Python
Python实现从URL地址提取文件名的方法
May 15 Python
python如何获取服务器硬件信息
May 11 Python
python如何重载模块实例解析
Jan 25 Python
Win8.1下安装Python3.6提示0x80240017错误的解决方法
Jul 31 Python
Python操作Excel插入删除行的方法
Dec 10 Python
Python实现的排列组合、破解密码算法示例
Apr 12 Python
Python动态参数/命名空间/函数嵌套/global和nonlocal
May 29 Python
Python 复平面绘图实例
Nov 21 Python
PyQt5多线程刷新界面防假死示例
Dec 13 Python
pandas中的ExcelWriter和ExcelFile的实现方法
Apr 24 Python
Django --Xadmin 判断登录者身份实例
Jul 03 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 杂谈《重构-改善既有代码的设计》之四 简化条件表达式
2012/04/09 PHP
PHP+jquery+ajax实现即时聊天功能实例
2014/12/23 PHP
php将html转成wml的WAP标记语言实例
2015/07/08 PHP
php 实现Hash表功能实例详解
2016/11/29 PHP
jquery 经典动画菜单效果代码
2010/01/26 Javascript
浅析JavaScript原型继承的陷阱
2013/12/03 Javascript
jquery实现手机发送验证码的倒计时代码
2014/02/12 Javascript
JavaScript中对循环语句的优化技巧深入探讨
2014/06/06 Javascript
jQuery中hasClass()方法用法实例
2015/01/06 Javascript
js判断手机系统是android还是ios
2017/03/07 Javascript
js/jq仿window文件夹移动/剪切/复制等操作代码
2017/03/08 Javascript
jQuery实现页码跳转式动态数据分页
2017/12/31 jQuery
关于Vue Router中路由守卫的应用及在全局导航守卫中检查元字段的方法
2018/12/09 Javascript
基于Webpack4和React hooks搭建项目的方法
2019/02/05 Javascript
webpack的 rquire.context用法实现工程自动化的方法
2020/02/07 Javascript
vue 路由缓存 路由嵌套 路由守卫 监听物理返回操作
2020/08/06 Javascript
利用PHP实现递归删除链表元素的方法示例
2020/10/23 Javascript
vue 授权获取微信openId操作
2020/11/13 Javascript
python逐行读取文件内容的三种方法
2014/01/20 Python
Python中实现对Timestamp和Datetime及UTC时间之间的转换
2015/04/08 Python
深入解析Python中的__builtins__内建对象
2016/06/21 Python
Windows10下Tensorflow2.0 安装及环境配置教程(图文)
2019/11/21 Python
django项目中新增app的2种实现方法
2020/04/01 Python
CSS的pointer-events属性详细介绍(作用和注意事项)
2014/04/23 HTML / CSS
Feelunique美国:欧洲大型的在线美妆零售电商
2018/11/04 全球购物
双语教学实施方案
2014/03/23 职场文书
医学生毕业自我鉴定
2014/03/26 职场文书
2014年会策划方案
2014/05/11 职场文书
工作态度不端正检讨书
2014/10/04 职场文书
2014乡镇机关党员个人对照检查材料思想汇报
2014/10/09 职场文书
文员岗位职责
2015/02/04 职场文书
告知书格式
2015/07/01 职场文书
2015质检员个人年终工作总结
2015/10/23 职场文书
使用pandas生成/读取csv文件的方法实例
2021/07/09 Python
Android自定义ScrollView实现阻尼回弹
2022/04/01 Java/Android
一级电子管军用接收机测评
2022/04/05 无线电