有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java实现产品密钥

我已经开发了一个基于Java的桌面应用程序,我想用产品密钥分发它,这样当输入正确的密钥时,应用程序就会被激活。因此,产品密钥对于单个用户应该是不同的。如何在Java中实现这个概念。提前谢谢


共 (4) 个答案

  1. # 1 楼答案

    我认为你可以找到处理器或硬盘的序列号,这意味着处理器序列号和硬盘序列号对于每台机器都是唯一的,所以你的程序应该得到这些序列号中的任何一个,并在上面应用一些算法来生成产品密钥。下面是查找java中串行处理器和hdd的链接

    http://www.rgagnon.com/javadetails/java-0580.html

    希望这对你有帮助

  2. # 2 楼答案

    我听说过的一种方法是给每个副本分配一个序列号,有些使用客户名称。然后使用非对称密钥计算密钥签名。您的程序可以使用公钥验证签名。这个QA更详细地回答了你的问题

  3. # 3 楼答案

    基于Mikera的答案,针对您的安全需求非常重要。在你的情况下,你可能只需要一种快速的方法来过滤掉99.9%的黑客。除非采取法律行动,否则不会阻止剩下的0.1%,但你(可能)不需要担心它们。米凯拉的解决方案有点简单化,但在你觉得需要更好的东西之前,应该可以很好地工作

    一个更强大但更庞大的解决方案是让用户在你的网站上注册,让你的java应用程序向用户索要这个产品密钥(由你的网站随机生成),然后用户会从网站上查找它。缺点是,它开始感觉像是一个登录过程,而不是激活过程,你需要连接到互联网,而且它仍然可以相对容易地被任何体面的海盗绕过

    基本上,除非你真的将产品密钥绑定到程序中的每一个动作(这可能会降低性能),否则任何人都可以简单地从实际的二进制代码中删除/跳过产品密钥检查。这是一个活跃的研究领域

  4. # 4 楼答案

    这取决于您希望密钥安全性的强度

    一个非常简单的方法是创建用户电子邮件地址的散列,并将其作为密钥提供给用户。该应用程序可以要求用户提供电子邮件地址和密钥,然后重新创建哈希代码以确认该密钥对该用户是正确的

    这显然无法击败一个意志坚定的攻击者。。。然而,一个坚定的攻击者将能够击败你实施的任何其他计划。如果你只想确保注册和防止随意复制,这种方案应该足够好了