2016-11-29 1 views
0

역전 될 수 있습니까? 나는 uuid5 값을 알고 있다면 내가파이썬 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') 

를 사용하는 경우 , 나는 값 '테스트'를받을 수 있나요?

감사합니다.

+1

왜 이렇게하고 싶은지 더 자세히 설명해 주시면 더 많은 도움을 드릴 수 있습니다. 해시를 뒤집는 것은 설계 상 불가능합니다. – yelsayed

+0

실제로 Openstack Gnocchi 프로젝트 (Liberity 버전)의 문제점입니다 .Gnocchi는 다른 Openstack 프로젝트의 uuid와 함께 time-serise 데이터를 유지하며 uuid는 uuid5에 의해 해싱됩니다. 이 때문에 다른 Openstack 프로젝트에서 hasded UUID를 사용하여 리소스를 찾을 수 없습니다. 나는 원래의 ID를 되 찾을 필요가있다. 문제는 최신 버전으로 해결되었습니다. 하지만 여전히 Liberity 버전으로 유지됩니다. – zero

답변

2

UUID 버전 5는 based on the SHA-1 hash of the input입니다. 암호화 해싱 알고리즘의 요점은 일반적인 경우에는 거의 되돌릴 수 없다는 것입니다.

입력이 사전 단어 인 것을 알고 있다면, 사전에있는 모든 단어에 대해 uuid5 값을 생성 할 수 있습니다. 단문 문자 일 때도 마찬가지지만, 일반적인 경우에는 no입니다. , 당신은 암호화 해시보다 더 많은 UUID5 값을 되돌릴 수 없습니다. 그리고 아니오, SHA-1의 약점은 여기에서 도움이되지 않을 것입니다; 그들은 주로 충돌을 생성하는 데 유용하지만 원래 값을 복구하지는 않습니다.

+0

고맙습니다. ~ ~ :) – zero

0

아니요, 불가능합니다. uuid는 네임 스페이스와 값을 생성자에 전달하여 해시를 작성합니다. 그러나 같은 값으로 해시하는 다른 가능한 문자열은 무한히 많습니다 (찾기는 어렵지만). 따라서 원래 문자열이 uuid로 구성되었는지 확인할 방법이 없습니다.

+0

정말 고마워요. – zero

관련 문제