SQL Uniqueidentifier hashbytes does not match
本文关键字:not match does hashbytes Uniqueidentifier SQL | 更新日期: 2023-09-27 18:07:04
我有C#
应用程序连接SQL Server 2014
数据库。当我在C#
上创建Guid
时,它通过lower case
写入SQL。但是当我查询SQL
时,我得到这个值upper case
。这个Guid
值需要被SHA1
散列,因为SQL
返回不同的hashed value
。
是因为collation
吗?
我用Turkish_CI_AI
guid是16字节的二进制值,所以它们没有大小写。经常看到的多部分十六进制字符串只是guid的文本表示形式之一。这意味着它是大写还是小写取决于格式化代码,与实际值无关。这也意味着在比较GUID的任何文本表示时不应该考虑大小写。
如果你想散列一个Uniqueidentifier
值,你应该检索它作为GUID,并通过调用GUID散列实际字节。ToByteArray,而不是它的文本表示。
最后,您应该考虑是否真的需要散列GUID。GUID长度为128位,SHA1长度至少为160位。如果希望计算一个散列值以进行快速比较,那么最好直接使用原始GUID。
如果您想要散列一个多字段的消息,最好是获取所有字段的字节并散列结果字节数组