我用Java编写了一个基于桌面的会计软件。我想提供密钥或许可证或其他类型的安全措施,以防止客户端重新分发软件。 我只想知道如何去做?
答案 0 :(得分:3)
简短回答: DRM不会阻止盗版行为。这只会伤害您的付费客户。你做什么并不重要。
您可以做的最好的事情就是建立一个简单的产品密钥系统,所有这一切真正做到的是使您的应用程序无法快速复制而无需工作,它并不会真正伤害您的付费客户,但不要指望它可以阻止任何决定不支付软件费用的人。
您可以做的最好的事情就是让您的软件良好。这使人们有动力实际购买它。另外一个公平的定价计划也有帮助(有一个原因是Adobe / Microsoft软件被高度盗版)。
答案 1 :(得分:1)
首先,让我们单独留下SO的商业/ GPL战争并实际回答OP的问题......
我在一家销售受保护的 Java软件的公司工作。我们的软件很好。它实际上是摇滚并完全拥有比赛的产品。如果用户对我们的保护计划不满意,他们可以使用我们的竞争对手制造的劣质产品。
问题是:我们正在转向越来越多的网络世界。我们的软件要求互联网连接,以使某些功能正常工作(该软件将在没有互联网连接的情况下启动,但并非一切都能正常工作)。
正确设计的服务器/客户端保护方案,在服务器端进行足够的处理,不能被盗版。有一次,重写软件比尝试重现服务器端正在发生的事情变得容易。
你可以这样想:没有人能够在真正的“魔兽世界”服务器上使用盗版或密钥许可证进行游戏(曾经有过虚假的服务器,但这样做会忽略这一点:人们在玩弄流氓服务器不在实体经济中播放,这是一次巨大的失败。)
或者这样:没有人盗版GMail。 GMail肯定会摇滚:它可能是我使用最多的应用程序(在我的IDE之后)。当然,它是免费的...但是没有人可以克隆它:几乎所有事情都发生在服务器端。
在某些软件圈中,非常普遍存在限制性复制保护:现在它是硬件加密狗,现在它主要是服务器/客户端方案。例如,有一个非常好的很多,而且非常昂贵的软件正在使用“Flex许可证管理器”,包括昂贵的C ++编译器,它可以解决任何免费的废话(或者便宜的),有些公司非常很高兴能够购买大型的$$$并且非常乐意有能力购买这样的软件(并且他们不介意需要互联网连接许可证验证)。
所以,回答你的问题:
我想要一把钥匙或许可证或 防止其他类型的安全 软件的重新分配 客户。我只想知道该怎么做 关于它?
通过puttin客户端/服务器密钥验证来实现它。理想情况下,在服务器端进行桌面软件正在进行的计算的一部分:这会让海盗成为高手(他们要么盗用你的服务器,要么重现服务器所做的事情,根本没有别的办法)。 / p>
这是我对类似问题做出的+7赞成回答,该问题提供了更多细节:
答案 2 :(得分:0)
对于在线软件,您可以向买方索取电子邮件地址以及姓名。您可以对这些值应用算法将它们转换为大数。您提示用户输入号码,如果计算出的号码与用户输入的号码相匹配,则存储号码并启用软件。
我使用的是Plimus,这是一种提供我的软件并向我收取费用的服务。我将密钥生成器存储在他们的服务器上,该服务器根据客户在线订单中的信息生成序列号。
对于收缩包装(现成的)软件,您仍然可以执行此操作,但是您需要某种类型的在线激活模式,这种模式基本上会强制用户在首次运行时进行注册。这允许您收集电子邮件地址和名称,并将其序列号发送给他们。用户通常不喜欢这样。如果你的服务器坏了怎么办?但是,如果您的软件足够好并且您提供了不错的支持来帮助他们注册问题,他们将愿意这样做。
对于现成的软件,通常,使用一些算法来生成一系列大数,每个大数匹配某些算法并启用软件。每个软件副本都附带一个序列号。
在我看来,最困难的问题是让用户能够试用该软件。您可以提供退款,但您需要一种方法来撤销该软件。您可以拥有试用版,但试用版软件更难,因为您不想让他们继续使用试用版。创建免费(永久)限制版本更简单,付费版本还有其他功能。
答案 3 :(得分:-2)
使用java很有吸引力,因为它很快并且不需要极客般的技能来编码。但我不认为您可以DRM成功用Java创建的应用程序。要从这个错误中恢复,从现在开始使用C / C ++进行编码。