在你的情况下,我不会使用任何加密哈希函数(即 MD5、SHA),因为它们在设计时考虑到了安全性:它们主要是想让它尽可能难以找到具有相同哈希值的两个不同字符串。我认为这对你的情况来说不是问题。(当然,随机冲突的可能性是散列所固有的)
我强烈不建议使用String.GetHashCode(),因为其实现尚不清楚,并且 MSDN 表示它可能因框架的不同版本而异。即使 x86 和 x64 版本之间的结果也可能不同。因此,当您尝试使用较新(或不同)版本的 .NET 框架访问同一数据库时,您会遇到麻烦。
hashCode我在维基百科(这里)上找到了Java实现的算法,它看起来很容易实现。在我看来,即使是简单的实现也会比 MD5 或 SHA 的实现更快。您还可以使用long降低碰撞概率的值。
这里还有对 .NETGetHashCode实现的简短分析(不是算法本身,而是一些实现细节),我猜你也可以使用这个。(或者尝试以类似的方式实现Java版本......)