如何检查 SecureString 是否包含特定文本?
How to check if SecureString contains certain text?
我正在尝试查看我的 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
中的内容写入内存,这完全违背了使用[=11的目的=].
我应该如何检查 SecureString
是否包含一些文本?
在不破坏 SecureString
目的的情况下检查它的最佳方法是在进程输出缓冲区循环中,在它进入 SecureString
安全缓冲区之前。但在最好的情况下,这样做会创建一个包含最后 N 个字符("Hello world" 长度为 N)的普通内存字符串,这会有点不安全。当然比调用 SecureString.ToString() 更不安全,因为正如您已经说过的那样,它会将所有文本存储在普通内存中,从而破坏了目的。
我正在尝试查看我的 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
中的内容写入内存,这完全违背了使用[=11的目的=].
我应该如何检查 SecureString
是否包含一些文本?
在不破坏 SecureString
目的的情况下检查它的最佳方法是在进程输出缓冲区循环中,在它进入 SecureString
安全缓冲区之前。但在最好的情况下,这样做会创建一个包含最后 N 个字符("Hello world" 长度为 N)的普通内存字符串,这会有点不安全。当然比调用 SecureString.ToString() 更不安全,因为正如您已经说过的那样,它会将所有文本存储在普通内存中,从而破坏了目的。