Конвертировать SHA1 обратно в строку - PullRequest
3 голосов
/ 05 октября 2010

У меня есть пользовательская модель в моем приложении, и мое поле пароля использует sha1.Что я хочу, так это, когда я получаю sha1 из БД, чтобы снова сделать его строкой.Как мне это сделать?

Ответы [ 5 ]

11 голосов
/ 05 октября 2010

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

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

Смотри также

Мысль относительно MD5, эти другие вопросы также могут вас просветить:

2 голосов
/ 05 октября 2010

Вы не можете - в этом суть SHA1, MDB5 и т. Д. Большинство из них - односторонние хеши для обеспечения безопасности. Если его можно отменить, то любой, кто получил доступ к вашей базе данных, может получить все пароли. Это было бы плохо.

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

0 голосов
/ 05 октября 2010

Вы не можете сделать это с SHA-1.Но, учитывая, что вам нужно сделать, вы можете попробовать использовать AES вместо этого.AES позволяет шифрование и дешифрование.

0 голосов
/ 05 октября 2010

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

Если вы заинтересованы в исследовании алгоритмов безопасного хеша: поиск строки, которая произведет данный хеш, называется «прообразом».Если вам удастся сделать это (с разумной вычислительной сложностью) для SHA-1, вы, вероятно, станете достаточно известным среди исследователей криптоанализа.Наилучший «прорыв» против SHA-1, который известен в настоящее время, - это способ найти две входные строки, которые выдают одинаковый хэш, но 1) это вычислительно довольно дорого (подумайте с точки зрения количества машин, работающих 24/7 в течение нескольких месяцев привремя найти одну такую ​​пару), и не работает для произвольного хеш-значения - он находит одну из специального класса входных строк, для которой совпадающую пару (относительно) легко найти.

0 голосов
/ 05 октября 2010

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

Если вы не решите использовать грубую силу или использовать радужные столы (оба очень медленные, если обеспечены достаточно длинным вводом).

...