我在努力探索这个计划的目的.NET的安全字符串.来自MSDN:
系统的一个实例.String类是不可变的,当不再需要时,不能通过编程计划进行垃圾收集;也就是说,实例创建后是只读的,无法预测实例何时将从计算机内存中删除.因此,如果字符串对象包含敏感信息,如密码、信用卡号或个人数据,则在使用该信息后,由于应用程序无法从计算机内存中删除数据,因此该信息可能会被泄露.
SecureString对象类似于String对象,因为它有一个文本值.但是,SecureString对象的值会自动加密,可以修改,直到应用程序将其标记为只读,并且可以由应用程序或从计算机内存中删除.NET框架垃圾收集器.
初始化SecureString实例或修改该值时,会自动加密该实例的值.您的应用程序可以通过调用MakeReadOnly方法使实例不可变并防止进一步修改.
自动加密是最大的回报吗?
为什么我不能说:
SecureString password = new SecureString("password");
而不是
SecureString pass = new SecureString();
foreach (char c in "password".ToCharArray())
pass.AppendChar(c);
我缺少SecureString的哪些方面?