保护python代码,避免交付后被任意读取和修改

python代码保护需求

python不像 C 或者 java 可以编译后生成机器码部署。很多时候需要将 python 代码部署到其他端上交付给用户,python是易读的语言,这时候如果用户直接读取后很容易在理解的基础上进行改动或复制,无法保护自己的知识成果。

1.如果直接用pyinstaller/py2exe等把项目打包,也很容易被解析出pyc文件,而 .pyc 文件很容易被python-uncompyle6 等软件反编译破解。

2.用代码混淆的方式加秘也是一种方法:不过只能对单个文件混淆,无法做到多个互相有联系的源码文件的联动混淆;代码结构未发生变化,也能获取字节码,破解难度不大,只是增加了阅读的难度。

3.用加解密方式是非常好的一种方式,对代码进行加密,在执行时解密。不过操作难度较大,需要修改解释器内置密钥,禁用pyc和字节码文件。

4.可以使用Cython这个库来对项目进行加密。虽说 Cython 的主要目的是带来性能的提升,但是基于它的原理:将 .py/.pyx 编译为 .c 文件,再将 .c 文件编译为 .so (Unix)或  .pyd (Windows),其带来的另一个好处就是难以破解。完成后删除.py/.c文件,只保留.so/.pyd文件,可以作为包正常引用运行。

Cython 实质就是把py 代码编译成 C 或 C++ 代码来执行(类似于windows中的 .dll 动态链接库),在Linux 上会生成 . so 二进制文件,Windows下为 .pyd ,所以还有一个作用是加速代码的执行效率。【注意】 .pyd 文件不能在 Linux 下使用,反之亦然!但还有一些限制如项目中不能删除 __init__.py 否者包导入会失败。详细可参考官方文档。

安装cython

pip install Cython

安装 Microsoft Visual Studio 2022(windows下)

Windows 下需要安装 VS 才能编译,Linux 下只要安装 gcc 等即可,不像windows那样需要安装这么臃肿的软件/组件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值