从字符串创建一致的GUID或唯一标识符

Sta*_*s_S 1 c#

假设我有一个字符串,例如“ 70c3bdc5ceeac673”。在C#中是否可以基于此字符串创建类似GUID的结构(DB列仅接受uniqueidentifier)?目的是每次我传递该值时都创建相同的Guid或唯一字符串。我猜想本质上就像是带密钥的Hmac SHA1哈希。

Ale*_*kov 6

Guid从SHA256哈希创建似乎是一个简单的选择:

var guid = new Guid(
   System.Security.Cryptography.SHA256.Create()
      .ComputeHash(Encoding.UTF8.GetBytes("70c3bdc5ceeac673")).Take(16).ToArray());
Run Code Online (Sandbox Code Playgroud)

代码会丢弃一半的哈希结果,但不会改变以下事实,即相同的字符串始终会转换为相同的Guid。

或者,根据您的要求,仅将字符串转换为字节数组并以0 /删除多余的字符填充就足够了。