2016-11-29 2 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を使用してtime-seriseデータを保持し、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

関連する問題