我開發了一個基於Java的桌面應用程序,我想用產品密鑰分發它,以便在輸入正確密鑰時激活應用程序。所以,對於個人用戶來說,產品密鑰應該是不同的。我如何在Java中實現這個概念。在此先感謝Implement產品密鑰
回答
這取決於您希望您的密鑰安全性有多強。
一個非常簡單的方法是隻創建用戶的電子郵件地址的哈希值,並把這個給用戶的關鍵。應用程序可以詢問用戶的電子郵件地址和密鑰,然後重新創建哈希碼以確認密鑰對於該用戶是否正確。
這顯然不會打敗一個堅定的攻擊者......然而,一個堅定的攻擊者就能夠打敗你制定任何其他方案。如果你想要做的只是確保註冊並防止隨意複製,那麼這種方案應該足夠好。
我想你可以通過查找處理器或硬盤驅動器的序列號做的,這意味着處理器序列號和硬盤的序列號將是每一臺機器唯一的,所以你的程序應該得到這些序列號,並應用一些算法在其上生成產品密鑰。這裏是在java中找到處理器和硬盤的序列的鏈接。
http://www.rgagnon.com/javadetails/java-0580.html
希望這會幫助你。
一個我聽說過被分配一個序列號,有的使用客戶名稱,每個副本。然後使用非對稱密鑰計算密鑰,簽名。您的程序可以使用公鑰驗證簽名。這QA更詳細地回答你的問題。
以Mikera的答案爲基礎,以您的安全需求爲目標非常重要。就你而言,你可能只需要一個快速的方法來過濾掉99.9%的所有黑客。沒有任何法律行動會阻止剩餘的0.1%,但是你(可能)不需要擔心它們。 Mikera的解決方案有點簡單,但應該工作得很好,直到你覺得你需要更好的東西。
更健壯但更笨重的解決方案是讓用戶在您的網站上註冊,並讓您的Java應用程序詢問用戶該產品密鑰(由您的網站隨機生成),然後再從網站。缺點是它開始感覺像一個登錄程序而不是激活程序,你需要連接到互聯網,並且它仍然可以被任何體面的海盜相對容易地繞過。
基本上,除非你從字面上配合你的產品密鑰的每一個行動,你的程序(這可能會殺了性能),任何人都可以簡單地刪除/從實際的二進制代碼中跳過產品密鑰檢查。這是一個活躍的研究領域。
- 1. 生成產品密鑰
- 2. 驗證產品密鑰
- 3. 產品密鑰優化
- 4. 重現Windows產品密鑰輸入
- 5. 使用Ubercart的產品密鑰模塊
- 6. Woocommerce產品說明 - 元數據密鑰?
- 7. Visual Studio 2013許可證產品密鑰
- 8. 如何恢復產品密鑰?
- 9. 爲軟件生成產品密鑰
- 10. 檢索的Windows 8產品密鑰
- 11. Team Foundation Server 2012 Express產品密鑰
- 12. 抓取系統產品密鑰
- 13. 如何從magento中的產品url密鑰獲取產品詳細信息?
- 14. 用批量命令激活Windows 8.1和BIOS產品密鑰
- 15. 許可證密鑰軟件產品的生成方法
- 16. 格式化HTML輸入文本產品密鑰
- 17. 我可以爲2站使用Visual Studio產品密鑰嗎?
- 18. 我如何才能在Corona中獲得Openfeint的產品密鑰?
- 19. 加載模塊,安全和產品密鑰
- 20. ELMAH - 使用相同的密鑰的產品已經存在
- 21. 閱讀文本文件來查找活動的產品密鑰
- 22. 使用WMI的Microsoft產品許可證密鑰
- 23. Visual Studio 2012產品密鑰向後兼容
- 24. 測試Windows產品密鑰是否有效
- 25. Windows應用商店側裝產品密鑰
- 26. Windows產品密鑰 - 來自不同技術的不同答案
- 27. 訂閱過期後,MSDN產品密鑰是否仍然有效?
- 28. 爲iPhone應用程序創建產品密鑰? [iPhone SDK]
- 29. 如何使用btcompiler和許可證密鑰保護PHP產品?
- 30. 驗證保存在數據庫中的產品密鑰
也許這線程將幫助您:http://stackoverflow.com/questions/646086/implementation-for-product-keys – acattle