У меня есть приложение WPF с двумя PasswordBox, одно для пароля, а другое для пароля, который нужно вводить второй раз для подтверждения. Я хотел использовать PasswordBox.SecurePassword
, чтобы получить SecureString
пароля, но мне нужно иметь возможность сравнивать содержимое двух PasswordBox, чтобы гарантировать равенство, прежде чем я приму пароль . Однако две идентичные SecureStrings не считаются равными:
var secString1 = new SecureString();
var secString2 = new SecureString();
foreach (char c in "testing")
{
secString1.AppendChar(c);
secString2.AppendChar(c);
}
Assert.AreEqual(secString1, secString2); // This fails
Я думал, что сравнение свойства Password
PasswordBoxes приведет к поражению точки доступа только к SecurePassword
, потому что я буду читать текстовый пароль. Что мне делать, чтобы сравнить два пароля без ущерба для безопасности ?
Изменить : на основе этого вопроса я проверяю это сообщение в блоге об «использовании класса Marshal для преобразования SecureString в ANSI, Unicode или BSTR», тогда, может быть, я смогу их сравнить.