Отмена хэширования C # - PullRequest
       10

Отмена хэширования C #

1 голос
/ 01 октября 2009

Может кто-нибудь перевернуть этот удобный хэш-код, который я использую?

using System.Security.Cryptography;

public static string EncodePasswordToBase64(string password)
{  byte[] bytes   = Encoding.Unicode.GetBytes(password);
   byte[] inArray = HashAlgorithm.Create("SHA1").ComputeHash(bytes);
   return Convert.ToBase64String(inArray);
}

Все, что я в итоге делаю, ужасно терпит неудачу: (.

Ответы [ 4 ]

19 голосов
/ 01 октября 2009

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

Like (псевдо):

initial  = Hash(password);
possible = Hash("test");

if( initial == possible ){
    // we infer that password = "test"
}

Но учтите, что SHA1, SHA0 и MD5 больше не должны использоваться; (из-за разной степени разрушения в каждой). Вы должны использовать SHA-2

4 голосов
/ 01 октября 2009

Единственный реальный способ «не хэширования» - это использование радужной таблицы, которая представляет собой большую таблицу хэшей, рассчитанную для всех возможных входных данных. Вы просматриваете хеш и получаете то, что было вероятно исходным вводом.

http://en.wikipedia.org/wiki/Rainbow_table

0 голосов
/ 01 октября 2009

SHA - это сокращение от NSA для «Secure Hash Algorithm».

Безопасные хэши трудно перевернуть по определению - иначе они не будут безопасными.

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

0 голосов
/ 01 октября 2009

К сожалению, вы не можете отменить хеширование SHA1, MD5 или любого другого одностороннего метода хеширования. Хотя можно отменить BASE-64.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...