【发布时间】:2012-09-21 16:42:54
【问题描述】:
我们希望在 Windows 8 Metro 应用中使用唯一的设备标识符,建议使用 ASHWID,此处记录:
http://msdn.microsoft.com/en-us/library/windows/apps/jj553431.aspx
我很想知道如何才能保证这是独一无二的。该格式包括每个硬件组件两个字节,其中最唯一可识别的是 MAC 地址和硬盘序列号。但是这些值只有两个字节似乎还不够。
如果使用的字节不是最低有效数字(最右边,人类读取它们),那么生产线上相邻的两台相同的笔记本电脑可能具有相同的 ASHWID。 MAC 和驱动器序列可能是相邻的。
所以,我想我的问题的症结在于,必须生产多少台设备具有相同的 CPU 类型和内存配置,然后才有可能遇到重复。似乎与Birthday Paradox 的问题相同,所以我找到了一个计算器并输入了数字:)
使用一个 MAC 地址和一个硬盘,每个硬盘都有两个字节的标识符,您有大约 40 亿个排列。一旦你只分配了 6,000 个,大约 50/50 有两个是相同的。
(前往http://jeff.aaron.ca/cgi-bin/birthday并插入“6563”和“4294967296”进行实际计算)。
所以这看起来真的不是很独特。我对这个标识符持怀疑态度是对的,还是我错过了一些真正重要的东西?
【问题讨论】:
-
我不相信 ASHWID 的设计是独一无二的。实际上,您链接的文档页面上甚至都不存在单词 unique。
-
“实现每个设备的逻辑”的含义是可以通过 ID 来识别单个设备(不是少数)。
-
根据 Microsoft 提供的信息,建议使用 ASHWID 似乎是为了检测已知用户的硬件变化。例如:Acmeflix 想要将视频流式传输给付费客户。为了防止用户与他们的所有朋友共享他们的凭据,Acmeflix 允许每个帐户最多链接 5 台设备。 ASHWID 将允许该方案发挥作用。
-
你应该这样回答。
标签: windows-8 microsoft-metro uniqueidentifier