如何商业许可Java软件?

3

我用Java编写了一款桌面会计软件。我想要添加一个密钥、许可证或其他安全措施,以防止客户重新分发该软件。

我只是想知道如何着手处理这个问题?

4个回答

3
简单来说:数字版权管理(DRM)无法阻止盗版,只会伤害你的付费用户。 不管你做什么都没用。
最好的方法是设置一个简单的产品密钥系统,这样能够使你的应用程序不易被复制,但不会伤害您付费的客户,但不要指望它能阻止那些决心不为软件付费的人。
最好的方法是让你的软件足够好。这会激励人们去购买它。此外,公正的定价计划也是有帮助的(Adobe / Microsoft 软件非常容易被盗版的原因之一就是定价不合理)。

1

首先,让我们把商业/GPL战争从SO中剔除,然后真正回答OP的问题...

我在一家销售保护Java软件的公司工作。我们的软件很好。它实际上非常卓越,完全超过了竞争对手的产品。如果用户不满意我们的保护方案,他们可以选择使用我们竞争对手生产的劣质产品。

问题是:我们正在向一个越来越网络化的世界转变。我们的软件需要一个Internet连接才能正确地工作某些功能(软件可以在没有Internet连接的情况下启动,但不是所有功能都能正常工作)。

一个正确设计的服务器/客户端保护方案,在服务器端进行足够的处理,无法被盗版。在某一点上,重新编写软件比尝试复制服务器端发生的事情更容易。

你可以这样想:没有人能够成功使用盗版或密钥生成的许可证玩真正的“魔兽世界”服务器(有假服务器,但那是错过了重点的:在流氓服务器上玩游戏的人不在真实经济中玩游戏,这是一个巨大的失败)。

或者这样说:没有人盗版过GMail。 GMail真的很棒:它可能是我使用最多的应用程序(在我的IDE之后)。 当然,它是免费的...但是几乎所有的事情都发生在服务器端,所以没有人能够克隆它。

在某些软件领域,使用限制性副本保护非常普遍:过去是硬件加密狗,现在大多数是服务器/客户端方案。例如,有很多非常好的、非常昂贵的软件正在使用“Flex许可证管理器”,其中包括能够打败任何免费(或便宜)编译器的昂贵的C++编译器,一些公司非常乐意为此支付巨额资金,并且很高兴拥有购买这样的软件的能力(他们不介意需要互联网连接进行许可验证)。

因此,回答您的问题:

我想添加一个密钥或许可证或其他安全措施,以防止客户端重新分发软件。 我只想知道该怎么做?

通过实施客户端/服务器密钥验证来解决这个问题。理想情况下,让桌面软件的一部分计算在服务器端进行:这会让盗版者头疼(他们要么必须盗用您的服务器,要么必须复制服务器所做的事情,没有其他方法)。

这是我对类似问题提出的一个+7赞成票的答案,其中提供了更多细节:

制作商业Java软件(DRM)


非常感谢您的宝贵建议,Webinator。我会遵循客户端服务器密钥验证的步骤。再次感谢! - Aryan

0
对于在线软件,您可以要求购买者提供电子邮件地址、名字和姓氏。您可以对这些值应用算法,将它们转换为一个大数字。您提示用户输入该数字,如果计算出的数字与用户输入的相匹配,您就存储该数字并启用该软件。
我使用Plimus,这是一项为我交付软件并为客户开具账单的服务。我将密钥生成器存储在他们的服务器上,该生成器根据客户在线订单中的信息生成序列号。
对于收缩包装(现成的)软件,您仍然可以这样做,但您需要某种类型的在线激活模式,基本上强制用户在第一次运行时注册。这使您可以收集电子邮件地址和姓名,并向他们发送序列号。用户通常不喜欢这样做。如果您的服务器出现故障怎么办?然而,如果您的软件足够好,并且您提供良好的支持来帮助他们解决注册问题,他们会愿意这样做。
对于现成的软件,通常使用某种算法生成一系列大数字,每个数字都与某个算法匹配并启用该软件。每份软件副本附带一个序列号。
在我看来,最困难的问题是为用户提供尝试软件的能力。你可以提供退款,但你需要一种撤销软件的方法。你可以提供试用版,但试用软件更加困难,因为你不想让他们继续使用试用版。创建一个免费(永久)限制版本,并且付费版本有额外的功能,这样会更简单些。

这也是一个非常好的建议。让我考虑一下这两个问题,然后再决定。顺便说一句,非常感谢你的建议和宝贵时间。 - Aryan

-2

许多人被Java的快速性和不需要极客技能编码的特点所吸引。但我认为你不能成功地对使用Java制作的应用程序进行数字版权管理。为了从这个错误中恢复过来,从现在开始使用C/C++进行编码。


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