问题标签 [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.
c# - 使用用户凭据加密/解密(自定义)ConfigurationSection(非特定于机器)
我正在开发一个 .NET 4.5 桌面应用程序 (wpf)。我成功创建了一个自定义部分,我可以从中加载/编辑 App.config 中的数据。现在我想加密这一部分,并设法使用 DPAPI 做到这一点:
但是,当我尝试在另一台机器上解密这个 App.config - 但使用相同的用户(活动目录)时,这会失败。我手头没有具体的错误消息 - 我相信这根本没有必要,因为在我看来,这是由于“使用机器商店”标志而导致的失败,我不知道如何关掉。
我尝试在我的 app.config 中添加一个 configProtectedData,如下所示:
我比改变了
secInfo.ProtectionSection("DataProtectionConfigurationProvider");
至
secInfo.ProtectionSection("MyUserDataProtectionConfigurationProvider");
但是,我收到智能感知错误“不允许使用 'useMachineProtection' 属性。” 在 App.config中,当我启动应用程序时,我在 System.Windows.Application..ctor() 中的 System.Windows.Application.ApplicationInit() 中得到一个 TypeInitializationException。我读到我必须运行控制台命令来使用自定义 ProtectionProvider 加密文件,但是这些教程都是关于 ASP.NET 的,所以我不确定这是否适合我的需要。
我有点卡在这里。这个 API 有点简洁,因为我不必担心如何以及何时解密 - 我只需从该部分读取值,其余部分会自动完成。长话短说:如何使用 DPAPI 用户存储进行加密,或者如果不可能:什么是易于实施的替代方案?
encryption - I want to encrypt app.config without DPAPI
I want to encrypt app.config but DPAPI configuration can be decrypted by any other developer so what is a better way to encrypt app.config other than DPAPI.
c# - ProtectedMemory.Unprotect 输出垃圾
我有这个代码来存储和恢复授权令牌(它是字母数字):
它大部分工作正常,虽然有时我会得到垃圾(很多FD
字节,还有一些可读的)。我怀疑这只有在我重新启动时才会发生,但我在重现它时遇到了一些困难。
这是预期的行为吗?也就是说,是否MemoryProtectionScope.SameLogon
意味着重新启动后数据将始终不可读?难道我做错了什么?
FromHexString
andToHexString
方法完全符合您对它们的期望。
java - 使用 JNA 解密使用 MS DPAPI 加密的数据
是否可以解密使用 MS DPAPI 加密的数据?例如,我想从 Windows 注册表中解密数字证书。
但我得到一个 Win32 异常:线程“主”com.sun.jna.platform.win32.Win32Exception 中的异常:数据无效。
我没有找到有关此异常的任何信息。所以这是什么意思??我可以像我想要的那样解密这些文件还是不可能?
感谢帮助!
c# - 解密受 DPAPI 保护的数据以与 DirectoryEntry 一起使用 - 数据是否容易受到攻击?
我通过 DirectoryEntry 类通过 LDAP 查询域控制器,我需要在运行应用程序的机器上存储此查询的用户名和密码。将这些存储在字符串中是不可行的,因为这是一个很大的安全风险。
我决定使用 DPAPI,但是我对 C# 中数据的加密/解密有点陌生。解密时,这些数据必须临时存储在字符串变量中,然后用作 DirectoryEntry 构造函数的参数,至少根据我的理解。如果我错了,请纠正我。
这个用户名和密码一旦被解密以用于进行 LDAP 查询的方法,是否容易受到攻击?特别是创建一个新的 DirectoryEntry 对象。
我可以尝试通过让应用程序在每次进行查询时要求用户输入用户名和密码来规避这种情况,但是它们仍然必须存储在字符串中以与 DirectoryEntry 构造函数一起使用。
如何结合 DirectoryEntry 构造函数重新使用用户名和密码,而不会使这些数据容易受到攻击并且在内存中可见?
c# - 重新启动 IIS 后 DPAPI 无法解密
我使用 .NET 数据保护 API (DPAPI) 加密保存在 CRM 2013 中的字符串。System.Security.Cryptography.DataProtectionScope
设置为LocalMachine
. 只要我不重新启动 IIS,一切正常。之后,无法再解密在重新启动之前加密的字符串。CRM 的应用程序池使用 NetworkService 身份运行。我不太清楚这里发生了什么,有什么想法吗?
c# - System.Security.Cryptography.ProtectedData 如何生成唯一 ID
在将许可证数据写入注册表之前,我使用 System.Security.Cryptography.ProtectedData 保护许可证数据。
数据保护范围是 LocalMachine。
ProtectData 使用哪些参数来加密字符串?如果我将加密的字符串复制到另一台机器上,它会工作吗?
一些用户报告许可问题,ProtectedData 是否一致?
c# - ProtectedData Security - 访问不同机器上的加密数据
我正在使用本地机器范围来保护软件特定数据。
如果有人将 ProtectedData 复制到另一个系统,它将无法正常工作?是不是因为密码不一样?究竟是什么阻止了在另一台机器上访问加密数据。
- 我了解部分用户密码用于创建万能钥匙
- 当用户自动更改密码时,此主密钥会更改,即:事情很简单。但它还说,如果管理员重置密码,数据将不再可访问。那是什么情况?
- 在 LocalMachine 模式下,MasterKey 是如何生成的。不仅仅是密码,对吧?因为它适用于系统上的所有用户。
基本上我想用这个替换硬件ID。
我试图实现的是与基于硬件的加密相同的功能。这可能使用 ProtectData 吗?只是我不希望秘密在不同的系统上被访问
c# - 数据保护 API 突然变得很慢
我们的应用程序使用数据保护 API(通过ProtectedData
类)在存储密码之前对其进行加密。直到最近它工作正常,但突然该Protect
方法开始需要 2 秒才能返回(而不是大约 0.5 毫秒)。注意事项:
- 它仍然可以在我同事的机器上正常工作
- 我们正在使用
DataProtectionScope.CurrentUser
;如果我切换到DataProtectionScope.LocalMachine
,它会再次正常工作(但这不是我想要的) - 我尝试重新启动加密服务,但没有效果
- 我尝试重新启动计算机,也没有效果
这可能是什么原因造成的?如何修复它(最好不重新安装 Windows)?
c++ - 将 Powershell SecureString 传递给 C++ 程序?
我有一个本机程序,它接受在命令行中传递的密码。该密码显示在服务器日志中,因此我想通过在输入命令行之前对其进行加密来混淆它。然后我会在程序中解密它并像以前一样使用它。我的想法是我使用 powershell 创建一个带有密码的 SecureString,然后使用 ConvertFrom-SecureString 将其设为可打印的文本字符串。然后将该字符串在命令行上传递给本机 c++ 程序。从那里,我将其解码回二进制加密形式,然后将其解密回原始纯文本密码。容易吧?
从很少的文档来看,我认为 ConvertFrom-SecureString 进行 Base64 编码以使二进制 SecureString 无法打印文本。谁能证实这一点?我使用 ATL::Base64Decode() 恢复二进制字节。在比较原始和解码的前 20 个字节时,这似乎有效。
之后,我试图解密 SecureString 字节。再次,一些文档似乎暗示 SecureString 加密是使用机器密钥(或用户会话密钥)完成的。基于此,我正在尝试使用 DPAPI CryptUnprotectData 方法进行解密。在这里,虽然我得到了一个“(0x8007000d)数据无效”的decrupt失败。这听起来会奏效吗?如果是这样,知道我在哪里偏离路线吗?
这是解密方法...