gpt4 book ai didi

c# - 从 MD5 散列而不是字符串创建 Guid 是否有效?

转载 作者:行者123 更新时间:2023-12-04 02:49:58 25 4
gpt4 key购买 nike

我正在尝试实现一种检测重复文件的方法。我有一个 MD5 散列方法(让我们忽略 MD5 已损坏的事实)如下:

using(MD5 hasher = MD5.Create())
using(FileStream fs = File.OpenRead("SomeFile"))
{
byte[] hashBytes = hasher.ComputeHash(fs);
string hashString = string.Join(string.Empty, hashBytes.Select(x => x.ToString("X2")));
}

而不是创建 string出了 hashBytes我可以简单地创建一个 Guid像这样吗?
Guid hashGuid = new Guid(hashBytes);

它仍然有效还是会失去唯一性?

最佳答案

MD5 哈希值和 Guid本质上两者都表示 128 位二进制,所以:

  • 加:你不会失去任何独特性
  • 加:事实Guid是值类型意味着与 string 相比,您可以避免分配...
  • 减号:...但如果你要在任何地方显示它,你实际上可能最终分配多个字符串(即多次渲染相同的 Guid)
  • 减号:Guid有语义在这里不会真正受到尊重/预期
  • 减号:Guid默认格式与通常表示 MD5 哈希的方式不同
  • 减号:Guid字节序是一团糟,所以如果你想在原始字节和任何文本表示之间获得:tread 非常小心;它是 不是 您的期望
  • 关于c# - 从 MD5 散列而不是字符串创建 Guid 是否有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55533117/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com