我试图理解.NET的SecureString的目的。从MSDN得知:
System.String类的实例既是不可变的,当不再需要时也不能编程地安排垃圾回收;也就是说,创建后该实例是只读的,并且无法预测该实例何时从计算机内存中删除。因此,如果一个String对象包含敏感信息,例如密码、信用卡号或个人数据,那么存在风险,在使用后信息可能被泄露,因为您的应用程序无法从计算机内存中删除数据。
SecureString对象与String对象类似,都具有文本值。但是,SecureString对象的值是自动加密的,可以在您的应用程序将其标记为只读之前进行修改,并且可以由您的应用程序或.NET Framework垃圾收集器从计算机内存中删除。
当初始化实例或修改值时,SecureString实例的值会自动加密。您的应用程序可以通过调用MakeReadOnly方法使实例变为不可变,并防止进一步修改。
自动加密是重要的优势吗?
为什么我不能只说:
SecureString password = new SecureString("password");
取代
SecureString pass = new SecureString();
foreach (char c in "password".ToCharArray())
pass.AppendChar(c);
我缺少哪些关于SecureString的方面?
SecureString
进行新开发:https://github.com/dotnet/platform-compat/blob/master/docs/DE0001.md - Matt Thomas