如何从桌面应用程序解密 Windows Store DPAPI 保护的数据

     2023-04-13     25

关键词:

【中文标题】如何从桌面应用程序解密 Windows Store DPAPI 保护的数据【英文标题】:How to decrypt Windows Store DPAPI protected data from desktop app 【发布时间】:2016-03-14 19:27:58 【问题描述】:

我们正在编写一种工具,用于将数据从 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 和熵null,但这会导致上述 CryptographicException。猜测一下,在内部,存储 API 使用特定的熵,没有它我们无法解密数据。

有谁知道商店 DPAPI API 在幕后做了什么让我们能够解密商店数据?

【问题讨论】:

商店代码有效吗? documentation 建议不应该 - “在开始解密操作之前不要使用此构造函数。您必须改用 DataProtectionProvider() 构造函数。” 是的商店应用程序工作正常,商店应用程序的作者很幸运,或者文档不正确 解密显然可以在不指定范围的情况下工作这一事实表明范围与数据一起存储(可能未加密,但不一定是人类可读的)。据我所知,通常的 DPAPI 不会这样做。这可能至少是为什么将 ProtectedData 与使用 DataProtectionProvider 加密的数据一起使用不起作用的部分原因。 【参考方案1】:

很抱歉没有直接的答案,但您不能从桌面应用程序中引用 WinRT API 来解密这些安全字节吗?

这是在 WPF 应用程序中引用 WinRT API 的指南:http://www.hanselman.com/blog/HowToCallWinRTAPIsInWindows8FromCDesktopApplicationsWinRTDiagram.aspx

问候

【讨论】:

我们终于把代码放进去,除了不得不习惯在 IBuffers 和 Storages 的世界里工作之外,它工作得很好 - 谢谢

如何从 hWnd 获取 Windows Store App 图标?

...布时间】:2015-11-0704:30:50【问题描述】:我目前在C#Windows应用程序中使用WM_GETICON消息来获取与hWnd关联的图标,但它不会让我获得ApplicationFrameHost(Windows应用商店应用程序)进程的图标(这是有道理的,因为它隐藏了实际的 查看详情

如何从 Windows 商店应用程序启动桌面应用程序?

】如何从Windows商店应用程序启动桌面应用程序?【英文标题】:Howtolaunchadesktopapplicationfromwindowsstoreapps?【发布时间】:2015-09-2902:30:03【问题描述】:请告诉我如何使用c#从Windows商店应用程序启动桌面应用程序或.exe文件。任何帮... 查看详情

如何从另一个桌面应用程序控制 Windows 服务

】如何从另一个桌面应用程序控制Windows服务【英文标题】:Howtocontrolofwindowsservicefromaanotherdesktopapps【发布时间】:2011-04-0606:08:01【问题描述】:假设我有一个Windows服务,它可以做一些工作并由c#开发。现在我想用c#开发另一个win... 查看详情

如何从 Windows CE mobile 访问文件到我的桌面应用程序?

】如何从WindowsCEmobile访问文件到我的桌面应用程序?【英文标题】:HowCanIaccessFilefromWindowsCEmobiletomydesktopapplication?【发布时间】:2011-12-3113:31:47【问题描述】:我想在C#中从windowscemobile访问.sdf文件到我的桌面应用程序。如何从wind... 查看详情

Windows 8 桌面应用程序(不是 Metro 或 Store 应用程序)是不是支持 SQL Server CE 3.5?

】Windows8桌面应用程序(不是Metro或Store应用程序)是不是支持SQLServerCE3.5?【英文标题】:DoesWindows8DesktopApplications(NotMetroorStoreapps)supportSQLServerCE3.5?Windows8桌面应用程序(不是Metro或Store应用程序)是否支持SQLServerCE3.5?【发布时间... 查看详情

如何从 WPF MSIX 应用程序(桌面桥)更改 Windows 10 颜色设置?

】如何从WPFMSIX应用程序(桌面桥)更改Windows10颜色设置?【英文标题】:HowcanIchangetheWindows10ColorssettingsfromaWPFMSIXapp(DesktopBridge)?【发布时间】:2021-08-1100:48:48【问题描述】:在Win10中有这部分的自定义设置我想知道是否有一种方... 查看详情

如何在 Windows Store 应用程序中实现家长控制?

】如何在WindowsStore应用程序中实现家长控制?【英文标题】:HowtoimplementparentalcontrolinWindowsStoreapplication?【发布时间】:2014-12-2522:30:20【问题描述】:我正在将教育游戏移植到Windows应用商店。游戏从网站下载关卡。我不认为他们... 查看详情

从 Web 应用程序 - 我们如何检查我们的 Windows 桌面应用程序是不是已安装?连版本信息,我们怎么能得到呢?

】从Web应用程序-我们如何检查我们的Windows桌面应用程序是不是已安装?连版本信息,我们怎么能得到呢?【英文标题】:FromaWebApplication-Howcanwecheckourwindowsdesktopapplicationisalreadyinstalledornot?Eventheversioninformation,howwecangetit?从Web应用... 查看详情

从 Qt UI 应用程序到 Windows 10 Store 应用程序

】从QtUI应用程序到Windows10Store应用程序【英文标题】:FromQtUIapptoWindows10Storeapp【发布时间】:2017-09-2712:53:38【问题描述】:我有一个Qt(5.6)UI应用程序,我使用它将其转换为VisualStudio项目qmake-tpvcMyProject.proCONFIG+=windeployqt当我在Visual... 查看详情

windows11store应用商店下载的软件,怎么创建快捷方式

楔子Windows11是windows最新版,好多东西可以直接从MicrosfotStore下载。但是下载之后,怎么添加快捷方式到桌面,以方便打开呢?问题Windows11这个版本虽然被诟病有好多问题,但是个人用起来是非常舒服的感觉。... 查看详情

Qt:如何编写 Windows 桌面实用程序?

】Qt:如何编写Windows桌面实用程序?【英文标题】:Qt:HowtoWriteaWindowsDesktopUtility?【发布时间】:2020-04-0403:04:55【问题描述】:我已经使用Qt进行小部件开发了。这很简单。但是我怎样才能编写一个可以从Windows上的任何地方调用的... 查看详情

如何从 Windows 应用程序发送推送通知

】如何从Windows应用程序发送推送通知【英文标题】:Howsendpushnotificationfromwindowsapp【发布时间】:2015-06-0121:29:07【问题描述】:我想从桌面Windows应用发送Windowsphone8.1的推送通知。我找到了这个例子:privatestaticasyncvoidSendNotificationA... 查看详情

从桌面运行 Windows 应用商店应用程序

】从桌面运行Windows应用商店应用程序【英文标题】:RunWindowsStoreApplicationfromDesktop【发布时间】:2015-11-2806:01:33【问题描述】:我正在尝试从Windows10上的C#Windows窗体应用程序启动Windows应用商店应用程序。我尝试了一些方法(可能... 查看详情

如何从 Electron 应用程序检测桌面空闲时间?

】如何从Electron应用程序检测桌面空闲时间?【英文标题】:HowtodetectdesktopidletimefromanElectronapp?【发布时间】:2022-01-1916:34:38【问题描述】:我需要我的Electron应用程序在一段时间内响应用户闲置(操作系统上的任何程序都没有鼠... 查看详情

C# Windows Store App 如何调用 Windows 窗体项目的方法

...015-09-1904:23:55【问题描述】:我创建了一个Windows应用商店应用程序,该应用程序在以Windows8.1作为操作系统的平板电脑上运行。这个应用程序需要打印报表,所以我使用CrystalReportsForVis 查看详情

如何使用苹果电脑远程连接windows电脑?

使用Mac的远程桌面客户端能够从Mac电脑使用Windows应用程序、资源和台式计算机,那么具体怎么操作呢,下面让小编为大家讲解一下!软件地址:MicrosoftRemoteDesktopforMac(远程桌面连接工具)v10.2.13永久激活版获取客户端远程桌面添加... 查看详情

从 Windows Store App 中的目标应用程序回调共享应用程序

】从WindowsStoreApp中的目标应用程序回调共享应用程序【英文标题】:CallbacktoSharedApplicationfromTargetApplicationinWindowsStoreApp【发布时间】:2016-04-1013:48:40【问题描述】:我有一个浏览器应用程序,它允许我将文件存储在本地空间并显... 查看详情

windows桌面远程如何高效管理?

...醒LAN上的系统或关闭远程系统。借助合适的远程桌面管理应用程序,IT管理员将能够从一个平台执行所有这些任务。 查看详情