Два одинаковых пароля могут привести к разным хэшам, поскольку Encrypto добавляет случайную соль в конец пароля перед его хэшированием.
В codeplex посмотрите исходный код для Hasher.cs , чтобы увидеть, как они это делают. Они в основном используют соль для создания хэша, а затем добавляют соль в конец хэша. это то, что вы храните в БД.
Когда пользователь устанавливает свой пароль или регистрируется новый пользователь, вы хэшируете пароль и сохраняете его в БД
var hasher = new Hasher();
hasher.SaltSize = 16;
var hashedPasswordToStoreInDB = hasher.Encrypt(passwordToSet);
Позже, когда они входят в систему и вводят свой пароль, вы сравниваете пароль, который вводит пользователь, с ранее хешированной версией, полученной из БД, как это
var hasher = new Hasher();
hasher.SaltSize = 16;
bool areEqual = hasher.CompareStringToHash(enteredPassword, hashFromDatabase);
Опять же, если вы посмотрите на исходный код (Hasher.CompareStringToHash
), вы увидите, что случайная соль восстанавливается из сохраненного хеша и затем используется для вычисления нового хеша из введенного пароля.