Gil*_*Gat 7 c# t-sql sql-server sha
在我的数据库中,我有一个计算列,其中包含一个名为URLString的列的SHA1哈希值,该列保存URL(例如"http://xxxx.com/index.html").
我经常需要查询表以根据URLString列查找特定的URL.该表包含100K,这些查询需要几秒钟(使用SQL Azure).由于URL可能很长,我无法在此列上创建索引(大于450字节).
为了加快速度,我想从C#计算SQL Server哈希字节('SHA1',[URLString])的等效值,并根据此值进行查询.
我尝试了下面的代码,但是我获得的值与数据库计算的值不同.
var urlString = Encoding.ASCII.GetBytes(url.URLString); //UTF8 also fails
var sha1 = new SHA1CryptoServiceProvider();
byte[] hash = sha1.ComputeHash(urlString);
Run Code Online (Sandbox Code Playgroud)
我在这里错过了一些小事吗?
我对其他可以解决相同问题的想法持开放态度(只要SQL Azure支持它们).
示例:在数据库中,URL http://www.whatismyip.org/的自动计算SHA1值为0xAE66CA69A157186A511ED462153D7CA65F0C1BF7.
Jer*_*all 10
您可能会被字符编码差异所困扰:
您可以尝试通过Encoding.ASCII.GetBytes(url)或获取字节,Encoding.Unicode.GetBytes(url)并查看您的数据库正在使用哪个字节.
| 归档时间: |
|
| 查看次数: |
12847 次 |
| 最近记录: |