gpt4 book ai didi

c# - 如何为字符串生成 GUID?

转载 作者:IT王子 更新时间:2023-10-29 03:55:50 24 4
gpt4 key购买 nike

我在为字符串生成 GUID 时遇到问题 - 例如:

Guid g = New Guid("Mehar");

如何计算 "Mehar" 的 GUID?我遇到异常。

最佳答案

这个线程很旧,但这就是我们解决这个问题的方法:

由于 .NET 框架中的 Guid 是任意 16 字节,或者分别是 128 位,您可以通过对生成 16 字节哈希的字符串应用任何哈希函数,然后将结果传递给 Guid 构造函数,从任意字符串计算 Guid。

我们决定使用 MD5 哈希函数,示例代码如下所示:

string input = "asdfasdf";
using (MD5 md5 = MD5.Create())
{
byte[] hash = md5.ComputeHash(Encoding.UTF8.GetBytes(input));
Guid result = new Guid(hash);
}

请注意,这个 Guid 生成本身有一些缺陷,因为它取决于散列函数的质量!如果您的散列函数为您使用的大量字符串生成相等的散列,它将影响软件的行为。

下面列出了生成 128 位摘要的最流行的哈希函数:

  • RIPEMD(碰撞概率:2^18)
  • MD4(碰撞概率:确定)
  • MD5(碰撞概率:2^20.96)

请注意,还可以使用其他哈希函数来生成更大的摘要并简单地截断它们。因此,使用更新的哈希函数可能是明智的。列举一些:

  • SHA-1
  • SHA-2
  • SHA-3

今天(2013 年 8 月)160 位 SHA1 散列可以被认为是一个不错的选择。

关于c# - 如何为字符串生成 GUID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2190890/

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