如何加密Python源代码?

7

我们有一个用Python实现的业务关键程序。我们的老板不想让其他人,特别是我们的竞争对手知道它的设计和实现方式。因此,我必须找到一种加密方法。我最初想到的是pyc和pyo,但很快发现它们可能会被反汇编。我想加密我们的源代码,但不知道该怎么做。你们能帮我吗?任何指导都将不胜感激。


1
在这种情况下,Python不是合适的工具。考虑将您的软件作为服务提供(=网络应用程序=您不必分发字节码,因为它将在您的服务器上运行)。 - mac
3个回答

13

我建议您重新考虑以下几点:

  • 选择合适的工具
  • 混淆很难实现
  • 通过其他方式实现目标

首先,Python并不是为了混淆而设计的。语言的每个方面都是自由和可访问的,任何人都可以检查或修改它。作为一种字节码语言,锁定Python字节码很困难,而且Python字节码很容易理解。如果你想构建一个无法从外部观察的代码,你将不得不使用另一个工具。

其次,任何东西(真的)最终都可以被反向工程出来,因此不要认为你能够完全保护任何一段代码。 你必须能够理解隐藏代码的重要性(需要估算X数量的资源),与隐藏它的实际用处之间的权衡(也包括努力)。尝试更加客观地评估您的“设计和实现”到底有多重要,以证明所有这些努力的必要性。

考虑一下法律要求。如果您预计人们会滥用您的代码,也许更有用的做法是轻松发现他们并把这转化为法律问题。


4

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


4
任何东西都可以被逆向工程。在不让用户检查信息的情况下,不可能提供用户机器信息。你所能做的就是让它需要更多的努力。
如果你有这个要求,Python尤其糟糕,因为Python字节码比完全组装的机器代码容易阅读得多。最终,无论你做什么使它更加模糊,用户的计算机都必须能够将其解密以将其转换为正常的Python字节码,以便Python解释器执行它。因此,有动力的用户也将能够将您提供给他们的任何内容解密为Python字节码。
如果你真的有竞争对手想要弄清楚你的程序如何工作,你必须假设你发布给最终用户的任何形式的代码都将被你的竞争对手完全理解。没有任何可能的方法可以绝对防范这种情况。
唯一的方法是不把这个代码给你的用户,如果你可以在你控制下的服务器上运行你的代码,并且只给你的用户一个简单的程序,用于向你的服务器请求真正的工作。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接