这样做有什么好处
char[] sec = { 'a', 'b', 'c'};
SecureString s = new SecureString();
foreach (char c in sec) {
s.AppendChar(c);
}
IntPtr pointerName = System.Runtime.InteropServices.Marshal.SecureStringToBSTR(s);
String secret = System.Runtime.InteropServices.Marshal.PtrToStringBSTR(pointerName);
比这个
String secret = "abc";
或者
char[] sec = { 'a', 'b', 'c'};
String secret = new Secret(sec);
如果我想保护“abc”免受在反编译的MSIL代码中检测到的影响?
答案 0 :(得分:6)
SecureString将在内存中保护您的字符串一次,编译到您的MSIL中的字符串仍然在那里。如果您需要隐藏敏感信息,请考虑加密的app.config,如下所述:http://weblogs.asp.net/jgalloway/archive/2008/04/13/encrypting-passwords-in-a-net-app-config-file.aspx
HTH 多米尼克
答案 1 :(得分:3)
没有。存在SecureString以防止敏感文本(例如密码)被保存在内存中。