我目前正在开发需要文件加密的 Metro 应用程序 (C#/XAML)。在 Winforms 和 WPF 中,我只需要写
System.IO.File.Encrypt("file.txt");
如何在 WinRT 中做同样的事情?
我目前正在开发需要文件加密的 Metro 应用程序 (C#/XAML)。在 Winforms 和 WPF 中,我只需要写
System.IO.File.Encrypt("file.txt");
如何在 WinRT 中做同样的事情?
首先,我永远不会使用 System.IO.File.Encrypt 来加密文件。
其次,我将查看以下文档:Windows Runtime API第三,我将使用此处和此处
描述的类似方法加密文件
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
可以在此处找到带有 an 的示例。