簡體   English   中英

從字符串創建一致的GUID或唯一標識符

[英]Create a consistant GUID or unique identifier from a string

假設我有一個字符串,例如“ 70c3bdc5ceeac673”。 是否可以在C#中基於此字符串創建類似GUID的結構(DB列僅接受uniqueidentifier)? 目的是每次我傳遞該值時都創建相同的Guid或唯一字符串。我猜想本質上就像是帶密鑰的Hmac SHA1哈希。

從SHA256哈希創建Guid似乎是一個簡單的選擇:

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

代碼會丟棄一半的哈希結果,但不會改變以下事實:同一字符串始終轉換為同一Guid。

或者,根據您的要求,僅將字符串轉換為字節數組,並用0 /刪除多余的字符填充就足夠了。

如果您知道所有字符串都在16個非寬字符內(如70c3bdc5ceeac673 ),則可以使用以下命令:

// value is your string

var bytes = new byte[16];
Encoding.UTF8.GetBytes(value, 0, value.Length, bytes, 0);
var guid = new Guid(bytes);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM