可能的重复:
可靠的方式产生独特的硬件ID

我试图产生一个ID,将是独一无二的特定计算机。ID不会产生随机。它将计算的基础,使得所产生的ID于计算机的一个将是固定的和独特的电脑A每次执行该程序的计算机上,它将继续产生同样的ID及时执行的另一台计算机上,它将产生的另一个ID独的计算机。这是为了确保两个计算机没有同样的身份证。

我的挑战: 我的程序,以便能够产生一个ID唯一的一台计算机,它需要执行的计算基于一种独特的计算机的执行。

我的问题: 我怎么能得到一个独特的价值,以计算机,这样,我可以使用的价值作为一种在标识生成的程序?

是否有可能获得的值的计算机硬件(例如主板)就是唯一的电脑吗?这样的价值是最有可能不改变,只要该计算机的主板不是替代。

有帮助吗?

解决方案

MAC地址?这就是(实际目的) 独特的每一个NIC 因此,它保证的可再现性,即使用户是双启动。肯定有罕见的情况下的人交易的牌,但是 结合与其他指标 (不仅是使用此,由于网络卡,可以改变的),它仍然是可能的。

你将如何得到它?

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

    return networkInterface.getHardwareAddress();
}

如果你想要一串表示,这么做

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地址可以欺骗。但你说的一小部分人口这样做,除非你使用这个反盗版的东西,其独特的足够了。

其他提示

Win32产生一个计算机SID,应该是独特的每个安装即可获得通过WMI或活动目录,但是漂亮的平台具体的。你也可以使用的MAC地址,正如其他人已经提到的,只是确保这是一个物理网络适配器,作为虚拟适配器倾向于分享同一MAC地址,跨越的计算机。

然而,usb驱(或GUID)是128位数字,都应该是保证独特的,并且实际上创建的目的解决这个问题的产生独特的标识跨多个随机的机器。根据Wikipedia:

把这些数字的角度, 一个年度的风险被击中 陨石是估计一个 机会,在17亿美元,[25个]这意味着 概率大约是0.00000000006 (6×10-11日),相当于几率 创建几十万亿 付一年,并具有一个 重复。换句话说,只有后 产生1亿付每 第二,为下一个100年, 概率的建立只是一个 重复,将大约50%。的 概率的一个重复会 大约50%,如果地球上的每个人 拥有600万付.

总人数的可能的组合,是2^128(或3×10^38),因此我倾向于相信它。此外,大多数现代usb驱发电机不使用V1了算法(即一个基于关闭MAC地址),因为它被认为是一个安全问题由于一个事实,即一个可以告诉当GUID是产生和人产生的。在Win32的世界,一个安全补丁的大约Win2K或NT4改为使用V4版本的算法,这是基于伪随机编号,而不是MAC,并JVM有总是使用V3/V4版本。

编辑:该方法用于生成usb驱的Java是通过java。工具.Usb驱类。

一个简单的方法来做到这一点,是读取的网硬件或"mac"地址。

http://download.oracle.com/javase/6/docs/api/java/net/NetworkInterface.html#getHardwareAddress()

Mac地址是不是很独特的,因为人们认为,作为他们得到重新使用,随着时间的推移。但可能性的一个应用程序或网络具有两个相同的是相当低的。

MAC地址都是独特的足够为什么你。看看 http://en.wikipedia.org/wiki/MAC_address

你不指定语言的使用。它可以更容易在一些语言比其他人。这里是如何做到这一点在Java http://www.kodejava.org/examples/250.html.谷歌围绕你的语言。

你最好的选择是基ID on MAC地址的主要网络适配器。

这是潜在的可能会改变在somepoint,但是任何单个硬的组成部分。

FYI Guid的计算使用的MAC地址。

你有没有接到任何信息,说明在这篇文章?Windows-只有

http://msdn.microsoft.com/en-us/library/aa394587.aspx

序列号的资产标签

另一种选择森林论你使用英特尔的芯片是处理器的序列号,假设你可以确保功能启用。看看 英特尔串#注意 更多的信息

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top