在MSIL反编译方面,SecureString会给我带来什么好处吗?

时间:2011-07-01 10:53:32

标签: c# .net securestring

这样做有什么好处

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代码中检测到的影响?

2 个答案:

答案 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以防止敏感文本(例如密码)被保存在内存中。