Я использую PHP. Я хочу безопасную и быструю систему шифрования паролей. Хеширование пароля в миллион раз может быть более безопасным, но также медленнее. Как достичь хорошего баланса между скоростью и безопасностью? Я хочу знать лучший метод шифрования в php и как его применять.Лучший метод шифрования
ответ
Я рекомендую использовать новый PHP 5.5 password API. Он обеспечивает безопасное средство хэширования пароля, будучи достаточно быстрым.
Если у вас нет PHP 5.5 доступны есть polyfill, который работает с PHP 5.3.7+: https://github.com/ircmaxell/password_compat
вы не ищете для шифрования - ваш ищет хэширования.
Я предлагаю openwalls phpass http://www.openwall.com/phpass/
Если вы используете PHP5.5 у них есть пароль hasing API http://uk3.php.net/password
для получения дополнительной информации.
MD5 (без соли) используется некоторое время, большое количество поисковых списков вокруг, в сочетании с современным оборудованием, получающим 700K + пароли в секунду, он не займет много времени, чтобы «отменить» пароль.
С солью они являются более безопасными, но все еще может быть взломан быстро
Объясните, почему следует избегать MD5, пожалуйста. –
какой метод я предпочитаю в склепе или хеше. –
HashPassword ($ password) для hash it и CheckPassword ($ password, $ hash), чтобы проверить его. – exussum
Используйте SHA512 http://php.net/manual/en/function.hash.php. SHA512 не треснут. Я предлагаю использовать соль: Некоторая случайная строка, которую вы добавляете к паролю перед хэшированием. Это может защитить от предварительно вычисляемых таблиц радуги, но не против атак со словарями, если злоумышленник получает доступ к базе данных, содержащей пароли и соли. SHA512 (пароль + соль) -> хэш Хранить хэш и соль в БД При проверке пароля извлекайте соль, соответствующую пользователю, соедините ее с паролем, хеш-память и сравните ее с сохраненным хешем. : How long to brute force a salted SHA-512 hash? (salt provided)
Мысли о вашем вопросе и, в частности, о вашем заявлении «Хеширование пароля в миллион раз может быть более безопасным, но также более медленным. Как достичь хорошего баланса между скоростью и безопасностью». Действительно, многократное хеширование защитит вас от атак со словарями, сделав его чрезмерно дорогостоящим вычислением для вычисления всех хэшей в словаре. Я здесь не преподаю. Из первой ссылки, которую я вам дал, потребовалось около 46 миллисекунд, чтобы вычислить хэш SHA512, который относительно длинный. Из-под контроля я могу думать о следующих факторах, которые могут повлиять на ваше решение, так как вы находитесь в состоянии гонки вооружений: - Увеличение вычислительной мощности (больше вычислительных ядер и вычислений графического процессора) - Улучшенные алгоритмы с течением времени - Количество денег, доступных для злоумышленник - Значение, чтобы выйти из вашего сайта, если он взломан (если он невелик, это не стоило усилий) против - Объем мощности процессора у вас есть в вашем распоряжении Как правило, я бы хэш как во много раз, чтобы не повлиять на производительность моего веб-сайта. Принимая во внимание количество логинов в секунду, вы можете приблизительно рассчитать объем мощности процессора, который вы можете потратить, не влияя на производительность вашего сайта.
Последний комментарий: Предполагая, что хакеры уже имеют доступ к таблице, содержащей имена пользователей и хешированные пароли, вы можете в этом случае больше беспокоиться о всех плохих вещах, которые они могут делать на вашем сайте.
Почему SHA512, а не водоворот? –
Да, действительно, вы можете использовать любой сильный алгоритм хеширования. – Tarik
Точно так зачем же конкретизировать конкретный, если есть десятки алгоритмов, которые медленны, большие и защищать? Почему SHA512, а не какой-то другой? Если вы укажете, что ONE, то в чем причина этого? Личные предпочтения, это действительно хорошо в веб-среде и т. д. Да, sha512 замечательный, но есть похожие. ответ на 1 алгоритм? –
- 1. лучший метод шифрования
- 2. лучший метод для данных шифрования
- 3. Какой лучший метод шифрования для python
- 4. Лучший алгоритм шифрования пароля
- 5. лучший пароль шифрования и метод дешифровки для использования с PHP
- 6. JavaScript Метод шифрования
- 7. Какой метод шифрования использовать?
- 8. Это безопасный метод шифрования
- 9. Пользовательский метод шифрования
- 10. Метод шифрования пароля
- 11. Безопасный метод шифрования LAMP
- 12. Обратный мой метод шифрования
- 13. Лучший подход к этой аутентификации/шифрования сценария
- 14. Какой метод шифрования использует метод .NET FormsAuthentication.Encrypt()?
- 15. C# метод шифрования для Java
- 16. Эффективный метод шифрования файла лицензии?
- 17. Метод асимметричного шифрования в dotnetnuke
- 18. Метод шифрования не выводится правильно
- 19. Метод шифрования вызовов, не работает?
- 20. C метод # шифрования не работает
- 21. Поисковый метод шифрования (для манекена!)
- 22. Лучший способ шифрования больших файлов с php
- 23. Лучший способ сохранить ключ шифрования/дешифрования?
- 24. Лучший алгоритм шифрования и дешифрования для url
- 25. Найти метод и ключ шифрования до и после строки шифрования
- 26. Простой метод шифрования/дешифрования для шифрования файла изображения
- 27. Лучший способ шифрования локальных данных для приложения iPhone
- 28. Лучший метод RWD
- 29. Лучший асинхронный метод while
- 30. Лучший метод исторической информации
хеширование пароля миллион раз является медленным и менее безопасным, чем просто хэширование его один раз –
@MarkBaker Ну, на самом деле медленный процесс хэширования хорош для паролей, но не md5 или каких-либо алгоритмов sha * ... – Bun
MD5 is невозможно расшифровать. Для хранения паролей это будет нормально. Не так ли? – meorfi