【Python】python代码的5种常见加密方式

简介: 示例代码 main.py执行如下命令2.代码混淆在线工具:在线混淆工具4 .py文件转化为.so文件 setup文件: demo:https://github.com/LCF2764/Encrypt-python-code-License-control安装pyarmor5.1 高级加密模式,需要引导代码5.3 虚拟加密模式总结:



五种加密方式:

    • .py python的源代码文件
    • .pyc Python源代码import后,编译生成的字节码
    • .pyo Python源代码编译优化生成的字节码。pyo比pyc并没有优化多少,只是去掉了断言
    • .pyd Python的动态链接库(Windows平台)
    • .so文件

    1.发行.pyc文件

    pyc文件是py文件经过编译后生成的二进制文件,python提供py_compile内置模块把py文件编译为pyc文件,得到的.pyc文件可以直接运行python xxx.pyc

    .pyc只能在特定版本的解释器上运行

    1.1 编译加密

    示例代码 main.py

    def spread(arg):
        ret = []
        for i in arg:
            if isinstance(i, list):
                ret.extend(i)
        else:
            ret.append(i)
        return ret
    def deep_flatten(lst):
        result = []
        result.extend(
            spread(list(map(lambda x: deep_flatten(x) if type(x) == list else x, lst))))
        return result
    print(deep_flatten([1, [2], [[3], 4], 5]))

    image.gif

    执行如下命令

    python -m py_compile main.py
    python -m compileall main.py 批量
    # python3 命令如下:
    python3 -m py_compile main.py
    python3 -m compileall main.py 批量

    image.gif

    2.代码混淆

    在线工具:在线混淆工具

    优点:

      • 1.1 降低代码可读性
      • 1.2 不影响模块之间调用

      3.生成exe可执行文件

      使用py2exe

      py2exe是将Python代码转换为 Windows 平台上的可执行文件的工具,只能在windos上使用,原理是译为 .pyc 文件,加上一些动态连接依赖文件,一起打包成一个可执行文件。

      pip install py2exe
      #然后执行 
      python setup.py py2exe

      image.gif

      特点:

        • 不可逆
        • 不影响模块调用

        但是不推荐这种方式,一般发布都是在服务器上,很少在Windows,但是如果有特殊需要,也可以采用这种方式

        4 .py文件转化为.so文件

        生成使用 Cython

        它的原理:将 .py/.pyx 编译为 .c文件,再将 .c文件编译为 .so(Unix) 或 .pyd(Windows)

        pip install Cython

        image.gif

        setup文件:

        from distutils.core import setup
        from Cython.Build import cythonize
        setup(name='main1',
             ext_modules=cythonize(f'/Users/aa/PycharmProjects/pythonProject2/main.py'))

        image.gif

        python setup.py build_ext

        image.gif

        在windos下生成.pyd文件

        在linux下生成.so文件

        特点:

          • 不可逆
          • 不影响模块调用

          demo:

          https://github.com/LCF2764/Encrypt-python-code-License-control

          5.附加运行辅助包文件

          安装pyarmor

          pip install pyarmor==6.8.1

          image.gif

          5.1 高级加密模式,需要引导代码

          同目录下所有的 *.py文件都会被加密

          pyarmor obfuscate main.py

          image.gif

          image.gif编辑

          5.2 超级加密模式

          超级模式只需要一个运行辅助文件,没有了所谓的引导代码

          pyarmor obfuscate --advanced 2 .\main1.py

          image.gif

          5.3 虚拟加密模式

          高级 + 虚拟

          pyarmor obfuscate --advanced 3 .\main1.py

          image.gif

          超级 + 虚拟

          pyarmor obfuscate --advanced 4 .\main1.py

          image.gif

          辅助文件和编译文件

          总结:

          image.gif编辑


          相关文章
          |
          7天前
          |
          并行计算 C语言 开发者
          优化Python代码的五大技巧
          Python作为一种流行的编程语言,在各种应用场景中广泛使用。然而,随着项目规模的增长和需求的变化,Python代码的性能和可维护性也成为了关键问题。本文将介绍优化Python代码的五大技巧,帮助开发者提升代码效率和质量。
          |
          17天前
          |
          监控 Python
          Python中的装饰器:提升代码灵活性与可读性
          在Python编程中,装饰器是一种强大的工具,能够提升代码的灵活性和可读性。本文将介绍装饰器的基本概念、使用方法以及实际应用场景,帮助读者更好地理解和利用这一功能。
          |
          20天前
          |
          人工智能 数据可视化 数据挖掘
          【python】Python航空公司客户价值数据分析(代码+论文)【独一无二】
          【python】Python航空公司客户价值数据分析(代码+论文)【独一无二】
          |
          18天前
          |
          缓存 监控 算法
          优化Python代码性能的10个技巧
          提高Python代码性能是每个开发者都需要关注的重要问题。本文将介绍10个实用的技巧,帮助你优化Python代码,提升程序的运行效率和性能表现。无论是避免内存泄漏、减少函数调用次数,还是使用适当的数据结构,都能在不同场景下发挥作用,使你的Python应用更加高效稳定。
          |
          2天前
          |
          机器学习/深度学习 人工智能 算法
          机械视觉:原理、应用及Python代码示例
          机械视觉:原理、应用及Python代码示例
          |
          2天前
          |
          存储 缓存 算法
          优化Python代码性能的7个技巧
          在日常的Python开发中,优化代码性能是一个重要的课题。本文介绍了7个实用的技巧,帮助开发者提高Python代码的执行效率,包括利用生成器表达式、使用适量的缓存、避免不必要的循环等。通过本文的指导,读者可以更好地理解Python代码性能优化的方法,提升自身的编程水平。
          |
          4天前
          |
          人工智能 Python
          【Python实用技能】建议收藏:自动化实现网页内容转PDF并保存的方法探索(含代码,亲测可用)
          【Python实用技能】建议收藏:自动化实现网页内容转PDF并保存的方法探索(含代码,亲测可用)
          22 0
          |
          4天前
          |
          人工智能 Python
          【AI大模型应用开发】【LangChain系列】实战案例1:用LangChain写Python代码并执行来生成答案
          【AI大模型应用开发】【LangChain系列】实战案例1:用LangChain写Python代码并执行来生成答案
          9 0
          |
          4天前
          |
          Linux 网络安全 开发工具
          【超详细!超多图!】【代码管理】Python微信公众号开发(3)- 服务器代码上传Github
          【超详细!超多图!】【代码管理】Python微信公众号开发(3)- 服务器代码上传Github
          11 0
          |
          4天前
          |
          数据安全/隐私保护 Python
          Python中的装饰器:提升代码可读性和灵活性
          Python中的装饰器是一种强大的编程工具,能够提升代码的可读性和灵活性。本文将深入探讨装饰器的原理和用法,以及如何利用装饰器来简化代码、实现日志记录、权限控制等功能,从而让你的Python代码更加优雅和高效。