我怎样才能在java中获得cpuid?

Fre*_*man 9 java encryption drm uniqueidentifier cpuid

我想用java创建加密; 我如何获得CPU ID或任何东西在PC中是独一无二的,如BIOS或...

例如System.getCpuId(); :)这只是一个例子;)

非常感谢 ...

Ste*_*eod 6

那么你想要一个识别用户计算机的唯一号码(或字符串?)?或者至少足够独特,重复的可能性非常低,对吧?

您可以获取网络接口的Mac地址.这做了很多假设,但它可能足以满足您的需求:

final byte[] address = NetworkInterface.getNetworkInterfaces().nextElement().getHardwareAddress();
System.out.println("address = " + Arrays.toString(address));
Run Code Online (Sandbox Code Playgroud)

这给你一个字节数组.您可以通过多种方式将其转换为id ...就像十六进制字符串一样.

当人们更换计算机中的硬件时,预计会得到支持.

  • 这很容易改变(http://www.topbits.com/how-to-change-a-mac-address.html) (2认同)

Saj*_*ani 1

如果您需要唯一的 ID,您可以使用UUID

import java.util.UUID;

public class GenerateUUID {


      public static final void main(String... aArgs){
        //generate random UUIDs
        UUID idOne = UUID.randomUUID();
        UUID idTwo = UUID.randomUUID();
        log("UUID One: " + idOne);
        log("UUID Two: " + idTwo);
      }

      private static void log(Object aObject){
        System.out.println( String.valueOf(aObject) );
      }
    } 
Run Code Online (Sandbox Code Playgroud)

运行示例:

>java -cp . GenerateUUID
UUID One: 067e6162-3b6f-4ae2-a171-2470b63dff00 
UUID Two: 54947df8-0e9e-4471-a2f9-9af509fb5889
Run Code Online (Sandbox Code Playgroud)

  • 我认为OP想要一个稳定的标识符(即该机器将保持不变)并且不易伪造。 (6认同)
  • @Mike Redford:当然有些应用程序可以使用 UUID。它是通用的:-) (2认同)