独立于平台的独特机器ID Java



我正在寻找一个独立于平台独立的计算机唯一的值。这是为了将计算机注册到一个帐户,因此您不能从未注册的机器上登录。我不想使用MAC地址,因为很容易更改。我想知道也许从几个硬件组件中获取ID并将它们组合在一起以获得机器的唯一ID。但是,我不确定如何使用Java从上述组件中获取ID。我进行了一些研究,发现了一种检索CPU序列号的方法,但这仅适用于Windows,因为它只是运行了临时的Visual Basic Command/script/whitch。感谢任何信息,谢谢。

您对能够欺骗MAC地址是正确的。没有MachineId您不能以一种或另一种方式欺骗它,这就是为什么机器特定标识通常是个坏主意的原因。对于Java来说,这是一个更糟糕的想法,因为Java的整个点要从硬件中抽象出来。实际上,这只会给您带来JVM和网络堆栈以获取详细信息。

所以我只能看到两个选项。

首先,您可以尝试生成主机名,当前类Path(S),System属性和JVM值的某种组合的哈希。沿着该行,您可能会看到您从system.getEnv()或system.getProperties()

获得的值

第二种方法是使用本机运行时API返回系统特定值,但是您需要为客户端试图支持的每个OS类型运行特定的命令。示例:

runtime.getRuntime()。执行(" some_command_line_prog_that_that_returns_sys_info");

最新更新