V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
mryaocom
V2EX  ›  Python

大佬们 请教一个东西 Python 代码加密

  •  
  •   mryaocom · 2023-07-26 09:09:16 +08:00 · 2686 次点击
    这是一个创建于 496 天前的主题,其中的信息可能已经有所发展或是发生改变。

    大佬们

    python 代码加密有什么办法吗? 现在用的 nuitka 每个平台都得重新整一次

    我想加密代码 ,有激活码更好,

    13 条回复    2024-01-26 17:21:24 +08:00
    lingeo
        1
    lingeo  
       2023-07-26 09:12:49 +08:00
    cython,没法跨平台。
    chenPiMeiHaoChi
        2
    chenPiMeiHaoChi  
       2023-07-26 09:20:39 +08:00
    https://www.v2ex.com/t/958609#reply6
    前两天刚问的,我买了这东西但效果怎么样就不知道了。
    zhangyichent
        3
    zhangyichent  
       2023-07-26 09:24:03 +08:00
    我一般是 cython 编译,我也见过改了解释器的
    encro
        4
    encro  
       2023-07-26 09:38:18 +08:00
    以下来自 gpt chat:

    在 Python 中,完全防止代码破解是非常困难的,因为 Python 是一种解释性语言,它的源代码必须能够被解释器读取和理解。但是,你可以采取一些措施来加密或混淆你的代码,使其更加难以理解和破解。下面列出了一些常见的方法:

    字节码编译:使用 py_compile 模块将你的 Python 代码编译为字节码文件(.pyc ),这样源代码将不易被直接读取。但请注意,这只提供了轻微的保护,并不是真正的加密。

    混淆变量和函数名:使用无意义的、难以猜测的变量和函数名,增加了代码的阅读难度。

    代码加密工具:可以使用第三方工具,如 PyInstaller 、pyarmor 等,将 Python 代码打包成可执行文件,从而减少对源代码的直接访问。

    部分代码外部加载:将敏感部分的代码放在外部文件中,并在程序运行时动态加载。这样即使有人获取了主代码,也无法轻易获得完整的代码逻辑。

    使用 Cython 或 Numba:将关键部分的代码转换为 Cython 或 Numba 加速模块,这样可以提高代码的执行效率,同时也增加了代码的复杂性,使得破解变得更加困难。

    然而,值得强调的是,以上方法只能增加破解的难度,但无法完全阻止有意愿的攻击者。若你的代码涉及特别敏感的信息或算法,最安全的做法是将关键部分放在服务器端,而不是暴露在客户端代码中。无论如何,即使你加密了代码,也应该将重点放在代码的质量、安全性和可靠性上,而不是过度依赖加密来保护代码。
    Badupp
        5
    Badupp  
       2023-07-26 10:28:13 +08:00
    cPython 打包成 so 吧
    mryaocom
        6
    mryaocom  
    OP
       2023-07-26 11:37:25 +08:00
    @Badupp 这玩意有点坑, 每个平台都得打包一个,
    clemente0731
        7
    clemente0731  
       2023-07-26 11:49:23 +08:00
    核心部分用 rust 写
    Jirajine
        8
    Jirajine  
       2023-07-26 12:25:47 +08:00
    随便编译混淆一下,代码多验证几处,让破解的成本大于代码本身的价值就足够了。
    DRM 的大忌是影响合法用户,让合法用户当“正版受害者”。
    duke807
        9
    duke807  
       2023-07-26 12:58:11 +08:00 via Android
    cython 打包成 wasm
    sadfQED2
        10
    sadfQED2  
       2023-07-26 13:18:40 +08:00 via Android
    脚本放虚拟机里面运行,开启虚拟机磁盘加密。(真实案例,千万级别项目就这样干的)
    r6cb
        11
    r6cb  
       2023-07-26 13:26:35 +08:00
    通过互联网提供服务
    wushenlun
        12
    wushenlun  
       2023-07-26 13:40:50 +08:00 via Android
    docker
    hanssx
        13
    hanssx  
       312 天前
    @sadfQED2 我看他们有人说可以通过内存快照读取缓存的 python 代码?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1016 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 21:08 · PVG 05:08 · LAX 13:08 · JFK 16:08
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.