使用Cython库包对python的py文件(源码)进行加密,把python的.py文件生成.so文件并调用
文章目录:
- 1 准备环境
- 2 调用`Cython库包`把python的`.py`文件生成`.so`文件
- 2.1 写源码文件
- 2.2 调用源码接口
- 2.3 调用Cython库把`.py`源码生成`.so`文件
常用的python加密方式
第一种加密Python源代码的方式,是将
.py文件
转化为.pyc文件
,但这种加密方式很容易被反编译
,因此实用性并不高。第二种加密Python源代码的方式,是将
.py文件
转化为.so文件
,这样加密的可靠性非常高,无法被被人破解,也就很好地保护了源代码。
本文以Linux系统(Ubuntu 18.04)为例,讲解如何将自己的Python程序(.py文件
)加密为.so文件
。
1 准备环境
1、我们需要在Ubuntu系统中安装一些准备工具,包括python3-dev
,gcc
,Cython
,其中Cython为Python的第三方模块。安装的命令如下:
$ sudo apt install python3-dev gcc
$ pip3 install cython
2、代码文件准备如下:
(base) shl@zhihui-mint:~/Disk2/3_proj$ tree CodeEncryption/
CodeEncryption/
├── setup.py # 把源码.py文件生成.so文件
├── so_test.py # 调用生成的.so文件
└── test.py # 要加密的源码文件0 directories, 3 files
(base) shl@zhihui-mint:~/Disk2/3_proj$
2 调用Cython库包
把python的.py
文件生成.so
文件
先说一下大致流程:
1)写
源码.py文件
,我的源码写到test.py
2)把
源码 .py文件
生成.so文件
,使用上面的setup.py
3)调用生成
.so
文件,效果和调用源码是一样的,相当于只能调用接口
,但是并看不到源码的中的内容
下面说明具体操作:
2.1 写源码文件
源码文件为:test.py
import datetimeclass Today():def get_time(self):print(datetime.datetime.now())def say(self):print("hello from SHL!")
我在源码中定义了:
- 一个
Today类
- 两个类方法:
get_time()
方法:获取当前时间say()
方法:打印输出一段字符
2.2 调用源码接口
so_test.py
中写的是调用源码
的接口,此时是从.py
的源码中直接调用的python代码!
1、so_test.py
调用接口代码:
(base) shl@zhihui-mint:~/Disk2/3_proj/CodeEncryption$ python so_test.py
2021-08-14 17:35:04.143138
hello from SHL!
(base) shl@zhihui-mint:~/Disk2/3_proj/CodeEncryption$
因为在执行python so_test.py
的时候,在so_test.py
文件中导入了from test import Today
,就会把test.py
模块先生成一个编译的.pyc
文件,目的就是在下次调用的时候加速,你可以删除,没有啥影响!
2.3 调用Cython库把.py
源码生成.so
文件
1、使用setup.py
脚本把源码test.py
生成.so文件
,setup.py
中定义内容:
from distutils.core import setup
from Cython.Build import cythonizesetup(ext_modules=cythonize(["test.py"]))
2、生成.so文件
:
python3 setup.py build_ext
生成之后的文件目录结构:
可以看到,生成了.so文件
,同时还生成了.c的源码文件
,以及.o
的中间代码文件,所以这个本质是把python代码转换为了C代码
,然后使用gcc工具进行编译!
3、把源码删除,然后通过so_test.py
接口调用.so文件
,先把.so文件
移到当前目录:
可以发现,此时依然可以通过.so
文件对test.py源码中定义的代码
进行调用,但是我们并不知道源码中具体的实现方式,因此实现了对.py源码文件的加密!
然后你就可以把源码删除
,其他没有用的文件也删除,然后只告诉别人.so
文件和调用接口
,这样保护了自己的源码
不被被人看到!你也可以以这种方式售卖自己的代码,后面优化更新源码还可以持续挣钱!
参考:https://www.jb51.net/article/178209.htm # python代码加密方法有哪些
参考:https://blog.csdn.net/leitouguan8655/article/details/119536047
参考:https://www.cnblogs.com/1a2a/p/10509090.html # 使用Cython库包对python的py文件进行加密
使用Cython库包对python的py文件(源码)进行加密,把python的.py文件生成.so文件并调用相关推荐
- AidLux“换脸”案例源码详解 (Python)
"换脸"案例源码详解 (Python) faceswap_gui.py用于换脸,可与facemovie_gui.py身体互换源码(上一篇文章)对照观看 打开faceswap_gui ...
- 小白学习pytorch源码(二):setup.py最详细解读
小白学习pytorch源码(二) pytorch setup.py最全解析 setup.py与setuptools setup.py最详细解读 setup.py 环境检查 setup.py setup ...
- AidLux“人像抠图”案例源码详解 (Python)
"人像抠图"案例源码详解 (Python) seg_gui_meet.py用于人像抠图 导入基础包作用详解 构建程序图形化类 初始化处理函数(人体抠图应用启动时首先被调用) 程序入 ...
- python 3.10.0源码编译安装
python 3.10.0源码编译安装 文章目录 python 3.10.0源码编译安装 1. 安装编译依赖工具 2. 下载python 3.10.0 3. 编译安装 Python 4. 体验 1. ...
- python 搜索引擎 实验楼的源码_【如何入门 Python 爬虫?】-看准网
匿名用户 学会一门语言的捷径只有一个: Getting Started!¶ 起步阶段 任何一种编程语言都包含两个部分:硬知识和软知识,起步阶段的主要任务是掌握硬知识.°1 硬知识 "硬知识& ...
- 图片坐标提取软件/图片坐标点和像素点颜色提取软件/图片坐标获取工具/Python图片坐标获取源码/图片像素坐标获取软件/python tkinter 图片显示(完全开源)
该软件使用python写的,可以提取像素点的坐标还有也能获取像素点的16进制数据RGB565和RGB888(RGB888仅最新的源码才支持),可以单点坐标也可以按键坐标,甚至可以使用简单的左右键配合使 ...
- faster rcnn源码解读(三)train_faster_rcnn_alt_opt.py
转载自:faster rcnn源码解读(三)train_faster_rcnn_alt_opt.py - 野孩子的专栏 - 博客频道 - CSDN.NET http://blog.csdn.net/u ...
- datax源码阅读一:python文件
一.前面主要是怎么使用datax和datax的插件编写,后面主要说明源码阅读部分,python相关文件 二.datax关键代码(python datax.py test.json) 1.datax.p ...
- 照片背景底色更换工具二(python+flask网页版源码及打包)
照片背景底色更换工具二(python+flask网页版源码及打包) 所有源码 文件结构 static images huaman_src_test.jpg huaman_result_test.png ...
最新文章
- ios--用证书进行真机调试(转)
- python还是hadoop_使用Python和Hadoop Streaming编写MapReduce
- 贺利坚老师汇编课程50笔记:call和ret配合
- 线下商店销量预测挑战赛
- Win11自动生成文件目录
- 使用LaTeX写论文
- CCCC 天梯赛初赛心得
- 2013年计算机毕业生流向,2013年计算机专业应届毕业生自我鉴定
- Lotus 新手运维手册
- Java实现 LeetCode 513 找树左下角的值
- iOS证书(.p12)和描述文件(.mobileprovision)的导出和使用方法
- seo需要注意哪些细节
- markdown表情
- 途客圈创业记--读书笔记
- Revit二次开发手记【1】
- 3 种保护您的网站免受恶意攻击的方法
- 刷脸支付凭什么这么火 ? 开启你的智慧生活 !
- DOS下常用BAT(cmd)命令
- vim编辑完之后无法切换到命令行模式
- 2022年底总结(被阿里捞的第1、2、3...次)
热门文章
- mac下安装nginx
- 7.21.05 中断流程控制语句
- 下载python会对电脑有什么影响-用户在对Python下载的时候,这些注意事项不能忽视...
- 计算机二级python基础知识总结-计算机二级python 知识点篇(程序的控制结构)...
- python绘制灰度图片直方图-opencv+python 统计及绘制直方图
- python3.7.4安装教程-Python3.7.4图文安装教程
- python打开文件不存在-Python判断文件是否存在的三种方法
- python 条形图-可视化库-Matplotlib-条形图(第四天)
- python画图小房子代码-python少儿编程-turtle 基本绘图
- php和python和java-Java、PHP和Python各有什么优势 分别能做什么