1

我正在尝试创建一个将任意字符串作为输入并基于该字符串创建 GUID 的函数。理想情况下,GUID 的格式应该是GUIDstruct from 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 回答