如何为我的Java软件创建许可证?

我有一个很大的问题。那就是“如何为我的软件创建许可证”。

OK,以为这是我的许可证密钥-12345YW

当用户输入此许可证密钥时,该软件应允许他使用该软件。好的,一旦用户输入了许可证密钥,我的软件就必须记住他已经输入了有效密钥,对吗?(因为从下一次开始,它不需要提示许可证对话框)我的问题是,我该如何制作我的许可证?软件还记得用户已经输入了许可证吗?在基于Windows的应用程序中,大多数操作是输入Windows注册表项。我可以一样吗?(那Ubuntu和Mac呢?)

我想编写一个.txt文件,以便m软件可以读取它并查找是否输入了许可证。但是,这是我能想到的最不安全的系统。

因此,如果输入上述许可证密钥,如何使我的软件记住它?如果您也可以给我一个代码示例,我真的很高兴(即:如果Windows注册表等,我不知道如何编辑注册表)。请帮我…

回答:

许可软件尚未解决,或者至少在没有给用户带来麻烦的前提下安全地进行许可,并且没有在主要基础设施上进行投资也无法解决。

您存储许可证状态所依据的位置/机制基本上无关紧要-注册表并不比文本文件更安全-

花费几秒钟即可访问内容,并且将条目“隐藏”在注册表的某些远程死水中并没有没有太大的帮助。

据推测,您的软件具有某种持久性(数据库或文件系统)。您可以使用相同的持久性机制来存储注册状态。

当然,试图未经授权访问您的软件的人都可以访问您的软件可以读取/写入的任何内容。因此,您可以加密记录;那么您就需要管理该加密机制的密钥;afaik,目前没有强大的解决方案。

因此,您可能会在互联网上拥有一个“许可证服务器”。您的软件可能会读取您计算机的唯一标识符(例如MAC地址),将其发送到许可证服务器,然后让服务器返回许可证状态。同样,这是很容易避免的,现在您需要用户在线才能使用您的软件。

如果您的软件对用户很有吸引力,那么黑客将在几天之内破坏许可证密钥的保护,并在Internet上发布详细说明。苹果竭尽全力保护Iphone /Ipad上的软件,但越狱应用程序将其解锁。

在我看来,除非您的软件的收入达到数千万美元,否则您应该使用户的生活尽可能轻松,并且不要过分担心安全性-使用现成的东西(例如@bunting推荐),或准备一个文本文件。

具体来说,我会:

  • 在应用程序启动时检查是否存在有效的许可证文件
  • 如果不存在许可证文件,请要求用户输入许可证密钥
  • 将该密钥与您的许可证密钥进行比较
  • 在您的应用目录中,将“有效”文件写入文件系统;或者,修改现有的配置文件。

这很容易打破。因此您可以再走一步。

首先,Java应用程序易于反编译,攻击者可以轻松读取您的“许可证”常量。您应该使用混淆器使此操作变得困难(尽管并非不可能)。

其次,您可以加密本地许可证数据;对于完全不熟悉的黑客来说,这也将变得更加困难。您可以在加密方案中包含一些本地数据,这样黑客就不能仅使用有效的许可证密钥来重新分发您的应用程序(例如,通过将许可证密钥乘以计算机的MAC地址)。

在这两种情况下,您都是将许可证“硬接线”到应用程序中。在公告板上,黑客会发布应用程序的许可证密钥,您只能通过使用新密钥发布新版本的应用程序来做出响应。

以上是 如何为我的Java软件创建许可证? 的全部内容, 来源链接: utcz.com/qa/411174.html

回到顶部