如何将Python uuid5()反转为其值?

如何将Python uuid5()反转为其值?,python,uuid,Python,Uuid,它能逆转吗? 如果我使用 >>> RESOURCE_ID_NAMESPACE = uuid.UUID('0a7a15ff-aa13-4ac2-897c-9bdf30ce175b') >>> value = 'test' >>> uuid.uuid5(RESOURCE_ID_NAMESPACE, value) UUID('7fd19145-920f-5b9c-be0a-2146b0c39949') 如果我知道uuid5值,我可以得到“test

它能逆转吗? 如果我使用

>>> RESOURCE_ID_NAMESPACE = uuid.UUID('0a7a15ff-aa13-4ac2-897c-9bdf30ce175b')
>>> value = 'test'
>>> uuid.uuid5(RESOURCE_ID_NAMESPACE, value)
UUID('7fd19145-920f-5b9c-be0a-2146b0c39949')
如果我知道uuid5值,我可以得到“test”值吗


非常感谢。

不,你不能。uuid是通过散列传递给构造函数的名称空间和值来创建的。但是有无数其他可能的字符串(尽管它们可能很难找到)散列到相同的值。因此,无法确定构造uuid的原始字符串是什么。

uuid版本5是什么。加密散列算法的全部要点是,在一般情况下,它们几乎不可能反转


如果您知道输入是一个字典单词,当然,您可以为字典中的每个单词生成一个uuid5值,当您知道它是一个短字母字符串时也是如此,但是在一般情况下,不,您不能像对加密哈希一样反转uuid5值。不,SHA-1的弱点在这里不太可能有帮助;它们在生成冲突时非常有用,但不能恢复原始值。

如果您提供更多关于为什么要这样做的上下文,我们可能会提供更多帮助。仅仅反转散列是设计上不可能的。事实上,这是Openstack Gnocchi项目(Liberity版本)中的一个问题。Gnocchi使用其他Openstack项目的uuid保留时间序列数据,uuid由uuid5散列。这导致我无法使用HasdeUUID在其他Openstack项目中找到资源。我需要拿回原始身份证。这个问题现在由最新版本解决了。但它仍然保留在自由版本中。