мы использовали, чтобы узнать GetHashCode
в .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);
}
Теперь, как я могу обратить вспять этот метод? (я имею в виду, что как получить значение int и вернуть значение строки (оригинальная строка))
Факт int is 4 байта, в то время как строка может иметь любую длину, уже должна дать вам ключ к тому, что вы не можете восстановить строку обратно из int ... – Evk