如何获取Java中每个用户/ PC唯一的ID或String?

时间:2011-06-19 18:17:03

标签: java javadoc

我正在寻找一个唯一的ID或字符串来识别用户或PC。 我正在创建一个带有安全方法的Java脚本,该方法使用唯一的ID或String。 之前我使用过MAC地址,但是由于我正在编写的开发人员的更新,这是不允许的。是否有其他方法可以获得某种唯一ID来识别允许的用户或PC?有关更多信息:我正在编写RSBot,这是一个运行用户创建的Java脚本的开源程序。

提前致谢, 凯文。

3 个答案:

答案 0 :(得分:0)

请参阅java.util.UUID,具体来说:

UUID.randomUUID();

http://download.oracle.com/javase/1,5.0/docs/api/java/util/UUID.html#randomUUID()

请注意,这是随机的,但不是可重现的。如果您需要能够在同一台计算机上反复生成相同的ID,则这不是您所需要的。

答案 1 :(得分:0)

您可能还想查看JUG -

基于以太网设备的GUUID,随机,时间等

http://wiki.fasterxml.com/JugHome

答案 2 :(得分:0)

OSHI是Java的免费的基于JNA的(本机)操作系统和硬件信息库。它不需要安装任何其他本机库。 Maven依赖项:

<dependency>
    <groupId>com.github.oshi</groupId>
    <artifactId>oshi-core</artifactId>
    <version>3.13.0</version>
    <scope>compile</scope>
</dependency>

您可以检索系统信息,例如OS ID,CPU ID,基板ID等。 然后只需结合id即可生成PC UUID:

public String getUID() {
    final byte[] rawInput = StringUtils
            .joinWith(hardwareLayer.getProcessor().getProcessorID(),
                    hardwareLayer.getComputerSystem().getBaseboard().getSerialNumber(),
                    ... )
            .getBytes(StandardCharsets.UTF_8);
    try {
        return UUID.nameUUIDFromBytes(rawInput).toString().toUpperCase();
    } catch (final Exception e) {
        logger.error(e);
        return StringUtils.EMPTY;
    }
}