gpt4 book ai didi

c# - 如何在 C# 中计算等效于 SQL Server (hashbytes ('SHA1' ,[ColumnName]))?

转载 作者:太空狗 更新时间:2023-10-29 19:59:59 25 4
gpt4 key购买 nike

在我的数据库中,我有一个计算列,其中包含名为 URLString 的列的 SHA1 哈希值,该列包含 URL(例如“http://xxxx.com/index.html”)。

我经常需要查询表以根据 URLString 列查找特定的 URL。该表包含 100K,这些查询需要几秒钟(使用 SQL Azure)。由于 URL 可能很长,我无法在此列(超过 450 字节)上创建索引。

为了加快速度,我想从 C# 中计算 SQL Server hashbytes('SHA1',[URLString]) 的等价物,并根据这个值进行查询。

我尝试了下面的代码,但我得到的值与数据库计算的值不同。

var urlString = Encoding.ASCII.GetBytes(url.URLString); //UTF8 also fails
var sha1 = new SHA1CryptoServiceProvider();
byte[] hash = sha1.ComputeHash(urlString);

我是不是漏掉了一些微不足道的东西?
我对可以解决相同问题的其他想法持开放态度(只要它们得到 SQL Azure 的支持)。

示例:在数据库中自动计算 URL 的 SHA1 值 http://www.whatismyip.org/是 0xAE66CA69A157186A511ED462153D7CA65F0C1BF7。

最佳答案

您可能会被字符编码差异所困扰:

http://weblogs.sqlteam.com/mladenp/archive/2009/04/28/Comparing-SQL-Server-HASHBYTES-function-and-.Net-hashing.aspx

您可以尝试通过 Encoding.ASCII.GetBytes(url)Encoding.Unicode.GetBytes(url) 获取字节并查看您的数据库使用的是哪一个。

关于c# - 如何在 C# 中计算等效于 SQL Server (hashbytes ('SHA1' ,[ColumnName]))?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14146636/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com