Java:通过软件或服务器进行许可证身份验证和验证?
Posted
技术标签:
【中文标题】Java:通过软件或服务器进行许可证身份验证和验证?【英文标题】:Java: License authentication and validation via software or server? 【发布时间】:2011-03-05 20:47:11 【问题描述】:我需要一些关于如何验证许可证(用户/许可证密钥)的提示。
像许多游戏一样,从公司服务器验证 cd 密钥是不是更好。是否有关于如何在不被“破解”或“修补”的情况下实现这一点的指南?
或者在软件中验证用户/许可证密钥更好吗?过了一会儿,您不会看到注册机在网上漂浮吗?
请指教。
【问题讨论】:
【参考方案1】:您的计划的售价是多少,您希望获得多少销售额?如果任一答案低于 50,那么您很可能不应该过度思考。是的,您可以反编译 Java,但如果您向少数认识的人出售产品,他们将不具备这样做的知识(或者他们自己会这样做)。游戏被破解是因为数百万人想玩它。您试图以 10 美元的价格出售一些随机程序,或者任何应该被忽视的东西 :) 如果它确实被破解,请发布具有更好保护的 2.0 版...
【讨论】:
您好,我正在销售按用户(席位)许可证。所以我正在寻找一种方法来执行这一点。因此,如果有 50 个人在一家公司运行该软件,他们将被收取 50 x 150 美元的费用。如果 1 人运行它,它的成本为 150 美元。基本上,它包括当年的支持和更新。【参考方案2】:如果您在客户端执行此操作,则可以反编译代码并学习算法。将其保存在服务器端可以防止这种情况发生。
如果您只是返回“真/假”类型的事物,则可以开发一个代理服务器,它始终简单地返回“真”,以便客户端认为它在未启用时已启用。
您需要在服务器上完成这项工作,并为网络通信提供一些加密方法。
即使这样,仍然有可能击败这样的计划(我不会详细介绍,但几乎所有做这种事情的应用程序都是可以击败的)。要真正完成这项工作,您必须在服务器而不是客户端上做一些实际工作,这样就不能简单地伪造结果。
【讨论】:
是的,我认为这是最好的方法。服务器端逻辑ftw。【参考方案3】:是否有关于如何在不被“破解”或“修补”的情况下实现这一点的指南?
您可以做的任何事情都不会让别人破解您的许可证密钥系统。您的程序越受欢迎,人们就越有可能尝试破解,并且有人会成功。
我不确定您是否会找到关于如何使破解变得困难的良好公开指南,因为这样的文档还会为破解者提供大量破解工作的线索。 (软件 DRM 是“好人”和“坏人”之间永远的军备竞赛。)
IMO,完全不值得尝试为您的软件赚取最后一滴收入。那些破解的钥匙并不真正代表销售损失。使用它们的人很可能无论如何都不会购买您的软件。只需将它们作为收入来源注销,并集中精力使您的软件成为购买许可证的诚实人的良好体验。 (你能做的最糟糕的事情就是使用一些 DRM 方案,这让诚实的客户很难过!)
【讨论】:
以上是关于Java:通过软件或服务器进行许可证身份验证和验证?的主要内容,如果未能解决你的问题,请参考以下文章
如何通过 HTTP 使用 Java(或 C#)中的摘要身份验证 HTTP 发送 SOAP 请求?