Почему важно, чтобы несколько строк хешировали одно и то же значение пароля? Каждый раз, когда пользователь вводит свой пароль, он будет хэшировать одно и то же значение, и это будет аутентифицировать пользователя. Ввод почти любого другого пароля почти наверняка не будет соответствовать хешированному значению. Если вы используете хорошую хэш-функцию, которая дает 64-битное значение, вероятность того, что другой пароль будет соответствовать пользователю, равна примерно квинтиллионам на единицу.
То, что вы защищаете, - это то, что инсайдеры копируют пароли пользователей и выявляют действительные пароли, если безопасность нарушена и таблица паролей взломана. Стандартный метод заключается в добавлении некоторых дополнительных битов к паролю (соль, которые должны быть разными для каждой учетной записи) и использовании сильной функции хеширования.
Если вы сделаете это, очень трудно найти пароль, который даст данный хэш, кроме как пытаться вводить пароль за паролем, пока вы не нажмете правильный. Хеширование обеспечивает защиту от инсайдеров и злоумышленников следующим образом: недостаточно иметь доступ к таблице паролей, чтобы войти в систему под чужим именем.
Возможно, что два пользователя будут иметь один и тот же пароль или (хотя это крайне маловероятно) пароли, которые хэшируют одно и то же значение. С солью они не будут выглядеть одинаково в таблице паролей, поэтому ни один злоумышленник или инсайдер не узнает, что их пароль такой же, как у кого-то другого, если посмотреть на таблицу.
Еще одним преимуществом является то, что многие люди повторно используют пароли, особенно для учетных записей, которые не должны быть безопасными. (Все мои учетные записи с финансовой информацией имеют разные и надежные пароли, но я использую один и тот же не очень надежный пароль на разных форумах.) С солью и хэшем невозможно определить, совпадает ли мой пароль на сайте A с на сайте B, даже с обеими таблицами паролей.