我们正在编写一个工具,用于将数据从Windows应用商店应用程序迁移到Windows桌面应用程序。商店应用程序使用DPAPI保护一些数据,我们需要能够从桌面应用程序解密。
当调用ProtectedData.Unprotect方法时,我们收到一个CryptographicException,声明"参数无效"。查看商店应用程序代码,我可以看到DPAPI API与桌面.NET框架不同。商店应用API的用法如下:
provider = new DataProtectionProvider("LOCAL=user");
...
IBuffer origBuffer = await this.provider.UnprotectAsync(encryptedBuffer);
桌面API如下所示
byte[] ProtectedData.Unprotect(byte[] encryptedBytes,
byte[] entropy,
DataProtectionScope scope);
我们尝试使用DataProtectionScope.CurrentUser
和entropy null
但这会导致上述CryptographicException。据猜测,在内部,商店API使用特定的熵,否则我们无法解密数据。
有没有人知道商店DPAPI API在幕后做什么才能让我们解密商店数据?
答案 0 :(得分:1)
很抱歉没有直接答案,但是你不能从桌面应用程序中引用WinRT API来解密这个安全字节吗?
以下是在WPF应用程序中引用WinRT API的指南:http://www.hanselman.com/blog/HowToCallWinRTAPIsInWindows8FromCDesktopApplicationsWinRTDiagram.aspx
此致