2011-03-16 55 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是跟蹤用戶的主人,與他們覈對,你將有一個答案。