簡體   English   中英

如何獲得Java中每個用戶/ PC唯一的ID或字符串?

[英]How do I get an ID or String which is unique for every user/pc in Java?

我正在尋找一個唯一的ID或字符串來標識用戶或PC。 我正在使用一種使用唯一ID或String的安全性方法來創建Java腳本。 我以前使用過MAC地址,但是由於我正在編碼的開發人員處進行了更新,因此不再允許這樣做。 還有另一種方法來獲取某種唯一ID來標識允許的用戶或個人計算機嗎? 有關更多信息:我正在為RSBot編碼,這是一個運行用戶創建的Java腳本的開源程序。

預先感謝凱文。

OSHIJava的免費基於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;
    }
}

具體參見java.util.UUID

UUID.randomUUID();

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

請注意,這是隨機的,但不可重現 如果您需要能夠在同一台計算機上一遍又一遍地生成相同的ID,那不是您所需要的。

您可能還想看看JUG-

基於以太網設備的GUUID,隨機,時間等

http://wiki.fasterxml.com/JugHome

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM