使用SHA256将字符串转换为Guid而不截断

3

有没有一种方法可以将一个字符串转换为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 字节长。那么你如何适配剩下的部分呢? - Hans Kesting
SHA-256算法创建一个32字节的哈希值。Guid是16字节。你不能把32字节放进一个16字节的数据结构里。你可以将其转换为两个guids。 - Jason Boyd
为什么?一个 Guid 是 16 个字节。不像你正在播种它并制造一个新的。Guid 字符串构造函数实际上是采用以不同格式表示的 Guid 并创建 Guid 类的实例。 - McAden
@DeVonte 为什么不直接返回 ComputeHash 创建的字节数组呢?你最终想要实现什么? - Jason Boyd
@DeVonte,Guid和Hash是两个完全不同的东西。你想要实现什么目标? - McAden
显示剩余5条评论
1个回答

0
哈希值和全局唯一标识(Guid)是不同的。试图将它们等同起来是错误的。
如果你想要一个唯一标识:
return Guid.NewGuid();

那会给你一个。

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


谢谢,我只是想看看是否可能。 - TheProgrammer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接