|
前言
- 本文我们主要介绍如何使用加密源代码,虽然的作用主要是为了提高代码的运行效率,但是也对源代码有一定的加密效果。
使用 Cython 加密 Python 代码
环境
Python 源代码
- # dependency.py
- def some_function(x, y):
- return x * y
- # example.py
- from dependency import some_function
- def add(x, y):
- return x + y + some_function(x, y)
- if __name__ == '__main__':
- print(add(3, 4))
复制代码 编写 Cython 编译配置文件
- # setup.py
- from distutils.core import setup
- from Cython.Build import cythonize
- setup(
- # 程序名
- name='test',
- # 需要编译的脚本列表
- ext_modules=cythonize(
- [
- "dependency.py",
- "example.py",
- # ...
- ],
- # Python 版本
- language_level=3
- ),
- )
复制代码 编译
- python setup.py build_ext --inplace
复制代码 命令的作用是在当前目录中构建 C/C++ 扩展模块,并将编译后的模块放置在当前目录中,以便在开发过程中进行测试和调试。
- # 执行成功日志
- 版权所有(C) Microsoft Corporation。保留所有权利。
- [1/2] Cythonizing dependency.py
- [2/2] Cythonizing example.py
- dependency.c
- 正在创建库 build\temp.win-amd64-cpython-312\Release\dependency.cp312-win_amd64.lib 和对象 build\temp.win-amd64-cpython-312\Release\dependency.cp312-win_amd64.exp
- 正在生成代码
- 已完成代码的生成
- example.c
- 正在创建库 build\temp.win-amd64-cpython-312\Release\example.cp312-win_amd64.lib 和对象 build\temp.win-amd64-cpython-312\Release\example.cp312-win_amd64.exp
- 正在生成代码
- 已完成代码的生成
复制代码 查看输出文件
- 可以看到编译完成后,我们在当前目录生成了源文件和的二进制,在环境下生成的是为后缀的共享对象文件。
使用
- 使用和原文件使用方式一致,但文件名需要和原文件名保持一致。
- # run.py
- import example
- if __name__ == '__main__':
- print(example.add(3, 4))
复制代码 问题
error: Microsoft Visual C++ 14.0 or greater is required
pyconfig.h(59): fatal error C1083: 无法打开包括文件: “io.h”: No such file or directory
- 这是因为我们还需要另外两个组件,继续使用工具进行安装:
dynamic module does not define module export function
- 在 run.py 中使用 .pyd 时,需要和原文件名称保持一致,否则会出现如上错误,比如上面的示例中原文件为 example.py 则生成的链接文件应该为 example.pyd
复制代码
拓展
.py .pyc .pyd .so .pyx 的区别
.py 文件
- 标准的 Python 源代码文件,包含 Python 代码。你可以使用文本编辑器(如Notepad++、Sublime Text、Atom等)来编辑这些文件。
.pyc 文件
- Python 编译后的字节码文件。当你运行一个 .py 文件时,Python 解释器会将其编译成字节码,然后将字节码保存到 .pyc 文件中,以便下次运行时可以更快地加载。这些文件是平台无关的,因此可以在不同的操作系统上共享。
.pyd 文件
- Windows 平台上的 Python DLL 文件。它们包含编译后的 Python 模块,通常是用C、C++或其他语言编写的扩展模块。这些文件允许 Python 与底层操作系统或硬件进行交互,例如,访问操作系统的API或使用硬件设备。
.so 文件
- 类Unix系统(如Linux)上的共享对象文件,类似于 Windows 上的 DLL 文件。它们通常是使用 C 或 C++ 编写的 Python 模块的编译版本。这些文件通常用于扩展 Python 的功能,以便与底层系统进行交互或提高性能。
.pyx 文件
- Cython 代码文件。Cython 是一种使 Python 代码能够与 C 语言进行混合编程的工具。.pyx 文件包含了同时具有 Python 和 C 语法的代码,可以通过 Cython 编译器转换为 C 代码,然后编译成 Python 可执行模块(.pyd 或 .so 文件)。
以上就是使用Cython加密Python代码防止反编译的详细内容,更多关于Cython加密Python代码的资料请关注脚本之家其它相关文章!
来源:https://www.jb51.net/python/3208401os.htm
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作! |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|