【问题标题】:Convert string to Guid using SHA256 without truncating使用 SHA256 将字符串转换为 Guid 而不截断
【发布时间】:2018-04-12 23:02:00
【问题描述】:

有没有办法使用 SHA256 将字符串转换为 GUID 而不会截断 16 个字节?

目前我有这个:

using SHA256 sha2 = SHA256.Create())
{
     var hash = sha2.ComputeHash(Encoding.Default.GetBytes(string));
     return new Guid(hash.Take(16).ToArray());
}

【问题讨论】:

  • Guid 是 16 字节长。那么你将如何适应其余部分?
  • SHA-256 算法创建一个 32 字节的散列。 Guid 是 16 个字节。您不能将 32 字节放入 16 字节的数据结构中。您可以将其转换为两个 guid。
  • 为什么? Guid 是 16 个字节。这不像你正在播种并制作一个新的。 Guid 字符串构造函数实际上是采用以不同格式表示的 Guid 并创建 Guid 类的实例。
  • @HansKesting 或者还有其他类似于 Guid 需要 32 字节的数据类型吗?
  • @JasonBoyd 或者还有其他类似于 Guid 需要 32 个字节的数据类型吗?

标签: c# hash guid sha256 sha


【解决方案1】:

哈希与 Guid 不同。试图将 2 等同起来是不正确的。

如果你想要一个唯一的标识符:

return new Guid();

这会给你一个。

如果你想要哈希,存储为字节或字符串,而不是Guid

【讨论】:

  • 谢谢,我只是想看看有没有可能
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-15
  • 1970-01-01
  • 2017-08-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多