2013-04-18 5 views
3

меня генерировать хэш-код, какКак получить исходную строку из междунар генерируемой GetHashCode

string textBoxVal="Naresh"; 
int code =textBoxVal.GetHashCode(); 
textBox2.Text=code.ToString(); 

Она формировала целое значение как -1078339947;

Теперь я хочу получить оригинальное имя Naresh с этим (-1078339947) hashcode. Как я могу это сделать.

+9

Вы не можете. Это точка хеширования. – Blorgbeard

+0

Если вы хотите взять строку и создать для нее уникальный идентификатор 'int', то, что вы ищете, это база данных (что-то вроде того, что она живет в памяти только для жизни или вашего приложения полномасштабная система баз данных), а не хеш-код. –

+0

Можно ли использовать для этой цели строку '' вместо 'int'? Поскольку вы не можете сделать это, используя стандартный хэш-код, возможно, вы можете создать алгоритм для генерации уникального строкового кода для использования вместо этого? (Я предполагаю, что это в основном сводится к некоторой форме шифрования исходных данных, вместо создания хэша из него) – Kjartan

ответ

5

Для всех практических целей вы не можете: существует намного меньше хэш-кодов, чем есть строки, поэтому существует более одного исходного значения, которое даст ваш же хэш-код.

Хеширование - это, в действительности, односторонняя операция. Если кто-то ссылается на обратимый хеш, это не истинный хэш (потому что хеш by definition уменьшает входной набор в одно из меньшего количества выходных значений). Ближайшая операция над тем, что вы описываете, может быть функцией шифрования - это позволит вам отменить операцию, но вряд ли она будет генерировать столь же небольшое число, что и 10-значный вывод в вашем вопросе.

+0

Тогда каким образом я могу преобразовать строку в int наоборот –

+0

Для чего вам это нужно? –

+0

Я хочу дать номер клиенту по его имени и дате рождения. и я хочу получить имя с этим номером. –

3

Вы просто не можете этого сделать! Хэш-код не содержит всю необходимую информацию, чтобы преобразовать его в строку.

Нет даже гарантии, что GetHashCode() вернет ту же самую вещь в разных условиях.

Заканчивать Eric Lippert «s блоге Guidelines and rules for GetHashCode

+0

Тогда каким образом я могу преобразовать строку в int наоборот –