MD5 против кодирования паролей? - PullRequest
0 голосов
/ 27 декабря 2011

Я создаю защищенную паролем систему входа в систему для сайта и столкнулся с двумя функциями MySQL для шифрования пароля пользователя: MD5 () и ENCODE () .

Кажется, они оба шифруют его, но я хочу использовать тот, который более безопасен.Здесь есть явный победитель, или это просто предпочтительная ситуация?Спасибо!

Ответы [ 3 ]

3 голосов
/ 27 декабря 2011

Используйте bcrypt .Не используйте md5() или encode().

2 голосов
/ 27 декабря 2011

Вот краткое объяснение того, что делает каждый из них:

  • Кодировать : Кодирует (не шифрует )строка, а также может быть декодирована.Любой, кто может запустить decode , может получить доступ к паролю.
  • MD5 : шифрует строку и не должен расшифровываться.Чтобы определить правильность пароля, нужно сравнить две зашифрованные строки.Однако алгоритм имеет серьезные недостатки и не должен использоваться.
  • SHA2 (string, 512) : шифрует строку и являетсяне должен быть расшифрованным.Чтобы определить правильность пароля, нужно сравнить две зашифрованные строки.Этот алгоритм намного, намного сильнее, чем MD5.

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

Короче говоря, кодирование совершенно небезопасно, MD5 небезопасно, а SHA2 (строка 512) с солью не является плохим выбором.

0 голосов
/ 27 декабря 2011

Алгоритмы типа MD5, SHA1 не шифруют, а хешируют исходный текст любой длины в выходную строку фиксированной длины.И не используйте их для защиты пароля вашего пользователя.

Позвольте мне рассказать вам хороший способ.Задайте секретный вопрос.Ответ на этот секретный вопрос будет секретным ключом нашего алгоритма шифрования пароля.Теперь вы используете MD5 или что-то еще, чтобы хэшировать этот ответ.Теперь зашифруйте пароль, используя этот хэш в качестве секретного ключа (используйте алгоритмы симметричного ключа, такие как AES).Это поможет, так что если пользователь забудет свой пароль, то только этот пользователь и никто другой не сможет восстановить пароль.

...