[英]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.