2011-12-28 1 views
0

Je souhaite crypter et décrypter le fichier de stockage isolé.Chiffrement et déchiffrement du fichier de stockage isolé

Le site Microsoft m'a pris here

  1. Lors de l'utilisation de stockage isolé sur l'émulateur, il peut persister seulement jusqu'à ce que l'émulateur est en cours d'exécution.

  2. Il est impossible d'obtenir l'emplacement physique du stockage isolé.

J'espère que les énoncés ci-dessus sont corrects. Maintenant, je veux savoir comment je peux crypter le fichier de stockage isolé?

En prenant l'exemple fourni par Microsoft, (nom de l'application est GasMileage)

ici est le code

namespace CodeBadger.GasMileage.Persistence 
{ 
    public class IsolatedStorageGateway 
    { 
     private const string StorageFile = "data.txt"; 
     private readonly XmlSerializer _serializer; 

    public IsolatedStorageGateway() 
    { 
     _serializer = new XmlSerializer(typeof (Notebook)); 
    } 

    public Notebook LoadNotebook() 
    { 
     using (var store = IsolatedStorageFile.GetUserStoreForApplication()) 
     { 
      using (var stream = GetStorageStreamForReading(store)) 
      using (var reader = new StreamReader(stream)) 
      { 
       return reader.EndOfStream 
        ? new Notebook() 
        : (Notebook) _serializer.Deserialize(reader); 
      } 
     } 
    } 

    public NotebookEntry LoadEntry(Guid guid) 
    { 
     var notebook = LoadNotebook(); 
     return notebook.Where(x => x.Id == guid).FirstOrDefault(); 
    } 

    public void StoreEntry(NotebookEntry entry) 
    { 
     var notebook = LoadNotebook(); 
     AssignId(entry); 
     RemoveExistingEntryFromNotebook(notebook, entry); 
     Console.WriteLine(entry); 
     notebook.Add(entry); 
     WriteNotebookToStorage(notebook); 
    } 

    public void DeleteEntry(NotebookEntry entry) 
    { 
     var notebook = LoadNotebook(); 
     RemoveExistingEntryFromNotebook(notebook, entry); 
     WriteNotebookToStorage(notebook); 
    } 

    private void WriteNotebookToStorage(Notebook notebook) 
    { 
     using (var store = IsolatedStorageFile.GetUserStoreForApplication()) 
     using (var stream = GetStorageStreamForWriting(store)) 
     { 
      _serializer.Serialize(stream, notebook); 
     } 
    } 

    private static void AssignId(NotebookEntry entry) 
    { 
     if (entry.Id == Guid.Empty) entry.Id = Guid.NewGuid(); 
    } 

    private static void RemoveExistingEntryFromNotebook(Notebook notebook, NotebookEntry entry) 
    { 
     var toRemove = notebook.Where(x => x.Id == entry.Id).FirstOrDefault(); 
     if (toRemove == null) return; 
     notebook.Remove(toRemove); 
    } 

    private static IsolatedStorageFileStream GetStorageStreamForWriting(IsolatedStorageFile store) 
    { 
     return new IsolatedStorageFileStream(StorageFile, FileMode.Create, FileAccess.Write, store); 
    } 

    private static IsolatedStorageFileStream GetStorageStreamForReading(IsolatedStorageFile store) 
    { 
     return new IsolatedStorageFileStream(StorageFile, FileMode.OpenOrCreate, FileAccess.Read, store); 
    } 
} 

Maintenant, je veux savoir, Comment chiffrer le donnees.txt donnée dans la le contexte.

Lors du chargement de l'application, déchiffrez le fichier et, à la fin de l'application, il doit être chiffré.

Quelqu'un peut-il m'aider à ce sujet?

Répondre

2

La classe ProtectedData cryptera/décryptera un tableau d'octets pour le stockage sur un stockage isolé. Vous pouvez fournir votre propre entropie, mais par défaut:

Dans Silverlight pour Windows Phone, à la fois les informations d'identification de l'utilisateur et la machine sont utilisés pour crypter ou décrypter des données

Pour plus d'informations, consultez How to: Encrypt Data in a Windows Phone Application

+0

Merci @Richard. Je suis conscient de la DPAPI qui peut crypter et décrypter des données confidentielles telles que les mots de passe, les chaînes de connexion et les codes confidentiels. Je voulais savoir, s'il y a quelque chose à crypter, décrypter l'ensemble du fichier de stockage isolé lui-même. Par exemple un fichier texte avec des données sous forme illisible. – Anil

+1

Une fois les données cryptées à l'aide de DPAPI, vous devez écrire les données dans le fichier texte. Lors du chargement du fichier texte, vous devez le charger dans un tableau d'octets, puis le décrypter avant de lire le texte. –

Questions connexes