0

我有C#制作连接SQL Server 2014数据库的应用程序。当我在 上创建GuidC#,它通过lower case. 但是当我进行查询时SQL,我得到了这个值upper case。这个Guid值需要被 散列SHA1,并且 asSQL返回不同的hashed value

是因为collation?

我用Turkish_CI_AI.

4

1 回答 1

3

GUID 是 16 字节的二进制值,因此它们没有大小写。经常看到的多部分十六进制字符串只是 GUID 的文本表示之一。这意味着它是大写还是小写取决于格式化代码,与实际值无关。这也意味着在比较 GUID 的任何文本表示时不应考虑大小写。

如果要散列Uniqueidentifier值,则应将其作为 GUID 检索并通过调用Guid.ToByteArray而不是其文本表示来散列实际字节。

最后,您应该考虑是否真的需要散列 GUID。GUID 的长度为 128 位,而 SHA1 的长度至少为 160 位。如果要计算哈希值以进行快速比较,最好简单地使用原始 GUID。

如果要对多字段消息进行哈希处理,最好获取所有字段的字节并对生成的字节数组进行哈希处理

于 2015-08-10T07:24:24.277 回答