C# 如何反转GetHashCode

C# 如何反转GetHashCode,c#,hash,C#,Hash,我们过去在.NET中学习的GetHashCode工作原理如下: public int GetStringHashCode( string value) { int hash1 = (5381 << 16) + 5381; int hash2 = hash1; int len = value.Length; int intval; int c0, c1; int i = 0;

我们过去在.NET中学习的
GetHashCode
工作原理如下:

 public int GetStringHashCode( string value)
    {
        int hash1 = (5381 << 16) + 5381;
        int hash2 = hash1;

        int len = value.Length;
        int intval;
        int c0, c1;
        int i = 0;
        while (len > 0)
        {
            c0 = (int)value[i];
            c1 = (int)value[i + 1];
            intval = c0 | (c1 << 16);
            hash1 = ((hash1 << 5) + hash1 + (hash1 >> 27)) ^ intval;
            if (len <= 2)
            {
                break;
            }
            i += 2;
            c0 = (int)value[i];
            c1 = len > 3 ? (int)value[i + 1] : 0;
            intval = c0 | (c1 << 16);
            hash2 = ((hash2 << 5) + hash2 + (hash2 >> 27)) ^ intval;
            len -= 4;
            i += 2;
        }

        return hash1 + (hash2 * 1566083941);
    }
public int GetStringHashCode(字符串值)
{
int hash1=(5381 0)
{
c0=(int)值[i];
c1=(int)值[i+1];
intval=c0 |(c127))^intval;
如果(len3?(int)值[i+1]:0;
intval=c0 |(c127))^intval;
len-=4;
i+=2;
}
返回hash1+(hash2*1566083941);
}

现在,我怎样才能逆转这种方法?(我的意思是,如何获取一个int值并返回一个字符串值(原始字符串))

没有真正的方法,您可以尝试反向操作,但这会给您带来一个无法理解的混乱,您将无法恢复“原始字符串”


您在散列过程中丢失了信息,无法从结果中获取该信息。

您可以根据散列存储原始字符串并快速提取它们。

在您继续投票给我之前,.NET
GetHashCode()
不是加密散列,您可以反向计算,因为它不依赖于不容易反向计算的东西(例如,查找素因子)。您需要对丢失的信息进行“猜测”,但没有什么是“慢”的。事实上int是4字节,而字符串可以有任何长度,这应该给您一个线索,即您无法从int重新构造字符串。。。