Вы используете устаревший браузер. Этот и другие сайты могут отображаться в нём некорректно. Вам необходимо обновить браузер или попробовать использовать другой.
Что лучше использовать для шифрования пароля и имени пользователя: md5() или crypt()
Автор оригинала: Alexandre
мд5-быстрее
мд5-меньше коллизий
сша1 лучше чем мд5, стандарты IETF рекомендуют его использовать (даже не его а сша-512)
ВОПРОСЫ?
за доп информацией рекомендую прочитать "Прикладнная криптография"
1. Выражайтесь цензурно.
2. Полагаю, что выслушивать пожелания пользователей - это хороший тон. Я не разбираюсь в криптографии, поэтому сначала использовала md5() - функцию для хеширования пароля, особо не задумываясь над алгоритмом. Админ спросил, используется ли в ней при шифровании salt, и что лучше использовать алгоритм с salt. Я решила поискать еще, наткнулась на crypt(). Оказалось, что crypt() у меня в ОС поддерживает стандартное DES-шифрование с двухсимвольной salt и MD5-шифрование с 12-символьной salt. По какой-то загадочной причине стандартное DES-шифрование заменяется MD5-шифрование с 12-символьной salt, которое и используется функцией crypt() по умолчанию. в справке по этому поводу написано так:
In fact, sometimes the standard DES-based encryption is replaced by an MD5-based encryption algorithm.
. Почему так происходит - не написано.
Таким образом, выбор между функциями свелся к выбору алгоритма хеширования, который они используют. Так как на форуме мне подсказали как использовать соль с md5(), и функция crypt() также использует этот алгоритм. То я остановилась на использовании md5($password . $salt). Все счастливы.
DES-шифрование - это двухстороннее шифрование
MD5 - это хеширование, шифрование в одну сторону, расшифровать нельзя.
сравнивается не данные а их хеши.
при md5 - соль исполльзовать необходимо
$salt="xyz.,#" - всякая бесмыслица
первая сессия:
md5($data+$salt) -> запоминаем
последующие сессии
извлекаем хеши и cравниваем с md5($data+$salt)
есть еще алгоритм хеширования sha-1
разница md5 и sha-1 в длинне хешей (32 и 40 символов)
при md5 - соль исполльзовать необходимо
$salt="xyz.,#" - всякая бесмыслица
первая сессия:
md5($data+$salt) -> запоминаем
последующие сессии
извлекаем хеши и cравниваем с md5($data+$salt)
Alexandre , спасибо за подробный ответ. Правда я все равно не понимаю, каким образом выбирается алгоритм для хеширования. Еcли у меня доступно два алгоритма, почему выбран именно md5. В справке написано, что crypt() выполняет одностороннее шифрование, но как при этом она может поддерживать двусторонний алгоритм, то есть DES?
И еще вопрос: возникла необходимость шифрования путей подключения некоторых сторонних файлов, которые буду также хранится в текстовом виде. Для этого использовать функции библиотеки mcrypt(), так как необходимо двустороннее шифрование?