python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > Cython加密Python代码

使用Cython加密Python代码防止反编译

作者:Lorin洛林

本文我们主要介绍如何使用 Cython 加密源代码,虽然 Cython 的作用主要是为了提高代码的运行效率,但是也对源代码有一定的加密效果,需要的朋友可以参考下

前言

使用 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
    ),
)

编译

# 执行成功日志

版权所有(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

拓展

.py .pyc .pyd .so .pyx 的区别

.py 文件

.pyc 文件

.pyd 文件

.so 文件

.pyx 文件

以上就是使用Cython加密Python代码防止反编译的详细内容,更多关于Cython加密Python代码的资料请关注脚本之家其它相关文章!

您可能感兴趣的文章:
阅读全文