Мне было интересно хэш-пароль на PHP с использованием различных доступных методов и их комбинации для повышения безопасности. Мне было интересно, если это сработает.
$pass = "***"; $salt = "!@)#%%@(#&@_!R151"; $pass = sha1($pass.$salt); $pass = md5($pass);
Вместо этого вы можете использовать более сильный алгоритм хэширования, например sha512
с комбинацией sha512
соли и UserID
: Сделайте это так:
echo hash('sha512', 'MyPassword' . $StrongSalt . $UserID);
SHA512 на самом деле является SHA-2, для которого не обнаружено столкновений. См. Википедию .
Неа. Комбинации не добавляют никакой безопасности.
На самом деле вы сделали его менее безопасным. Теоретически, но так или иначе.
У меня такое чувство, что проблемы хэширования слишком завышены.
В любой другой проблеме безопасности никто не беспокоится, но все стремятся сделать хеш нерушимым в течение миллиарда лет. Расслабься, приятель. Существуют тысячи других способов разорвать ваше приложение.
Я предполагаю, что добавить соль достаточно, но если вы хотите больше, можете сделать:
sha1($salt. sha1($salt. $pass));
и пусть $salt
содержит некоторые непечатаемые символы, произвольные двоичные данные или что-то в этом роде.
Опять же, я предполагаю, что это не добавит многого, так как реализация увидела только добавление $ salt, но почему бы не больше безопасности для грядущих возрастов:)
Ваши пароли, скорее всего, никогда не будут на 100% безопасными.
Попробуйте посмотреть на nonce. Что должно быть создано для каждого отдельного пользователя.
ЕСЛИ вы собираетесь это сделать, не только результат MD5:
$pass = "***"; $salt = "!@)#%%@(#&@_!R151"; $pass = sha1($pass.$salt); $pass = md5($pass);
Вместо этого запустите md5 на результат и входы …
$pass = "***"; $salt = "!@)#%%@(#&@_!R151"; $tmp = sha1($pass.$salt); $pass = md5($tmp . $pass . $salt);
Причина в том, что если вы делаете md5(sha1())
, вы в основном увеличиваете вероятность столкновения. Причина в том, что все sha1
столкновения автоматически будут столкновениями в вызове md5
(следовательно, это надмножество коллизий). Повторно вводя пароль и соль, вы предотвращаете это, и, следовательно, создаете «более сильный» хеш, а не более слабый …