2017-02-07 14 views
-1

У меня есть хэшированный пароль MD5, сохраненный в базе данных MySQL. Есть ли в любом случае, чтобы узнать, сколько символов было в исходном пароле?Можно ли узнать длину символа пароля MD5'd?

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

В любом случае я могу это сделать?

EDIT: Из-за серьезного количества люфта! Я не заинтересован в расшифровке хэша, потому что я знаю, что это не отличная идея из того, что я прочитал.

Причина, котор я спрашиваю потому что.

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

Но я должен заставить всех пользователей изменять свои пароли, судя по его

+3

Нет - после того, как пароль был хэширован, он больше не существует в оригинальной форме. Однако MD5 не должен ** использоваться ** для хеширования паролей (я смотрю на вас Magento) - особенно без его соления. – CD001

+0

Это технически возможно, но вам придется потратить много ресурсов, чтобы сделать это (в основном, перебор) - 'md5' - это односторонний хэш, поэтому его нельзя расшифровать. Вы должны уйти от использования, хотя «md5» устарел и устарел - не используйте его для хранения паролей. – Qirel

+1

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

ответ

7

From OP's comment:

я просто чисто с просьбой сохранить принуждая всех пользователей ти изменить свои пароли, если их пароль был ниже определенного предела персонажа - frobak

Ответ на этот вопрос, то следует использовать strlen():

Что касается MD5, не используйте его, это абсолютно небезопасно. За последние 30 лет много воды прошло под мостом.

Использование password_hash():

Что касается расшифровки хэша; это невозможно сделать/отменить; поэтому он называется хешем, а не зашифрованным.

Есть то, что называется «Радуга столы»:

Но я должен заставить всех пользователей изменять свои пароли, судя по его

Проконсультируйтесь с: Converting md5 password hashes to PHP 5.5 password_hash()

Таким образом, вы можете "ударить двумя столбами одним камнем".

Однако MD5 is 32-length. Вам нужно будет увеличить это до 60+, чтобы иметь надлежащую длину при использовании password_hash(), а Jay Blanchard заявила в his comment, в противном случае это может привести к сбою «молча» позже при использовании password_verify().

+1

Это правильный ответ, единственный шанс, который вы сможете измерить длину пароля, - это когда пользователь вводит его. – Eamonn

+0

Ahhh. ОК, поэтому я могу сделать это таким образом. Я могу взять пользовательский ввод и получить длину строки, а затем, если введенный пароль соответствует хэшам pw, я получил свой ответ. Thanks – frobak

+0

@frobak again; [этот комментарий я оставил вас раньше ...] (http://stackoverflow.com/questions/42094885/is-it-possible-to-find-out-the-character-length-of-a-md5d-password# comment71360138_42094885). Тем не менее, вам не удастся выяснить, с какой длины их паролей было с самого начала. Вам нужно реализовать этот метод сейчас; вы не можете вернуться во времени, как бы *, извините. –

3

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

+1

Вам нужно снова прочитать вопрос: в частности: * «В любом случае, чтобы узнать, сколько символов было в исходном пароле?» * –

+1

Ответ по-прежнему верен. Я прочитал его. – Eamonn

+0

этот вопрос задавался много раз. Кто-то скоро опубликует дубликат. И этот dv я заметил, что вы только что получили, не мое. –

0

Ответ уже дан и стоит отложить, тем не менее я хотел бы поделиться другим взглядом на проблему.

Можно ли узнать длину символа?

На самом деле нет способа указать количество символов в исходном пароле из хеша MD5.

Возможно ли найти пароли с числом символов менее 8 символов?

К сожалению, да. Так как инструменты для взломщиков могут грубой силой около 20 Giga Md5 per second, можно проверить все комбинации комбинаций символов 7 символов (a-z A-Z 0-9) всего за 3 минуты!

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