【问题标题】:Is it possible to get the original UUID1 from a timestamp?是否可以从时间戳中获取原始 UUID1?
【发布时间】:2020-03-27 16:58:21
【问题描述】:

例如,我使用以下程序生成基于时间的 UUID。

import uuid
uuid = uuid.uuid1()
print uuid
print uuid.time

我得到以下信息:

47702997-155d-11ea-92d3-6030d48747ec
137946228962896279

如果我知道时间戳(137946228962896279),我能否取回原来的UUID,即47702997-155d-11ea-92d3-6030d48747ec

我正在阅读有关 UUID 版本 1 的信息,发现一些程序“有点”试图反转它,但是,每次,我都会得到一个不同的 UUID。

始终在变化的部分是时间戳部分(第一个块的最后 4 位 - 47702997)和时钟序列 (92d3)。

如果可以取回原来的 UUID,我需要什么?

非常感谢任何帮助/指导。

我也在Security Stackexchange上发了一个帖子,但后来意识到这个问题应该在这里发布。

我越看越发现这根本不可能,因为时间戳不包含有关clock_sequence的信息,除非我错了,在这种情况下,请纠正我。

【问题讨论】:

  • 查看您提到的“Security Stackexchange 中的帖子”的答案会有所帮助,您可以在此处添加链接吗?

标签: uuid timeuuid


【解决方案1】:

UUIDv1 包含两个主要部分:时间唯一部分(也称为时间戳)和空间唯一部分。按照设计,这两者是完全独立的,所以如果你扔掉其中一个,以后就无法从另一个中恢复它。

更一般地,请注意整个 UUID 是 32 位十六进制数字,或 128 位信息,但时间戳是 18 位十进制数字,或仅约 60 位信息。即使对 UUID 了解不多,您也可以猜测其中一些位是冗余的或固定的(并且有一些 是固定的,或者至少是可以猜测的),但其中超过一半?不太可能,这意味着这种翻译是不可逆的。

【讨论】:

    猜你喜欢
    • 2017-03-09
    • 1970-01-01
    • 1970-01-01
    • 2020-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-17
    • 2012-07-06
    相关资源
    最近更新 更多