MAC地址是什么?什么是PC的唯一标识符?

3

我有一台双核PC,它有两个MAC地址:00-1D....和00-21....。 这些ID是为了这两个核心吗? 如果我想获取这台PC的唯一ID,如何使用Java调用获取?也许Java中有类似于“System.getId()”的东西?

Frank


1
如果有人将网卡卖给其他人和/或升级当前的网卡会怎样? - BalusC
8
MAC地址是1 Infinite Loop, Cupertino, CA 95014, 美国。 ;) - Powerlord
1
MAC地址与CPU无关,而是与网络接口卡(NIC)相关联。如果您的计算机有两个MAC地址,则可能具有两个网络接口,例如有线和无线接口。 - Chris Nava
5个回答

4

4
(在我回答这个问题的时候,已经有人回答了MAC地址是什么,所以我不会重复解释,我只回答一个未回答的问题,下投票没有意义)
如果我想获取此计算机的唯一标识符,如何使用Java调用获取?
您不应该将唯一标识符绑定到硬件,而应绑定到最终用户。硬件可能会更改,但最终用户不会。因此,请要求最终用户填写一些注册表格(或像Pascal所回答的那样提供一个加密狗)。

+1 来平衡取消赞成的投票。 - Pascal Thivent
填写表单是行不通的,因为有人可能会用虚假信息填写表单,而其他100个人可以使用这些已发布的虚假信息来访问程序。 我考虑过使用用户名或机器名,但它们也不起作用,因为有人可以使用该用户名或将其PC重命名为该机器名来使用应用程序。 - Frank
我本意是在用户填写并发送表单(包括用户的电子邮件)后,通过电子邮件或其他方式提供一个密钥。如果需要,可以在网络上添加一个挑战-响应系统来验证密钥是否仍然有效。但是,仍然有可能对您的程序进行逆向工程,并重新编译时删除或伪造检查部分。毕竟,一切都是可被入侵的 ;) - BalusC

4
MAC地址是标识网络卡接口的数字。您不能可靠地使用它来识别特定的计算机(用户可以更改他的NIC,高级用户甚至可以动态更改MAC地址)。
也许您可以使用软件保护dongle(似乎有Java解决方案)。但请注意,即使这种解决方案也无法解决整个受信任客户端的问题。

2

来自Google :: 媒体访问控制地址(MAC地址)是分配给大多数网络适配器或网络接口的唯一标识符。

这些ID是为网络接口而设的。由于这个原因,它们并不是永久不变的,也不总是唯一的。

请查看java.net.NetworkInterface和java.net.InetAddress以获取提取MAC信息的方法。


2
MAC是媒体访问控制标识,前两个字节代表国家,4个字节代表制造商。没有两个适配器是相同的,不幸的是,由于现代NIC的大规模生产,MAC可以轻松地动态更改。在旧时代,NIC由DIP开关(双行内引脚)组成,允许您更改NIC的设置,例如IRQ,跳线地址等等...它们与处理器核心无关,那是一个单独的硬件问题。
获取MAC地址没有可移植的方法,理论上,您可以在*nix / Linux变体中使用ifconfig命令。对于Windows环境,您可以使用ipconfig命令,使用任何一种命令,您都可以搜索相关的适配器...因为此示例在Linux下将显示...我的网络适配器称为“eth0”...
ifconfig eth0 | grep HWaddr | cut -d\t -f4
将返回:
HWaddr 00:02:03:04:05:06

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接