我将名称字符串及其 SHA1 值传递到数据库中。SHA 值用作搜索的索引。实现完成后,我们得到了使搜索名称不区分大小写的要求。我们确实需要考虑所有语言(汉字是一个真实的用例)。
我知道火鸡测试。如何在散列之前将输入字符串转换为不区分大小写?理想情况下,我希望它等同于InvariantCultureIgnoreCase。
换句话说,我如何使这个函数的输出不区分大小写?
private byte[] ComputeHash(string s)
{
byte[] data = System.Text.Encoding.Unicode.GetBytes(s ?? string.Empty);
SHA1 sha = new SHA1CryptoServiceProvider(); // returns 160 bit value
return sha.ComputeHash(data);
}
如果 SHA 不可行,我也许可以让String.GetHashCode () 工作,但我也没有办法让这种情况不区分大小写。
我打赌这是不可能的。如果不是,有什么解决方法?