現在、ファイルの暗号化を必要とするメトロアプリケーション(C#/ XAML)に取り組んでいます。そのためのWinformsとWPFでは、私はただ書く必要があります
System.IO.File.Encrypt("file.txt");
WinRTで同じことを行う方法は?
現在、ファイルの暗号化を必要とするメトロアプリケーション(C#/ XAML)に取り組んでいます。そのためのWinformsとWPFでは、私はただ書く必要があります
System.IO.File.Encrypt("file.txt");
WinRTで同じことを行う方法は?
まず、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);
}
私が理解しているように、WinRTは、サンドボックスで実行され、ファイルシステムに直接アクセスできないアプリケーション向けに設計されています。
ファイルシステムに直接アクセスするには、WinRT以外のサービス(Win32 / .NETデスクトップAPIなど)が必要になる可能性があり、WinRTアプリケーションがサービスと通信するようにします。
残念ながら、これにはWinRTでもう少し作業が必要になります。ほとんどの関数は非同期であるため、ボイラープレートがさらに必要になりIBuffer
、ファイルを直接操作するのではなく、ストリームとsを操作することになります。暗号クラスはWindows.Security.Cryptography
名前空間にあります。
の例はIBuffer
ここにあります。