【问题标题】:how to encrypt python source code? [duplicate]如何加密python源代码? [复制]
【发布时间】:2021-03-10 04:50:36
【问题描述】:

我们有一个用 Python 实现的关键业务程序。我们的老板不希望其他人,尤其是我们的竞争对手知道它是如何设计和实施的。所以我必须找到一种方法来加密它。我最开始想到的是pyc和pyo,但很快我发现它们很可能被反汇编了。我想加密我们的源代码,但我不知道怎么做?你们能帮我解决这个问题吗?任何指导将不胜感激。

【问题讨论】:

  • 在这种情况下,Python 不是适合这项工作的工具。考虑将您的软件作为服务提供(= Web 应用程序 = 您不必分发字节码,因为它将在您的服务器上运行)

标签: python obfuscation


【解决方案1】:

我建议您重新考虑一下,考虑:

  • 为工作使用正确的工具
  • 难以混淆
  • 实现目标的其他方式

首先,Python 的设计初衷不是为了混淆。该语言的每个方面都是免费的,任何想要检查或修改它的人都可以访问。作为一种字节码语言,它很难被锁定,而 Python 字节码很容易理解。如果你想构建一些你看不到的东西,你将不得不使用另一个工具。

其次,一切(字面意思)最终都可以进行逆向工程,因此不要假设您能够完全保护任何一段代码。 您必须能够理解隐藏一段代码的重要性(对于估计 X 的资源量)与隐藏它的实际有用性(同样在工作量方面)之间的权衡。尝试并实际评估您的“设计和实施”的重要性,以证明这一切的合理性。

考虑有法律要求。如果您预计人们会滥用您的代码,那么如果您可以轻松地发现滥用您的代码并将其转化为法律问题,那么可能会更有用。

【讨论】:

    【解决方案2】:

    在 C 函数中分离机密功能并开发 SWIG 包装器。如果你用的是C++,可以考虑boost python。

    【讨论】:

      【解决方案3】:

      任何东西都可以逆向工程。 不可能在用户无法检查该信息的情况下提供用户的机器信息。你所能做的就是多花点功夫。

      如果你有这个要求,Python 特别糟糕,因为 Python 字节码比完全组装的机器码更容易阅读。最终,无论您做什么使其更加模糊,用户的计算机都必须能够对其进行去混淆以将其转换为普通的 Python 字节码,以便 Python 解释器执行它。因此,有动力的用户也将能够将你提供给他们的任何内容去混淆为 Python 字节码。

      如果您确实有竞争对手可能想弄清楚您的程序是如何工作的,那么您必须假设您以任何形式发布给最终用户的任何代码都会被您的竞争对手完全理解。没有不可能方法来绝对防范这种情况。

      解决此问题的唯一方法是也不向用户提供此代码,如果您可以在您控制的服务器上运行您的代码,并且只向您的用户提供一个愚蠢的程序,该程序会向您的服务器发出请求真正的工作。

      【讨论】:

        猜你喜欢
        • 2012-03-29
        • 1970-01-01
        • 1970-01-01
        • 2012-01-01
        • 2019-07-02
        • 2012-10-25
        • 1970-01-01
        • 2011-07-14
        • 1970-01-01
        相关资源
        最近更新 更多