实施产品密钥

时间:2012-05-08 05:50:58

标签: java

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

4 个答案:

答案 0 :(得分:0)

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

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

这显然不会击败坚定的攻击者......但是一个坚定的攻击者将能够击败你实施的任何其他计划。如果您只想确保注册并防止随意复制,这种方案应该足够好。

答案 1 :(得分:0)

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

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

希望这会对你有所帮助。

答案 2 :(得分:0)

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

答案 3 :(得分:0)

根据Mikera的回答,确定安全需求非常重要。在你的情况下,你可能只需要一个快速的方法来过滤掉99.9%的所有想成为黑客的黑客。没有任何法律行动会阻止剩余的0.1%,但你(可能)不需要担心它们。迈克拉的解决方案有点过于简单,但在你觉得自己需要更好的东西之前应该会很好。

更强大但更笨重的解决方案是让您的用户在您的网站上注册,并让您的Java应用程序向用户询问此产品密钥(由您的网站随机生成),然后从网站上查找。缺点是它开始感觉像登录程序而不是激活程序,你需要连接到互联网,并且任何体面的盗版者都可以相对容易地绕过它。

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