2011-12-27 2 views
0

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

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

+0

Возможный дубликат [SHA512 vs. Blowfish and Bcrypt] (http://stackoverflow.com/questions/1561174/sha512-vs-blowfish-and-bcrypt) –

+0

Они делают разные вещи. Есть много статей о SO, которые относятся только к этому ... мой совет заключается в том, чтобы * не * сворачивать свои собственные. –

+0

http://stackoverflow.com/questions/3191690/how-long-should-my-password-salt-be-and-is-sha-256-good-enough, http://stackoverflow.com/questions/401656/secure-hash-and-salt-for-php-passwords –

ответ

2

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

  • Encode: кодируются (это не шифровать) строка, а также может быть расшифрованы. Любой, кто может запустить decode, может получить доступ к паролю.
  • MD5: Шифрует строку и не должен быть дешифруемым. Способ определения правильности пароля - это сравнение двух зашифрованных строк. Однако, algorithm is badly flawed и не должен использоваться.
  • SHA2 (string, 512): Шифрует строку и не должен быть дешифруемым. Способ определения правильности пароля - это сравнение двух зашифрованных строк. Этот алгоритм далеко, намного сильнее MD5.

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

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

+0

Неплохо, хотя это общеизвестно как одностороннее шифрование (RSA называет это так: http://mexico.rsa.com/rsalabs/staff/bios/ajuels/publications/euro/Euro.pdf).Если вы прочитали последнюю часть, я упомянул, что кодировка была абсолютно небезопасной :) –

+0

Ни MD5, ни SHA-x не шифруются. Они являются односторонними хэш-функциями и служат другой цели. «Проблема» с MD5 заключается в том, что эффективная сила была уменьшена: но она по-прежнему является односторонним алгоритмом. SHA-x и MD5 страдают от * той же проблемы *, но из-за слишком быстрого и легкого перебора. Значение соли зависит от * размера * доменных и несекундных характеристик. (И ничего не делает против грубой силы.) –

+0

Брюс Шнайер, который, как правило, является довольно надежным источником информации, когда речь заходит о криптоанализе, имеет окончательную запись об ошибках SHA-1 и вычислительной мощности, которые потребовались бы для преодоления этого а также вычислительная мощность и то, что доступно с SHA-2: http://www.schneier.com/blog/archives/2005/02/cryptanalysis_o.html. Я думаю, что я буду придерживаться SHA2 (string, 512), который намного сильнее, чем MD5, и не плохой выбор: P –

3

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

+0

+1 Я сохранил эту закладку для будущего ... directing. Все, что я сказал бы, но намного лучше, и без меня, чтобы повторить его. Однако, bcrypt не поддерживает по сути HMAC/«секрет сервера», который, если он отличается от хэшей, может добавить еще один слой трудности для злоумышленника. –

+0

Существует также [scrypt] (http://www.tarsnap.com/scrypt.html) ... не так популярен (действительно, кто-нибудь слышал об этом?), Но на основе подобных идей для bcrypt: сила. –

0

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

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

Смежные вопросы