问题标签 [dpapi]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
620 浏览

c# - System.Security.Cryptography 无法更新密码

通读这篇参考文章:https ://msdn.microsoft.com/en-us/library/xh68ketz(v=vs.110).aspx

还在这里找到了同样的问题:CryptographicException - Unable to update the password

然而,没有答案。

在尝试使用该legacy示例时,我能够创建受保护的列并将其存储到 sqlite 数据库中。

但是,当重新调用这些相同的值以取消保护时,VS 会引发异常。

我当前的检索:

但是,这会引发此行的异常:

抛出以下错误:

我不确定我是否理解它引用更改的原因/密码。我只是试图取消保护已经保护的存储值。

0 投票
1 回答
155 浏览

c# - 在这种情况下使用 SecureString 会提高安全性吗?

我的自定义 .Net 进程使用与当前上下文不同的帐户映射驱动器。密码存储在配置文件中,DPAPI 使用机器密钥加密。

该代码有效,但我想知道 SecureString 的使用是否会提供额外的安全性。我相信下面的弱点在于 PlainBytes 数组和 MapPwd 和 MapDriveCmd 字符串,当它们以纯文本形式存在于内存中时。

我对 SecureString 进行了一些研究,但不太了解它是否适​​用于此。在下面的代码之后没有使用三个局部可疑变量。如果我在没有 SecureString 的情况下保持原样,车库收集器会在流程结束之前处理掉这些吗?

欢迎对该技术的任何其他评论。谢谢。

0 投票
2 回答
1960 浏览

oauth-2.0 - 解耦自托管 OWIN 授权服务器

我有一个自托管的 OWIN 应用程序,配置为授权服务器和信号器资源服务器。

我的客户成功地获得了不记名令牌,并在随后对 signalR 集线器的调用中将其呈现以进行授权。

我的下一步是解耦授权服务,以便它可以在自己的主机上运行。首先,我创建了一个单独的自托管应用程序,其中仅包含授权服务代码。在我的开发机器上它仍然是一个解决方案,但是授权服务和 signalR 资源托管在不同的进程中。

身份验证流程仍然正常工作。令牌正在访问我的资源服务器,但现在从 signalR 集线器获得 401 未经授权。

在 ASP.Net Web API 中有很多解决此问题的支持,您可以在其中同步 web.config 文件中的 machine.config 值。但这不是我的架构。在 HttpListener 下作为自托管应用程序运行使用不同的加密,默认为 DPAPI。

似乎没有太多关于在自托管架构中解决这个问题的讨论。我的理论是,即使在同一台机器上的不同进程下,DPAPI 解密也会失败,所以我得到 401。

我试图弄清楚是否有一些最小的方法来解决这个问题,或者我是否必须完全重构可能使用 JWT。

编辑:添加一些代码来帮助显示我的设置

0 投票
1 回答
906 浏览

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

我们正在编写一种工具来将数据从 Windows 应用商店应用程序迁移到 Windows 桌面应用程序。商店应用程序使用 DPAPI 保护一些数据,我们需要能够从桌面应用程序中解密这些数据。

当调用 ProtectedData.Unprotect 方法时,我们得到一个 CryptographicException 说明“参数无效”。查看商店应用程序代码,我可以看到 DPAPI API 与桌面 .NET 框架不同。商店应用 API 使用如下:

桌面 API 如下所示

我们曾尝试使用DataProtectionScope.CurrentUser和熵null,但这会导致上述 CryptographicException。猜测一下,在内部,存储 API 使用特定的熵,没有它我们无法解密数据。

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

0 投票
2 回答
11847 浏览

c# - C# 中的 DPAPI 密码加密并保存到数据库中。然后使用密钥对其进行解密

我曾尝试使用 UTF8 算法和 SHA256 进行密码加密,但有人建议不要使用它们。相反,我被建议使用 DPAPI。我从谷歌浏览了一些不清楚的示例代码。你能帮我处理一下 DPAPI 算法吗?

0 投票
1 回答
1196 浏览

c# - 为什么不使用 DPAPI 来加密所有设置而不是只加密主密码?

在我的应用程序中,我需要加密各种设置和密码。到目前为止,我一直在使用 RijndaelManaged 类等执行此操作,如下所示:

通常的问题是我需要将密码(和 saltValue)存储在某个地方。为了以 sequre 方式存储密码,我遇到了 DPAPI Protect() 和 Unprotect() 类,如下所示:

我的问题如下: 使用 DPAPI,我现在可以以安全的方式存储我的加密方法的密码,但为什么我不应该简单地使用 DPAPI 直接加密我的所有设置?这是否会用大量数据填充 DPAPI,而这并不意味着它?

我的想法不是执行以下操作:

我可以执行以下操作:

我知道在使用 DPAPI 时,我必须在同一台机器(或同一用户)上解密,但这对我来说不是问题。

任何帮助表示赞赏!

0 投票
1 回答
42 浏览

security - 动态创建用户并使用 DPAPI

对于某些项目,我需要:

  1. 动态创建本地用户帐户(为此我使用 .NET 框架中的 UserPrincipal 类)

  2. 模拟该用户(我编写了一些调用本机 LogonUser (advapi32.dll) 的类

  3. 使用 DPAPI 加密一些用户数据。我还有一些调用本机 CryptProtectData 和 CryptUnprotectData (crypt32.dll) 的类

这里的问题是,在动态创建用户时,不会创建用户特定的文件夹,即使我调用 LogonUser。

由于 DPAPI 将查找这些文件夹,而这些文件夹不存在,因此调用将失败。

现在,如果我手动执行用户登录,将创建这些文件夹,之后一切都很好。但是,我需要一种方法来自动创建这些文件夹,而无需执行手动登录。

有没有办法做到这一点?

0 投票
1 回答
184 浏览

c# - 我可以同时使用 LocalMachine 和 CurrentUser 吗?

如何在数据保护 API 范围内同时使用 LocalMachine 和 CurrentUser?我想加强安全性。

0 投票
1 回答
659 浏览

c# - 使用 DPAPI (Data Protector API) 取消保护不同计算机上的数据

我正在使用DPAPI(Data Protector API)来保护和取消保护数据。我正在从文件中读取数据。

C:\Users\nandkishore.sharma\AppData\Local\Google\Chrome\User Data\Default\WebData。

WebData如果我在同一台计算机(放置位置)上解密数据,我可以从文件()中读取数据WebData。但是当我WebData从另一台计算机(文件已经加密)中选择文件时,尝试在我的计算机上解密它,我无法做到这一点。

我找到了这个链接 如何解密由 CryptProtectData 函数加密的数据?

它说..

“世界上没有其他计算机可以解密在不同计算机上加密的数据。”

以上说法属实吗?

我读了下面的链接,但它没有解决我的问题.. 无法解密第二台计算机上的数据

如何获取用于加密的密钥(参考WebData文件),以便在解密时使用相同的密钥?

请帮我解决这个问题。

提前致谢..

0 投票
0 回答
229 浏览

c# - 服务登录 - 如何存储凭据

在遗留系统中(写在C#运行上Windows)服务需要使用其他服务。一项服务负责对来访者的到来或离开采取行动。服务必须通过带有用户和密码的 REST API 对自己进行身份验证,并获得身份令牌作为回报。所以我需要将服务的密码存储在某个地方。我正在研究数据保护 API (DPAPI),但发现它已被弃用,并且我发现出售用于破解 DPAPI 加密密码的软件。您是否认为使用Credential Manager是一个不错的选择?凭据管理器中的密码是否仍应加密?什么?