2016-11-29 52 views
0

它可以顛倒嗎? 如果我使用如何將Python uuid5()轉換爲它的值?

>>> 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值,可我得到的值「測試」?

非常感謝。

+1

如果您提供了更多關於爲什麼要這樣做的背景知識,我們可能會提供更多幫助。只是顛倒散列是不可能的設計。 – yelsayed

+0

事實上,這是Openstack Gnocchi項目(Liberity版本)中的一個問題.Gnocchi使用其他Openstack項目的uuid保存時間序列數據,並且uuid由uuid5散列。這導致我無法使用hasded uuid在其他Openstack項目中找到資源。我需要取回原始ID。現在最新版本解決了該問題。但它仍然保留在Liberity版本中。 – zero

回答

2

UUID版本5是based on the SHA-1 hash of the input。密碼哈希算法的重點在於,在一般情況下,它們幾乎不可能逆轉。

如果你知道輸入是一個字典單詞,當然,你可以爲字典中的每個單詞生成一個uuid5值,當你知道它是一個簡短的字符串時也是如此,但是在一般情況下,沒有,您無法將UUID5的值反轉爲比加密哈希值更高的值。不,在這裏SHA-1的弱點不太可能有幫助;它們主要用於產生衝突,但不能恢復原始值。

+0

非常感謝,我看到了〜:) – zero

0

不,你不能。 uuid是通過散列您傳遞給構造函數的名稱空間和值創建的。但是有其他可能的字符串(儘管它們可能很難找到)有無數個哈希值相同的值。所以沒有辦法確定構建uuid的原始字符串是什麼。

+0

非常感謝,我明白了。 – zero