【发布时间】: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 个字节的数据类型吗?