我正在尝试创建一个将任意字符串作为输入并基于该字符串创建 GUID 的函数。理想情况下,GUID 的格式应该是GUID
struct from objbase.h
,但这并不重要。重要的是该函数是确定性的,但始终(或足够接近以始终)为不同的字符串创建不同的 GUID。
我可以使用什么样的算法来做到这一点?我已经考虑过对字符串内容的位操作,但我会很感激一些方向。
计算字符串的 MD5 哈希并将其视为 GUID 怎么样?GUID 和 MD5 哈希都是 128 位值。
您可以散列字符串,然后使用散列的前 16 个字节创建 GUID (http://msdn.microsoft.com/en-us/library/90ck37x3.aspx)
检查 UUID 版本 3 和 5 的规范:
本质上,您计算字符串的 MD5(或 SHA-1)并将结果逐字存储在 128 位 UUID 中。对于 SHA-1,您需要截断结果,因为 SHA-1 返回 160 位。