【问题标题】:Is UUID.randomUUID() return unique value for each time?UUID.randomUUID() 是否每次都返回唯一值?
【发布时间】:2018-03-25 04:45:36
【问题描述】:

我正在为 android 设备获取唯一设备 ID 进行研发,但似乎没有一个解决方案是完美的。

UUID.randomUUID().toString();似乎是一个很好的解决方案,但我想知道在每次调用中这个函数是否返回唯一值?如果它是真的,那就更好了,否则我认为这也不是一个好的解决方案。

获取唯一设备 ID 的研发链接: 1:http://www.ssaurel.com/blog/how-to-retrieve-an-unique-id-to-identify-android-devices/ 2:Is there a unique Android device ID?

【问题讨论】:

  • 不要问自己“如何避免重复?”问问自己“如果出现重复,系统会如何表现?”如果有人窃取了别人的 UUID,一切都会突然崩溃吗?如果没有,不要费心去避免重复,而是采取合理的措施来减轻它们的影响。

标签: android uniqueidentifier


【解决方案1】:

有四种不同的基本类型的 UUID:

基于时间、DCE 安全、基于名称和随机生成的 UUID。

就机会而言,是的,两个设备有可能使用相同的 UUID。你可以通过其他方式来实现。例如

1) 首先获取 UUID 并附加日期时间,这将使 完全唯一的 id

2) 首先获取 UUID 并附加日期时间并附加 IMEI nuber 有了它,这将产生完全独特的 id

有关 UUID 的更多信息,您可以参考以下链接

http://tools.ietf.org/rfc/rfc4122.txt

【讨论】:

  • 感谢您的回答。
  • 1:首先获取 UUID 并附加日期时间,这将生成完全唯一的 id。 [我认为两种不同的设备仍有可能相同]
  • 这将是浪费时间。
  • ralphbecket.blogspot.com/2011/09/… 说,如果你制作了“一百万”个随机 UUID,你将有大约十亿分之一的机会找到碰撞。你将制作比这更少的 UUID。
  • 除非我在 the birthday paradox 数学上做错了,我认为如果你给世界上的每个人一个 UUID,我认为有大约 1/1,000,000,000,000,000,000,000 的机会发现碰撞。 (n = 80 亿人,d = 2^128 个可能的 UUID)
【解决方案2】:

出于所有实际目的,UUID.randomUUID() 的结果是唯一的。但是,由于 UUID 的数量是有限的,因此很明显最终会有重复。

【讨论】:

  • 我们可以用它来唯一标识我们的设备吗?两种不同设备相同的概率是多少?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-19
  • 2016-10-12
  • 2017-10-07
  • 2015-08-21
  • 2019-02-26
  • 2014-07-19
相关资源
最近更新 更多