C # - сравните две SecureString на предмет равенства

У меня есть приложение 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», тогда, может быть, я смогу их сравнить.

35
задан Community 23 May 2017 в 12:00
поделиться