Я пытаюсь понять цель .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 мне не хватает?