У меня есть следующая хэш-функция, и я пытаюсь найти способ ее отменить, чтобы найти ключ из хешированного значения.
uint Hash(string s)
{
uint result = 0;
for (int i = 0; i < s.Length; i++)
{
result = ((result << 5) + result) + s[i];
}
return result;
}
Код написан на C #, но я предполагаю, что он понятен.
Я знаю, что для одного хешированного значения может быть более одного ключа, но я не собираюсь найти их все, а только тот, который удовлетворяет хэшу
РЕДАКТИРОВАТЬ:
Строка, которую принимает функция, состоит только из цифр от 0 до 9 и символов «*» и «#», поэтому функция Unhash также должна соблюдать этот критерий.
Любые идеи ? Спасибо.