У меня есть приложение WPF с двумя PasswordBoxes, одно для пароля и другое для ввода пароля во второй раз для подтверждения. Я хотел использовать PasswordBox.SecurePassword
для получения пароля SecureString
, но мне нужно иметь возможность сравнить содержимое двух паролей для обеспечения равенства, прежде чем я приму пароль. Однако два идентичных 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, тогда, возможно, я смогу сравнить их.