如何检查SecureString是否包含某些文本?

时间:2018-01-08 11:47:21

标签: c# .net string 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 个答案:

答案 0 :(得分:1)

检查它而不破坏SecureString目的的最佳方法是在进程输出缓冲区循环中,然后进入SecureString安全缓冲区。但在最好的情况下,这样做你会创建一个包含最后N个字符的普通内存字符串(N为" Hello world" length),这有点不安全。比调用SecureString.ToString()更不安全,因为正如你已经说过的那样,它会将所有文本存储在普通内存中,从而无法实现目的。