Я думаю, що використовувати md5 або sha256 або будь-який хеш, оптимізований для швидкості, ідеально, і мені дуже цікаво почути будь-які спростування інших користувачів. Ось мої причини
Якщо ви дозволяєте користувачам використовувати слабкі паролі, такі як Бог, любов, війна, мир, то незалежно від шифрування, ви все одно будете дозволяти користувачеві вводити пароль, а не хеш, і ці паролі часто використовуються першими, таким чином, це НЕ буде мати щось спільне з шифруванням.
Якщо ви не використовуєте SSL або не маєте сертифікату, зловмисники, які слухають трафік, зможуть витягнути пароль, а будь-які спроби шифрування за допомогою JavaScript або тому подібного є клієнтом і легко зламаються та долаються. Знову ж це НЕ матиме нічого спільного з шифруванням даних на стороні сервера.
Брутальні атаки скористаються слабкими паролями і знову ж таки тому, що ви дозволяєте користувачеві вводити дані, якщо у вас немає обмеження на вхід 3 або навіть трохи більше, проблема знову НЕ мати нічого спільного з шифруванням даних.
Якщо ваша база даних стає скомпрометована, швидше за все, все було порушено, включаючи ваші методи хешування, незалежно від того, наскільки крипто ви це зробили. Знову ж таки це може бути незадоволена атака співробітника XSS або введення sql або інша атака, яка не має нічого спільного з шифруванням вашого пароля.
Я вважаю, що ви все ще повинні шифруватись, але єдине, що я можу бачити, це шифрування - це завадити людям, які вже мають або якимось чином отримали доступ до бази даних, просто не читати вголос пароль. Якщо це хтось, хто не має дозволу на базі даних, то у вас виникають більші проблеми, через що Sony взяла, тому що вони думали, що зашифрований пароль захищає все, включаючи номери кредитних карток, і все, що це робиться, - це захистити те поле.
Єдина чиста користь, яку я можу побачити при складних шифруваннях паролів у базі даних, - це затримати співробітників або інших людей, які мають доступ до бази даних, лише зчитуючи паролі. Тож якщо це невеликий проект або щось таке, я б не переймався питанням безпеки на серверній стороні, а я б більше переживав про те, щоб забезпечити що-небудь, яке клієнт може надіслати на сервер, наприклад, введення sql, XSS-атаки чи безліч інших способів може бути поставлено під загрозу. Якщо хтось не погоджується, я з нетерпінням чекаю прочитання способу, що супер зашифрований пароль є обов'язковим з боку клієнта.
Причина, яку я хотів спробувати зробити це зрозумілим, полягає в тому, що занадто часто люди вважають, що зашифрований пароль означає, що їм не потрібно турбуватися про те, що він порушений, і вони кидають турбуватися про безпеку веб-сайту.