2

現在、ファイルの暗号化を必要とするメトロアプリケーション(C#/ XAML)に取り組んでいます。そのためのWinformsとWPFでは、私はただ書く必要があります

System.IO.File.Encrypt("file.txt");

WinRTで同じことを行う方法は?

4

3 に答える 3

4

まず、System.IO.File.Encryptを使用してファイルを暗号化することは決してありません。
次に、次のドキュメントを確認します。WindowsランタイムAPI 3番目に、ここここで
説明する同様の方法を使用してファイルを暗号化します。

public MainWindow()
{
   InitializeComponent();

   byte[] encryptedPassword;

   // Create a new instance of the RijndaelManaged
   // class.  This generates a new key and initialization 
   // vector (IV).
   using (var algorithm = new RijndaelManaged())
   {
      algorithm.KeySize = 256;
      algorithm.BlockSize = 128;

      // Encrypt the string to an array of bytes.
      encryptedPassword = Cryptology.EncryptStringToBytes("Password", 
                                                    algorithm.Key, algorithm.IV);
   }

   string chars = encryptedPassword.Aggregate(string.Empty, 
                                         (current, b) => current + b.ToString());

Cryptology.EncryptFile(@"C:\Users\Ira\Downloads\test.txt", @"C:\Users\Ira\Downloads\encrypted_test.txt", chars);

Cryptology.DecryptFile(@"C:\Users\Ira\Downloads\encrypted_test.txt", @"C:\Users\Ira\Downloads\unencyrpted_test.txt", chars);
}
于 2012-05-03T16:48:42.607 に答える
1

私が理解しているように、WinRTは、サンドボックスで実行され、ファイルシステムに直接アクセスできないアプリケーション向けに設計されています。

ファイルシステムに直接アクセスするには、WinRT以外のサービス(Win32 / .NETデスクトップAPIなど)が必要になる可能性があり、WinRTアプリケーションがサービスと通信するようにします。

于 2012-05-03T16:37:08.720 に答える
0

残念ながら、これにはWinRTでもう少し作業が必要になります。ほとんどの関数は非同期であるため、ボイラープレートがさらに必要になりIBuffer、ファイルを直接操作するのではなく、ストリームとsを操作することになります。暗号クラスはWindows.Security.Cryptography名前空間にあります。

の例はIBufferここにあります

于 2012-05-03T16:35:11.207 に答える