Нет, не делайте этого!
Хэширование паролей должно заставить кого-то, кто копирует вашу базу данных, не может использовать данные для входа. Хешируя на стороне клиента, у вас есть точно значение в базе данных, которое должно быть отправлено в запросе. Таким образом, злоумышленник просто отключит хэширование и использует значение базы данных в качестве пароля.
Краткий обзор хэширование паролей:
Каждый пользователь имеет пароль, что ваш сервис знает. Они используют его для входа в систему. Представьте, что вы сохранили их в простой текст. Это было бы плохо, если бы кто-то копировал вашу базу данных. Таким образом, вы получаете каждый пароль с помощью алгоритма md5 или sha1. Хеш нельзя использовать для воссоздания пароля, но вы можете проверить пароль, если он действителен. Задача решена?
Не совсем. Для алгоритма хэширования просто создать таблицу радуги . Таким образом, вы можете быстро найти возможные входные значения для каждого хэша. Итак, вы соль. Это означает, что каждый пользователь имеет случайную строку, которая добавляется к паролю перед хэшированием, создавая уникальную функцию хэширования для каждого пользователя. Отличное решение?
Снова не совсем. Если ваша база данных скопирована, при достаточной вычислительной мощности это может быть взломан. Итак, ваш последний шаг - использование итераций. Вы не просто добавляете соль и хэш, но принимаете этот результат, снова добавляете соль и хеш. Вы делаете это несколько сотен раз. Таким образом, злоумышленник атакует агрессивные атаки. Это то, что bcrypt. С течением времени вычислительная мощность увеличивается, поэтому вы должны увеличить количество итераций.
этого недостаточно информации для продолжения. – Alnitak
Обновлен вопрос – user2206329
Итак, сторонний продукт хранит пароли в виде обычного текста? – fafl