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

Zee*_*mee 2 .net c# 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);
Run Code Online (Sandbox Code Playgroud)

比这个

String secret = "abc";
Run Code Online (Sandbox Code Playgroud)

或这个

char[] sec = { 'a', 'b', 'c'};
String secret = new Secret(sec);
Run Code Online (Sandbox Code Playgroud)

如果我想保护"abc"免受在反编译的MSIL代码中检测到的影响?

Dom*_*nik 6

SecureString将在内存中保护你的字符串一次,编译到你的MSIL中的字符串仍然在那里.如果您需要隐藏敏感信息,请参阅此处所述的加密app.config:http://weblogs.asp.net/jgalloway/archive/2008/04/13/encrypting-passwords-in-a-net-app -config-file.aspx

HTH Dominik