Какова наилучшая альтернатива алгоритму Md5 для PHP для шифрования данных пользователя, таких как пароли и другие защищенные данные, хранящиеся в базах данных MySQL?Альтернатива Md5 в PHP?
ответ
SHA512 не является страшным выбором. Но это будет незадолго до того, как оно будет разбито на большинство длин паролей. Возьмите Jeff's Advice. Используйте bcrypt или PBKDF2. Они устойчивы к EC2 или другим методам параллельной обработки. Вероятно, не иммунитет, но устойчив.
Причина в том, что лучший хеш в этом случае не лучше ABC
в MD5 становится одним значением и ABC
в SHA512 становится одним значением. Вычисление всех трехбуквенных паролей - actually easier for SHA512 than it was for MD5. Ключ должен быть сложным. Это означает медленный хэш, который использует много ОЗУ и/или тот, который нелегко сделать на EC2.
Лучший вариант - НЕ использовать пароли в одиночку. Решите, если логин действительно необходим для вашего сайта, и если да, попробуйте сначала использовать стороннего поставщика. Если это не вариант, используйте пароль + токен из RSA. Используйте только один пароль, если у вас нет других жизнеспособных вариантов.
При хешировании пароля ключ хэш (пароль + соль) и соль должна быть уникальной для каждого пользователя, а также быть сложной или невозможной для угадывания. Использование имени пользователя отвечает первым критериям и лучше, чем соль или соль для каждого пользователя, , но уникальная случайная соль для каждого пользователя - лучший выбор.Идеально в отдельной базе данных, если не в месте, со своими учетными данными. Его также следует указывать не на имя пользователя, а на user_id или даже на хэш пользователя user_id. Вы хотите, чтобы эта база данных была доказана SQL-инъекцией. Хороший способ сделать это не допускает прием от пользователя, который не хеширован. И вам было бы разумно позволить самому запросу делать хэширование. Медленный? Да, и это тоже хорошо.
Соль сама должна содержать все данные, которые трудно предсказать, которые она может получить. Username + User Id + Timestamp + мусор из dev/urandom + последний твит со словом taco в нем. Дольше, тем лучше. SHA512 - хороший выбор хеша здесь.
Основная информация: hash = bcrypt (password + salt), salt = sha512 (имя пользователя + user_id + отметка времени + микротипы + dev/urandom bits + другой шум).
Если вы все еще беспокоитесь об этом. Не стесняйтесь SHA512 зашифрованный пароль. Вы получите силу SHA512, которая при трещине обнаруживает гораздо сложнее грубой силы bcrypted hash.
Вы можете использовать hash вот так, у вас есть много алгоритмов для хэширования ваших данных.
hash('sha256', $data);
MD5 больше не рекомендуется. Большинство установок php включают расширение hash
. В настоящее время лучшим вариантом для хэш-функции будет SHA-512. Вы можете использовать SHA-512 с помощью следующей функции:
<?php
function sha512($string) {
return hash('sha512', $string);
}
?>
Есть другие варианты с меньшими размерами выходных, если вы хотите, например, SHA-256
или RIPEMD-160
.
Обновление: прочитав обновленный вопрос, я предлагаю функцию php crypt.
False. sha384 более безопасен: http://en.wikipedia.org/wiki/SHA_hash_functions –
Более безопасный, чем 'SHA-256', да. Более безопасный, чем 'SHA-512', нет. Где вы это читали? –
Попробуйте PHP хэш-функции() http://php.net/manual/en/book.hash.php
Пример кода:
$hash = hash('SHA512', $pass);
Это превращает это:
SHA512("The quick brown fox jumps over the lazy dog")
В:
0x07e547d9586f6a73f73fbac0435ed76951218fb7d0c8d788a309d785436bbb642e93a252a954f23912547d1e8a3b5ed6e1bfd7097821233fa0538f3db854fee6
Дальнейшее чтение: http://en.wikipedia.org/wiki/SHA-2
- 1. Более быстрая альтернатива MD5?
- 2. хеширование PHP MD5 (MD5)
- 3. md5 Расшифровка в PHP
- 4. Сценарий MD5 в PHP
- 5. Более быстрая альтернатива MD5 в JavaScript или JQuery
- 6. Различные между PHP md5 и JAVA md5
- 7. сравнение PERL md5() и PHP md5()
- 8. C# md5 и php md5 not mach
- 9. Преобразование md5 в base64 в md5 32 символов с PHP
- 10. Помогите создать md5 в php
- 11. MD5 с RSA в PHP
- 12. Как удалить md5 в php
- 13. Манипулировать/обходить md5 в php?
- 14. PHP MD5, эквивалентный Java
- 15. Java md5, способ PHP
- 16. PHP MD5 Имя файла
- 17. PHP MD5 реализация
- 18. md5 exclude php
- 19. PHP md5 объяснил
- 20. Ошибка PHP md5 + salt
- 21. php md5 Вопросы?
- 22. MD5 PHP плохой результат
- 23. PHP добавляет хеши MD5?
- 24. Альтернатива перечислению в PHP
- 25. альтернатива возврату в PHP?
- 26. Альтернатива eregi() в php
- 27. Альтернатива «goto» в PHP
- 28. Альтернатива mssql_guid_string в PHP?
- 29. Не PHP-альтернатива PHP:
- 30. Получение MD5 от Oracle в соответствии с MD5 MD5
md5 взломан, используется sha1 –
водоворот работает хорошо. Вы должны сказать, что вы с ним делаете. – Brad
Зависит от того, для чего вы собираетесь его использовать. Для хэширования для проверки дубликатов MD5 превосходно! –