Python 进阶
Python 协程实现原理
dict 和 set 实现原理
Python 线程安全
Python 抽象语法树(AST)
Python 日志输出
Python 扩展入门(一)
Python 程序执行原理
Python 垃圾回收
Python 动态创建类
检查工具
PyFrameObject
yield 生成器工作原理
dict 设计与实现
Python 性能分析原理
PyCodeObject
Python 弱引用
Python 性能分析原理(二)
Python 源码分析(一)
Python Annotated
Python 依赖注入
python freelist
python代码编译成pyc
Python mmap 内存映射文件
Python值得学习的内容
async Future 对象
asyncio loop的实现
asyncio.sleep 的实现
asyncio 原理
Python 代码加密
Python Token类型
Python 扩展入门(二)
Python 性能优化
本文档使用 MrDoc 发布
-
+
首页
Python 代码加密
### pyc字节码 生成`pyc`的方法: ``` python -m py_compile main.py ``` 但是字节码很容易被反编译,比如: ``` pip install uncompyle uncompyle6 main.cpython-38.pyc > main.py ``` 反编译后会发现代码和原始代码基本上没区别,所以`.pyc`的方式不是很好。 ### 代码混淆 - pyminifier 代码混淆可以使得代码可读性变的很差。使用方法: ``` pip install pyminifier pyminifier --nonlatin --replacement-length=10 -O main.py ``` ### 代码加密 - 编译成so文件 `Cython`是一个编程语言,它通过类似Python的语法来编写Python的C扩展,能够将Python+C混合编码的`.pyx`脚本转换为C代码,主要用于优化Python脚本性能或Python调用C函数库。 基于它的原理,我可以们使用`Cython`将python代码编译成`.c`文件,再将`.c`编译成`.so`(windows 上则是`.pyd`) 创建`setup.py`,使用`Cython`加密指定的文件: ``` from distutils.core import setup from Cython.Build import cythonize setup(ext_modules = cythonize(["main.py"], language_level=3) ``` 也可以使用 `jmpy3` 库,可以一键加密整个项目,加密后会在项目中增加一个dist文件夹: ``` pip install jmpy3 jmpy3 -i 项目名称 ``` ### 终极方案:pyarmor 这是一个比较成熟的商业方案,需要购买才能商用。 > PyArmor 是一个用于加密和保护 Python 代码的工具。它能够保护 Python的二进制代码在运行时不被泄露,设置加密后 Python 源代码的有效期限,绑 定加密后的Python源代码到硬盘、网卡等硬件设备。它的保障机制主要包括: > - 加密编译后的代码块,保护模块中的字符串和常量 > - 在脚本运行时候动态加密和解密每一个函数(代码块)的二进制代码 > - 代码块执行完成之后清空堆栈局部变量 > - 通过授权文件限制加密后脚本的有效期和设备环境 使用方法: ``` pip install pyarmor pyarmor gen --exclude "coco/venv" -O coco_dist -r coco ``` ### 参考 > [加密你的 Python 程序代码](https://mp.weixin.qq.com/s/vl9rTnwhw4TYPYcqyVmL3g)
gaojian
2023年10月11日 15:26
分享文档
收藏文档
上一篇
下一篇
微信扫一扫
复制链接
手机扫一扫进行分享
复制链接
关于 MrDoc
觅思文档MrDoc
是
州的先生
开发并开源的在线文档系统,其适合作为个人和小型团队的云笔记、文档和知识库管理工具。
如果觅思文档给你或你的团队带来了帮助,欢迎对作者进行一些打赏捐助,这将有力支持作者持续投入精力更新和维护觅思文档,感谢你的捐助!
>>>捐助鸣谢列表
微信
支付宝
QQ
PayPal
Markdown文件
分享
链接
类型
密码
更新密码