我正在用Python开发一款软件,它将分发给我雇主的客户。我的雇主想用一个有时间限制的许可证文件来限制软件的使用。

如果我们分发.py文件甚至.pyc文件,将很容易(反编译和)删除检查许可证文件的代码。

另一个方面是,我的雇主不希望我们的客户读到代码,担心代码可能被窃取,或者至少是“新颖的想法”。

有什么好办法来解决这个问题吗?


当前回答

发布.pyc文件有它的问题-它们与创建它们时使用的python版本以外的任何其他python版本都不兼容,这意味着您必须知道产品将运行的系统上运行的python版本。这是一个非常有限的因素。

其他回答

有一个关于隐藏python源代码的全面答案,可以在这里找到。

讨论的可能技术有: -使用编译字节码(python -m compileall) -可执行文件创建者(或安装程序,如PyInstaller) 软件即服务(在我看来,这是隐藏代码的最佳解决方案) - python源代码混淆器

发布.pyc文件有它的问题-它们与创建它们时使用的python版本以外的任何其他python版本都不兼容,这意味着您必须知道产品将运行的系统上运行的python版本。这是一个非常有限的因素。

通过散列和签署重要文件并使用公钥方法检查,用标准加密方案为代码签名如何?

通过这种方式,您可以为每个客户颁发带有公钥的license文件。

另外,你可以使用python混淆器,就像这个(谷歌一下)。

在某些情况下,可以将软件(全部或至少关键部分)移动到组织托管的web服务中。

这样,许可证检查就可以在您自己的服务器机房的安全环境中执行。

使用cxfreeze (Linux的py2exe)可以完成这项工作。

http://cx-freeze.sourceforge.net/

它可以在ubuntu存储库中找到