java获取唯一的服务器ID以供参考

ava*_*lon 5 java hash spring uniqueidentifier server

我有一个在服务器X上运行的独立命令行java应用程序.我需要知道运行它的机器的唯一ID.如何获得此ID?也许像哈希一样.我不想保留那里有ID的文件.有没有办法获得这个不依赖于IP,硬件等的唯一ID?

Div*_*ity 2

您可以读出服务器的MAC地址并将其用作唯一密钥。

以下代码片段取自http://www.tutego.de/blog/javainsel/2013/12/mac-adressen-auslesen/,显示了可能的实现。

 for ( NetworkInterface ni : Collections.list(NetworkInterface.getNetworkInterfaces() ) ) {
   byte[] adr = ni.getHardwareAddress();
   if ( adr == null || adr.length != 6 )
      continue;
   String mac = String.format( "%02X:%02X:%02X:%02X:%02X:%02X",
                                adr[0], adr[1], adr[2], adr[3], adr[4], adr[5] );
   System.out.println( mac );
}
Run Code Online (Sandbox Code Playgroud)

很抱歉,来源是德语,但我很确定也有英文文档。

由于评论而编辑:

当然必须考虑到 MAC 地址也可能有重复。

以下链接显示了可能的原因 https://serverfault.com/questions/462178/duplicate-mac-address-on-the-same-lan-possible

无论哪种方式,使用 MAC 地址作为此问题的解决方案都是一种实用的方法。

使用散列方法: http://preshing.com/20110504/hash-collision-probabilities/

或者

GUID:假设 GUID 始终是唯一的是否安全?

也不保证可能重复的风险为 0.0%。