Я думаю, что использование md5 или sha256 или любого хеша, оптимизированного для скорости, совершенно нормально, и мне очень любопытно услышать какие-либо опровержения, которые могут быть у других пользователей. Вот мои причины
Если вы разрешите пользователям использовать слабые пароли, такие как Бог, любовь, война, мир, то независимо от шифрования вы все равно будете позволять пользователю вводить пароль, а не хэш, и эти пароли часто используются первыми, поэтому это НЕ происходит. иметь какое-либо отношение к шифрованию.
Если вы не используете SSL или не имеете сертификата, злоумышленники, прослушивающие трафик, смогут вытащить пароль, а любые попытки шифрования с помощью javascript или тому подобного являются клиентскими, и их легко взломать и преодолеть. Опять же, это НЕ будет иметь ничего общего с шифрованием данных на стороне сервера.
Атаки методом грубой силы будут использовать слабые пароли, и, опять же, поскольку вы разрешаете пользователю вводить данные, если у вас нет ограничения входа в 3 или даже немного больше, проблема снова НЕ будет иметь ничего общего с шифрованием данных.
Если ваша база данных скомпрометирована, то, скорее всего, скомпрометировано все, включая ваши методы хеширования, независимо от того, насколько загадочным вы это сделали. Опять же, это может быть XSS-атака недовольного сотрудника, внедрение sql-кода или другая атака, не имеющая ничего общего с шифрованием вашего пароля.
Я действительно считаю, что вам все равно следует шифрование, но единственное, что я вижу, это шифрование - это не позволяет людям, которые уже имеют или каким-то образом получили доступ к базе данных, просто читать пароль вслух. Если это кто-то неавторизованный в базе данных, у вас есть более серьезные проблемы, о которых стоит беспокоиться, поэтому Sony взяла, потому что они думали, что зашифрованный пароль защищает все, включая номера кредитных карт, все, что он делает, это защищает это одно поле.
Единственное чистое преимущество, которое я вижу для сложного шифрования паролей в базе данных, заключается в том, что сотрудники или другие люди, имеющие доступ к базе данных, не могут просто прочитать пароли. Поэтому, если это небольшой проект или что-то еще, я бы не стал сильно беспокоиться о безопасности на стороне сервера, вместо этого я бы больше беспокоился о защите всего, что клиент может отправить на сервер, например, SQL-инъекция, XSS-атаки или множество других способов, которыми вы может быть скомпрометирован. Если кто-то не согласен, я с нетерпением жду возможности прочитать способ, которым супершифрованный пароль является обязательным со стороны клиента.
Причина, по которой я хотел попытаться прояснить это, заключается в том, что слишком часто люди считают, что зашифрованный пароль означает, что им не нужно беспокоиться о его взломе, и они перестают беспокоиться о защите веб-сайта.