Я использовал следующий код, чтобы получить мои производные паролей с помощью SHA1:Почему PasswordDeriveBytes и Rfc2898DeriveBytes дают разные результаты?
string passPhrase = "[email protected]";
string saltValue = "[email protected]";
string hashAlgorithm = "SHA1";
int passwordIterations = 2;
PasswordDeriveBytes password =
new PasswordDeriveBytes (passPhrase, saltValueBytes, hashAlgorithm, passwordIterations);
Тогда я получаю байты, выполнив:
var bytes = password.GetByes(32);
Я видел, что я должен использовать вместо Rfc2898DeriveBytes. Так что я теперь заменить его:
Rfc2898DeriveBytes password1 = new Rfc2898DeriveBytes(passPhrase, saltValueBytes, passwordIterations);
Но когда я делаю:
var bytes = password.GetBytes(32);
я не получаю то же значение. Любая подсказка?
Хорошо, почему бы вы * ожидать * получить одинаковые значения, когда вы используете два разных алгоритма для получения паролей? –
Это не то же самое? Я читал, что Rfc2898DeriveBytes использует SHA1 по умолчанию. – VAAA
Использует HMACSHA1. Я не знаю достаточно о деталях, чтобы узнать, будет ли это так же, но меня это не особенно удивляет, что это не так. –