1

任意の文字列を入力として受け取り、その文字列に基づいてGUIDを作成する関数を作成しようとしています。GUIDの形式は、理想的にはGUIDからの構造体である必要がありますobjbase.hが、それほど重要ではありません。重要なのは、関数が決定論的であるが、常に(または常に十分に近い)異なる文字列に対して異なるGUIDを作成することです。

それを行うためにどのようなアルゴリズムを使用できますか?文字列の内容のビット演算について考えましたが、方向性を教えていただければ幸いです。

4

3 に答える 3

2

文字列の MD5 ハッシュを計算し、それを GUID であるかのように扱うのはどうですか? GUID と MD5 ハッシュはどちらも 128 ビット値です。

于 2012-09-07T20:15:39.767 に答える
1

文字列をハッシュし、ハッシュの最初の 16 バイトを使用して GUID を作成できます (http://msdn.microsoft.com/en-us/library/90ck37x3.aspx)。

于 2012-09-07T20:12:34.223 に答える
1

UUID バージョン 3 および 5 の仕様を確認します。

  1. http://en.wikipedia.org/wiki/Uuid#Version_3_.28MD5_hash.29
  2. http://en.wikipedia.org/wiki/Uuid#Version_5_.28SHA-1_hash.29

本質的に、文字列の MD5 (または SHA-1) を計算し、結果を逐語的に 128 ビット UUID に保存します。SHA-1 の場合、SHA-1 は 160 ビットを返すため、結果を切り捨てる必要があります。

于 2012-09-07T20:13:23.177 に答える