如何使用Cython对python代码进行加密
作者:Jruing 发布时间:2023-07-21 19:33:40
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)
这样就好了!!!!
来源:https://www.cnblogs.com/jruing/p/13253361.html


猜你喜欢
- 在利用DL解决图像问题时,影响训练效率最大的有时候是GPU,有时候也可能是CPU和你的磁盘。很多设计不当的任务,在训练神经网络的时候,大部分
- 本文实例讲述了微信小程序实现图片上传、删除和预览功能的方法。分享给大家供大家参考,具体如下:这里主要介绍一下微信小程序的图片上传图片删除和图
- 在JavaScript中四种基本的数据类型:数值(整数和实数)、字符串型(用“”号或‘'括起来的字符或数值)、布尔型(使True或F
- django默认是有一个admin的后台管理模块,但是丑,功能也不齐全,但是大神给我们已经集成好了xadmin后台,我们拿来用即可,但是呢,
- 在CSS布局中,ul,li的运用是非常常见的。配合DIV与CSS,创建无表格布局。 其实Dreamweaver中也有自带的CSS布局的范例,
- 小贤是一条可爱的小狗(Dog), 它的叫声很好听(wow), 每次看到主人的时候就会乖乖叫一声(yelp).从这段描述可以得到以下对象:fu
- Nonetype和空值是不一致的,可以理解为Nonetype为不存在这个参数,空值表示参数存在,但是值为空判断方式如下:if hostip
- Fiddler,这个是所有软件开发者必备神器!这款工具不仅可以抓取PC上开发web时候的数据包,而且可以抓取移动端(Android,Ipho
- 接口测试返回数据为字典取值接口测试通常需要校验返回数据跟预期结果是否一致,这个时候如果返回数据为字典,那么我们要拿到我们想要的key对应的v
- 目录迭代器生成器总结迭代器聊迭代器前我们要先清楚迭代的概念:通常来讲从一个对象中依次取出数据,这个过程叫做遍历,这个手段称为迭代(重复执行某
- django静态文件配置原理静态文件配置就是为了让用户请求时django服务器能找到静态文件返回。首先要理解几个概念:媒体文件:用户上传的文
- 用MYSQL 5.7.9 作为ZABBIX 2.4.7 的监控数据库. 前段时间开启了慢查询日志, 后来发现慢查询日志膨胀到了700M查看最
- 思路利用scapy库,在这个库的基础下能够做很多的事情,python读取pcap包网上一找一大把将读取出来的pcap包改一个名字,然后写回,
- 前言本文主要讲述numpy数组的计算与转置,讲相同尺寸数组的运算与不同尺寸数组的运算,同时介绍数组转置的三种方法。numpy数组的操作比较枯
- 使用字符串创建矩阵是一个很实用的功能,之前自己尝试了很多次的小功能使用这个方法就能够简单实现。创建长度为16的字符串,是为了方便能够在各种数
- 手写数字识别算法的设计与实现本文使用python基于TensorFlow设计手写数字识别算法,并编程实现GUI界面,构建手写数字识别系统。这
- 今天一个朋友给个需求: 来来 {'isOK': 1, 'isRunning': None, 'isE
- 本文实例讲述了php从文件夹随机读取文件的方法。分享给大家供大家参考。具体实现方法如下:function RandomFile($folde
- 一。存储过程的创建和使用 1.创建程序包,并在程序中创建存储过程 create or replace PACKAGE NCS_ICP_TJ
- 在刚进公司的时候,要写一个需求,使用django的admin站点管理,实现一个二级联动的功能,因为要用到django自带的页面,因为不是自定