文章目录:

  • 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-devgccCython,其中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文件并调用相关推荐

  1. AidLux“换脸”案例源码详解 (Python)

    "换脸"案例源码详解 (Python) faceswap_gui.py用于换脸,可与facemovie_gui.py身体互换源码(上一篇文章)对照观看 打开faceswap_gui ...

  2. 小白学习pytorch源码(二):setup.py最详细解读

    小白学习pytorch源码(二) pytorch setup.py最全解析 setup.py与setuptools setup.py最详细解读 setup.py 环境检查 setup.py setup ...

  3. AidLux“人像抠图”案例源码详解 (Python)

    "人像抠图"案例源码详解 (Python) seg_gui_meet.py用于人像抠图 导入基础包作用详解 构建程序图形化类 初始化处理函数(人体抠图应用启动时首先被调用) 程序入 ...

  4. python 3.10.0源码编译安装

    python 3.10.0源码编译安装 文章目录 python 3.10.0源码编译安装 1. 安装编译依赖工具 2. 下载python 3.10.0 3. 编译安装 Python 4. 体验 1. ...

  5. python 搜索引擎 实验楼的源码_【如何入门 Python 爬虫?】-看准网

    匿名用户 学会一门语言的捷径只有一个: Getting Started!¶ 起步阶段 任何一种编程语言都包含两个部分:硬知识和软知识,起步阶段的主要任务是掌握硬知识.°1 硬知识 "硬知识& ...

  6. 图片坐标提取软件/图片坐标点和像素点颜色提取软件/图片坐标获取工具/Python图片坐标获取源码/图片像素坐标获取软件/python tkinter 图片显示(完全开源)

    该软件使用python写的,可以提取像素点的坐标还有也能获取像素点的16进制数据RGB565和RGB888(RGB888仅最新的源码才支持),可以单点坐标也可以按键坐标,甚至可以使用简单的左右键配合使 ...

  7. faster rcnn源码解读(三)train_faster_rcnn_alt_opt.py

    转载自:faster rcnn源码解读(三)train_faster_rcnn_alt_opt.py - 野孩子的专栏 - 博客频道 - CSDN.NET http://blog.csdn.net/u ...

  8. datax源码阅读一:python文件

    一.前面主要是怎么使用datax和datax的插件编写,后面主要说明源码阅读部分,python相关文件 二.datax关键代码(python datax.py test.json) 1.datax.p ...

  9. 照片背景底色更换工具二(python+flask网页版源码及打包)

    照片背景底色更换工具二(python+flask网页版源码及打包) 所有源码 文件结构 static images huaman_src_test.jpg huaman_result_test.png ...

最新文章

  1. ios--用证书进行真机调试(转)
  2. python还是hadoop_使用Python和Hadoop Streaming编写MapReduce
  3. 贺利坚老师汇编课程50笔记:call和ret配合
  4. 线下商店销量预测挑战赛
  5. Win11自动生成文件目录
  6. 使用LaTeX写论文
  7. CCCC 天梯赛初赛心得
  8. 2013年计算机毕业生流向,2013年计算机专业应届毕业生自我鉴定
  9. Lotus 新手运维手册
  10. Java实现 LeetCode 513 找树左下角的值
  11. iOS证书(.p12)和描述文件(.mobileprovision)的导出和使用方法
  12. seo需要注意哪些细节
  13. markdown表情
  14. 途客圈创业记--读书笔记
  15. Revit二次开发手记【1】
  16. 3 种保护您的网站免受恶意攻击的方法
  17. 刷脸支付凭什么这么火 ? 开启你的智慧生活 !
  18. DOS下常用BAT(cmd)命令
  19. vim编辑完之后无法切换到命令行模式
  20. 2022年底总结(被阿里捞的第1、2、3...次)

热门文章

  1. mac下安装nginx
  2. 7.21.05 中断流程控制语句
  3. 下载python会对电脑有什么影响-用户在对Python下载的时候,这些注意事项不能忽视...
  4. 计算机二级python基础知识总结-计算机二级python 知识点篇(程序的控制结构)...
  5. python绘制灰度图片直方图-opencv+python 统计及绘制直方图
  6. python3.7.4安装教程-Python3.7.4图文安装教程
  7. python打开文件不存在-Python判断文件是否存在的三种方法
  8. python 条形图-可视化库-Matplotlib-条形图(第四天)
  9. python画图小房子代码-python少儿编程-turtle 基本绘图
  10. php和python和java-Java、PHP和Python各有什么优势 分别能做什么