С паролями вы всегда ищете хэш, вы не хотите их расшифровывать или их необходимо расшифровать. Таким образом, вы ищете сильный алгоритм хэширования, blowfish или SHA512, я бы предложил. Что касается вашего вопроса о сравнении разных паролей пользователей, то это значительно снизит общую безопасность системы.
Вы хотите включить случайную соль с каждым паролем, чтобы сделать невозможным предварительное вычисление хэшей, поэтому даже один и тот же пароль будет иметь другой хеш для каждого пользователя, иначе злоумышленник может выяснить, какой из пользователей использует тот же паролей и использовать их в своих интересах. Использование одной и той же соли для каждого пароля поражает ее цель, и ни один из них не позволяет использовать радужные таблицы, поэтому вам придется пожертвовать этой особенностью, если вы хотите создать безопасный дизайн приложения.
Edit: извините удален комментарий и отправил его в качестве ответа
Я полагаю, что если вы ищете компромисс вы будете смотреть на много хеширования итераций, возможно, с большой случайной солью, общей для всех паролей. Это должно гарантировать отсутствие каких-либо уже имеющихся предварительно просчитанных таблиц для взлома паролей и увеличения времени взлома. Цепочка алгоритмов также может быть вариантом, но вы можете столкнуться с проблемой производительности, если есть много пользователей. По сути, если вы по-прежнему хотите сравнить пароли пользователей, занять много времени, чтобы вычислить хеш, что должно радикально увеличить время взлома. Опять же, чтобы подчеркнуть, это был бы компромисс и определенно не самый эффективный и безопасный способ обойти эту проблему.
Я был бы очень обеспокоен тем, проверял ли веб-сайт, был ли у меня тот же пароль, что и у другого пользователя. –
@ Дагон: прочитайте снова первое предложение. – Toto
Я прочитал его трижды, я все еще не уверен, что его пароли или нет. –