我有一个现有的应用程序,我错误地使用String.GetHashCode并将其持久化到磁盘。现在我正在将应用程序升级到.Net 2.0,我发现这个决定已经回来让我陷入困境。
我很想知道是否有人知道.Net 1.1兼容字符串散列算法的.Net 2.0实现。
显然,最好的解决方案是给自己买一台时间机器,然后回到2002年,即使考虑使用这种方式使用哈希码也可以自己开始。由于这似乎不太可能,我正在寻找一种解决方法。我的用户在他们的系统上有这些数据,所以我不可能对哈希或类似的东西进行一次大的转换。
当更改为2.0时,我将更新代码,因此它当然使用MD5或SHA。
我考虑从Mono中提取String.GetHashCode源,但由于Mono是GPL而我的应用程序是商业用途,实际上不是一个选项。我甚至不知道Mono实现是否与MS .Net实现兼容,因为GetHashCode的合同不要求它兼容。
有什么想法吗?
答案 0 :(得分:6)
你不是唯一一个,似乎:Getting .NET 1.1 CLR String Hash Codes In The .NET 2.0 CLR
指向BackCompatibleStringComparer的链接(据称,我无法验证)显示旧版GetHashCode()
的实施情况。