Почему хеши паролей MD5/SHA1 невозможно расшифровать?
Недавно я прочитал статью о хешировании паролей.
Как хеши MD5 или SHA1 создаются так, что их невозможно расшифровать?? То, что я думаю, это то, что она должна быть зашифровывать строку с помощью определенной ФОРМУЛЫ (она всегда дает один и тот же хеш для одной и той же строки; поэтому не должно быть никакой рандомизации), и поэтому мы должны иметь возможность расшифровать ее с помощью одной и той же ФОРМУЛЫ?? Или люди не знают форуму?
3 ответа
MD5 и SHA1 не являются алгоритмами шифрования. Это алгоритмы хеширования.
Это односторонняя формула. Запуск MD5 или SHA1 для конкретной строки дает хэш, который всегда одинаков. Невозможно повернуть функцию вспять, чтобы вернуться к исходной строке.
Например:
15 Мод 4 = 3
Даже если вы знаете, что формула
х Мод 4
вы не можете вывести x, так как это может быть 3, 7, 11, 15 и т. д.
Очевидно, MD5 и SHA1 намного сложнее!
В приведенном выше примере умножение 15 всегда даст вам ответ 3, но никто не сможет определить исходное число. Это приводит к столкновениям, когда несколько входных строк могут давать одинаковый хеш:
http://en.wikipedia.org/wiki/MD5
В Википедии есть информация об используемом алгоритме:
Все правильно объяснил псих, я бы хотел добавить еще один момент к этому:
15 Мод 4 = 3
Даже если вы знаете, что формула
х Мод 4
вы не можете вывести x, так как это может быть 3, 7, 11, 15 и т. д.
Мы можем пойти еще ближе к нашей ситуации и получить результат действия (например, у вас есть хеш как результат действия и описание действия)
х мод 4 = 3
x может быть 12, 13, 14 или 15, что не говорит о том, какое входящее целое число мы имели.
Я всегда считал, что md5 и sha1 не могут быть расшифрованы и используются в моих приложениях. Но к моему удивлению я нашел несколько сайтов, которые выполняют эту процедуру. см. http://www.crypt-security.com/ Поэтому эта процедура недостаточно безопасна