gpt4 book ai didi

c# - 在数据库中存储 C# GetHashCode() 是不可靠的

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

<分区>

Possible Duplicate:
How do I create a HashCode in .net (c#) for a string that is safe to store in a database?

我计划在我的数据库中存储数十万个 URL。我的 UrlInfo 表中的每一行都是不可变的,URL 本身是逻辑主键。由于 URL 可能相当长,我决定对 URL 进行哈希处理,作为在添加新行时找到可能匹配项的快速方法。散列不是我真正的 key ,只是一种快速找到可能匹配项的方法。此外,我为每个域使用一个 RegEx 模式,将 URL 的本质提炼成可以与其他 URL 进行比较的内容。我也将 RegEx 的结果存储为哈希,我不担心它是否会产生重复项。

在我了解到 C# 的 string.GetHashCode() 方法(我一直用来对事物进行哈希处理)不能保证在 .Net 的实现中是唯一的之前,一切都进行得很顺利。当我尝试将我的散列函数从 ASP.Net 移动到 SQLServer CLR 代码时,我注意到了这一点。 Web 应用程序使用 .Net 4.0,据我所知,SQLServer 2008 R2 使用 .Net 3.5。他们为同一个字符串产生了单独的哈希结果,所以现在我需要避免使用 string.GetHashCode(),因为我不想在将我的应用程序升级到 .Net 的 future 版本时担心这种变化。

那么,问题:

  1. 自从我在数据库中存储散列后,我的架构有异味吗?有什么更好的方法吗?显然微软不想让我存储哈希结果!

  2. 有人可以推荐一个好的 C# 哈希字符串替换算法吗?我看到了Jon's here但不确定如何修改以适用于字符串(使用 ascii 代码循环遍历每个字符?)。

  3. 有没有比使用哈希算法更好的字符串压缩算法?

谢谢

很多人的 react 都很棒。非常感谢!!!

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