Je suis en train de grok le but de .NET SecureString. À partir de MSDN:
Une instance du Système.La classe String est à la fois immuable et, lorsqu'il n'est plus nécessaire, ne peut pas être par programmation prévue pour la collecte des ordures, qui est, l'instance est en lecture seule fois qu'il est créé et il n'est pas possible de prédire quand l'instance va être supprimé de la mémoire de l'ordinateur. Par conséquent, si un objet de type String contient des informations confidentielles telles qu'un mot de passe, numéro de carte de crédit, ou de données personnelles, il existe un risque que les informations pourraient être révélé après qu'il est utilisé parce que votre application ne peut pas supprimer les données de la mémoire de l'ordinateur.
Un SecureString objet est similaire à un objet de type String dans lequel il a une valeur de texte. Toutefois, la valeur d'un SecureString objet est automatiquement chiffré, peut être modifié jusqu'à ce que votre demande de marque comme étant en lecture seule, et peuvent être supprimés de la mémoire de l'ordinateur soit par votre application ou de l' .NET Framework garbage collector.
La valeur d'une instance de SecureString est automatiquement cryptées lorsque l'instance est initialisé ou lorsque la valeur est modifiée. Votre application peut rendre l'instance immuable et empêcher la modification, par l'évocation de la MakeReadOnly méthode.
Est le cryptage automatique le grand profit?
Et pourquoi je ne peux pas juste dire:
SecureString password = new SecureString("password");
au lieu de
SecureString pass = new SecureString();
foreach (char c in "password".ToCharArray())
pass.AppendChar(c);
Quel est l'aspect de SecureString qui me manque?