我试图了解.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的哪个方面?
撒科打诨
烙印99