2011-03-16 56 views
2

已搜索全部,但一直未能找到解决方案。我需要为产品密钥系统创建一个(半)唯一的计算机ID。它不能从MAC地址得出以下几个原因:Java:基于非MAC的唯一计算机ID

  1. MAC地址是多变
  2. 程序停止,如果用户更改网卡工作
  3. 如果计算机没有网络将无法正常工作卡

我更关心最后两个比第一个。

最好将它建立在主板/ CPU的序列号上。独立于平台的解决方案非常棒,但是平台特定的解决方案是可以的(只要有Windows/OSX/Linux的解决方案)。

对不起,如果这已被覆盖之前,我只是找不到它。

+0

只要自己盖章,在java.util.prefs.Preferences中存储一个随机数(UUID.randomUUID()也可以)。只要它在那里,就认为它是独一无二的。 – bestsss 2011-03-16 07:49:22

回答

2

我认为有一些基于创建计算机的“指纹”的解决方案。我所在的一个客户端网站正在将此视为确保用户身份进行单点登录解决方案的一种方式。最终他们认为这太难了,太容易绊倒了,所以他们放弃了。

CPU ID(我认为)可以在BIOS中禁用。所以你需要找到你可以访问的东西,因此为什么大多数人似乎都喜欢MAC地址。但正如你所说,他们可以改变。但所有其他事情都可以。

你可能需要考虑的是事情多久改变一次? MAC可以改变,但多久?奇怪的时候,一张网卡发生了变化,是否真的会伤害用户重新建立自己的身份证与新卡。

也许这可能会起作用,因为产品注册的一部分要求用户提供密码或短语。然后注册他们的机器MAC地址。如果他们更换网卡,他们可以使用密码或短语与您联系,您可以使用新的MAC地址进行重置。这不会那么简单,但总的概念可能适用于你。

最后想一想你的产品。值得做多少工作来阻止未经授权的用户?你愿意拥抱这些用户并给他们注册的理由吗?也许是你放弃的软件的一个轻量版本。或者在中央服务器上注册会为您提供额外的数据和材料等。

有相当多的不同的商业模式围绕着这一方浮动传统的一步仍然赚钱。

+0

是的,只是略过它可能没问题。我正在做的是在java.util.prefs.Preferences中存储已签名的产品密钥。我想确保人们不能仅仅通过比较基于计算机硬件的哈希来将签名密钥复制到另一台计算机。但也许这只是徒劳吗? – Jonah 2011-03-16 18:17:37

0

您可以看到airbnb如何跟踪每个新用户/计算机,就好像您使用同一台计算机打开更多帐户一样,您将被阻止。 这个网站airbnb,homeaway是跟踪用户的主人,与他们核对,你将有一个答案。