当前位置: 首页 > 面试题库 >

生成特定计算机唯一的ID

冷浩瀚
2023-03-14
问题内容

我正在尝试生成特定计算机唯一的ID。该ID不会随机生成。这将基于计算,以便为计算机A生成的ID将是固定的,并且对于计算机A是唯一的。每次在计算机A上执行程序时,它将继续生成相同的ID,并且在另一台计算机上执行时,它将生成该计算机唯一的另一个ID。这是为了确保两台​​计算机没有相同的ID。

我的挑战: 为了使我的程序能够生成计算机唯一的ID,它需要基于执行该计算机的计算机唯一的种子来执行计算。

我的问题: 如何获得计算机唯一的值,以便可以将该值用作ID生成程序中的种子?

是否可以从该计算机特有的计算机硬件(例如主板)中获得价值?这样,只要不更换计算机的主板,该值很可能不会改变。


问题答案:

MAC地址?每个NIC都具有(为了实际目的)唯一的特性,因此即使用户是双重引导,它也可确保再现性。当然,很少有人交易卡的情况,但
结合其他指标 (不仅可以使用此功能,因为可以更改网卡),还是有可能的。

你怎么会得到它?

public static byte[] getMACAddress() throws SocketException, UnknownHostException {
    InetAddress address = InetAddress.getLocalHost();
    NetworkInterface networkInterface = NetworkInterface.getByInetAddress(address);

    return networkInterface.getHardwareAddress();
}

如果要使用String表示形式,请执行此操作

for (int byteIndex = 0; byteIndex < macAddress.length; byteIndex++) {
    System.out.format("%02X%s", macAddress[byteIndex], (byteIndex < macAddress.length - 1) ? "-" : "");
}

(感谢http://www.kodejava.org/examples/250.html)

注意: 如评论中所述,可以欺骗Mac地址。但是您谈论的只是一小部分人在这样做,除非您将其用于反盗版,否则它的独特性就足够了。



 类似资料:
  • 问题内容: 我正在尝试获取0到100之间的随机数。但是我希望它们是唯一的,而不是在序列中重复。例如,如果我有5个数字,它们应该是82,12,53,64,32而不是82,12,53,12,32(我使用了这个数字),但是它在序列中生成相同的数字。 问题答案: Add each number in the range sequentially in a list structure. Shuffle i

  • 我能够使用(max-min)min公式创建1-10范围内的随机数。 这是用于在1-10之间制作随机数的代码。 这是给10-99的 但是我想生成具有特定数字或唯一数字的随机数。 以下是具体数字。 128 137 146 236 245 290 380 470 489 560 678 579 129 138 147 156 237 246 345 390 480 570 679 589 120 139

  • 如何在cmd上运行csr生成命令。exe openssl req-节点-newkey rsa: 2048-keyoutwww_mydomain_com.key-outwww_mydomain_com.csr-subj"/C=BB/ST=CCC/L=DDD/O=EEE。/OU=IT/CN=mydomain.com"

  • 本文向大家介绍PHP生成唯一ID之SnowFlake算法,包括了PHP生成唯一ID之SnowFlake算法的使用技巧和注意事项,需要的朋友参考一下 前言:最近需要做一套CMS系统,由于功能比较单一,而且要求灵活,所以放弃了WP这样的成熟系统,自己做一套相对简单一点的。文章的详情页URL想要做成url伪静态的格式即xxx.html 其中xxx考虑过直接用自增主键,但是感觉这样有点暴露文章数量,有同学

  • 问题 你想随机生成一个唯一的标识符。 解决方案 可以根据一个随机数值生成一个 Base 36 编码的字符串。 uniqueId = (length=8) -> id = "" id += Math.random().toString(36).substr(2) while id.length < length id.substr 0, length uniqueId() # =

  • 如何在1到9之间生成9个随机数,而不重复,一个接一个。它类似于:假设生成的第一个随机数是4,那么下一个随机数必须在[1,9]{4}中。我的第一种方法是将每个随机生成的数字添加到一个集合中,从而避免重复。但在更糟糕的情况下,比如我们已经生成了6个数字,我们必须再生成3个数字,这个过程会有点慢。当范围从[1,9]更改为[1,1000]时,这种方法听起来不正确。有人能提出一个替代方法吗。