如何逆转GetHashCode

Azi*_*uzi -2 c# hash

我们以前GetHashCode在.NET中学习的作品是这样的:

 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);
    }
Run Code Online (Sandbox Code Playgroud)

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

Sco*_*ain 5

没有真正的方法可以执行,您可以尝试将其向后处理,但这会给您带来难以理解的混乱,您将无法获得“原始字符串”。

您在哈希过程中丢失了信息,并且无法从结果中获取该信息。