Как проверить, содержит ли SecureString определенный текст?

Я пытаюсь увидеть, мой ли SecureString содержит определенный текст.

Я мог бы сделать это так:

var sstr = new SecureString();
...
//sstr is now appended with a set of characters
if(sstr.ToString().Contains("Hello world")) {
   //do something
}

Это работает, но момент, когда я делаю sstr.ToString()кажется, я только что написал содержание в SecureString в память, и это полностью побеждает цель использования SecureString,

Как я должен проверить, является ли SecureString содержит текст?

1 ответ

Решение

Лучший подход, чтобы проверить это, не победив SecureString цель находится в вашем цикле буфера вывода процесса, прежде чем он попадет в SecureString защищенный буфер. Но в лучшем случае, если вы сделаете это, вы создадите простую строку памяти из последних N символов (равную N длины "Hello world"), что будет немного небезопасно. Менее небезопасно, чем вызов SecureString.ToString(), конечно, потому что, как вы уже заявили, он сохранит весь текст в простой памяти, что противоречит цели.

Другие вопросы по тегам