我开发了一个基于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