正常的String类型值,在脱离开作用域之后,其值在内存中并不会被立即销毁,这时如果有人恶意扫描你的内存,程序中所保存的机密信息就会暴露;于是就有了System.Security.SecureString,SecureString表示一个应保密的文本,它在初始化时就已被加密,并且脱离作用域后会被立即销毁;
附一个小Demo:
class Program{
static void Main(){
System.Security.SecureString secureStr = new System.Security.SecureString();
secureStr.AppendChar('A');
string re = secureStr.ToString();//SecureString 中的值会被加密保存,不能直接获取,此时re=System.Security.SecureString
IntPtr inP = Marshal.SecureStringToBSTR(secureStr);//inP为secureStr的句柄
string ss = Marshal.PtrToStringBSTR(inP);//ss="A" Marshal.ZeroFreeBSTR(inP);//释放BSTR指针
string ss2 = Marshal.PtrToStringBSTR(inP);//ss2=""
}
}
SecureString用法Demo