2011-12-28 13 views
0

隔離されたストレージファイルを暗号化して復号化します。隔離されたストレージファイルの暗号化と復号化

Microsoftのサイトには、エミュレータ上で分離ストレージを使用しているときにエミュレータが動作するようになるまで、それだけで存続することができ、私にhere

  1. を取りました。

  2. 隔離保管の物理的な場所を取得する方法はありません。

上記の声明が正しいことを願っています。

ここで、Isolated Storageファイルをどのように暗号化できますか?

ここでは、マイクロソフト、(アプリケーション名がGasMileageです)

によって提供された例を取るとすると、コード

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); 
    } 
} 

今、私は与えられたdata.txtをを暗号化するために、どのように、知ってほしいですコンテキスト。

アプリケーションの読み込み時にファイルを復号化し、アプリケーション終了時に暗号化する必要があります。

誰か助けてもらえますか?

答えて

2

クラスProtectedDataは、独立したストレージに格納するためにバイト配列を暗号化/復号化します。 How to: Encrypt Data in a Windows Phone Application

を参照して、Windowsの携帯電話用のSilverlightでは

、両方のユーザーとマシンのクレデンシャルは、データ

詳細について

を暗号化または復号化するために使用されている:あなたは、あなた自身、追加のエントロピーを供給することができますが、デフォルトでは

+0

ありがとう@リチャード。私は、パスワード、接続文字列、PINなどの機密データを暗号化および復号化できるDPAPIについて認識しています。隔離されたストレージファイル全体を暗号化するものがあれば、それを知りたかったのです。たとえば、データが読めない形式のテキストファイルです。 – Anil

+1

DPAPIを使用してデータを暗号化したら、そのデータをテキストファイルに書き込みます。テキストファイルを読み込むときは、バイト配列にロードしてテキストを読み取る前に解読します。 –