我想生成';散列';这将识别给定的机器,如何在Java中做到这一点?

我想生成';散列';这将识别给定的机器,如何在Java中做到这一点?,java,security,hardware,Java,Security,Hardware,我想为给定的机器生成“哈希”,所以我的应用程序只能在这台特定的计算机上运行。 我需要读取一些特定于硬件的ID、字符串和序列号。我需要用Java实现这一点:/ 我想这很难,有什么想法吗? 我知道这是一种“通过隐蔽实现的安全”,但这只是一种简单的保护(还有其他保护,如通过SSL连接到主服务器等)网络接口类可以用来获取MAC地址等。 System.getProperty()还可用于获取操作系统信息等。 当然,这两个值都可以更改。有一点不是唯一的,但许多“许可证管理器”仍然使用主机名。这种检查可能会失败

我想为给定的机器生成“哈希”,所以我的应用程序只能在这台特定的计算机上运行。 我需要读取一些特定于硬件的ID、字符串和序列号。我需要用Java实现这一点:/ 我想这很难,有什么想法吗?
我知道这是一种“通过隐蔽实现的安全”,但这只是一种简单的保护(还有其他保护,如通过SSL连接到主服务器等)

网络接口类可以用来获取MAC地址等。
System.getProperty()
还可用于获取操作系统信息等。
当然,这两个值都可以更改。

有一点不是唯一的,但许多“许可证管理器”仍然使用主机名。这种检查可能会失败,用户可以继续切换机器名称,但大多数用户都懒得这么做

Inet4Address.getLocalHost().getCanonicalHostName();

在许可证文件中输入该名称(如果您正在创建类似许可证的内容),然后在“文档”上签名。

真正解决方案的起点是TPM Java库

它是LGPL,可以在这里检索


这保证为所有较新的CPU提供一个唯一的密钥。

您的意思是像UUID一样吗?相关线程:销售支持,而不是软件。垃圾软件不值得破解,但是用来保护好软件的代码会被破解。注意你使用的信息。例如,有些人不喜欢通过web发送他们唯一的处理器id。人们总是可以更换他们的网卡、硬盘、鼠标、主机名、ISP提供商或。。。。