PHP разные односторонние хэши для защиты паролем

Мне было интересно хэш-пароль на 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 (следовательно, это надмножество коллизий). Повторно вводя пароль и соль, вы предотвращаете это, и, следовательно, создаете «более сильный» хеш, а не более слабый …