Tag: dpapi

如何使用Azure Worker Role和OWIN扩展SignalR

SignalR使用Azure Web角色非常精确地扩展。 但是,当我在Azure辅助角色中使用自托管OWIN项目时,SignalR将在添加多个实例时开始出现问题。 为了记录,我的项目使用Redis作为背板。 将Azure辅助角色实例增加到一个以上时,客户端连接将随机失败,并显示错误“ConnectionId格式不正确” 。 我认为这是由于负载均衡导致单个客户端的协商跨越多个服务器时引起的; 我不相信参与协商的多个服务器可以解密数据(DPAPI在封面下?)。 我尝试在app.config中设置 validationKey和decryptionKey,但这似乎没有什么区别; 问题依然存在。 同样,该项目将作为Web角色(IIS)正常工作,但不能作为工作者角色(OWIN自托管)。 假设这是DpapiDataProtectionProvider的问题,我如何确保提供程序在多个服务器/实例之间呈现相同的加密/解密结果? 解 SignalR(DpapiDataProtectionProvider)使用的默认保护提供程序似乎不支持Azure Worker Role scaleout。 通过滚动我自己的示例提供程序,我能够扩展SignalR / OWIN / Azure Worker并且不会收到随机400 HTTP /“ConnectionId的格式不正确”。 请记住,以下示例不会保护/保护令牌。 public class ExampleDataProvider : IDataProtector { public byte[] Protect(byte[] userData) { Trace.TraceInformation(“Protect called: ” + Convert.ToBase64String(userData)); return userData; } public byte[] Unprotect(byte[] protectedData) { Trace.TraceInformation(“Unprotect called: ” + […]

IIS应用程序上的ProtectedData.Unprotect – 在IISRESET之后无法工作

我需要从本地数据库存储和检索敏感数据 – 这些数据由Web应用程序使用。 为了保护所述数据,我选择使用ProtectedData类。 IIS应用程序正在使用特定的AD用户(“高级设置”中的“标识”属性)运行。 一切正常,直到我执行IISRESET – 此时,似乎为ProtectedData类的目的更改了标识,并且我留下了无法解密的数据 – 我得到的Key not valid for use in specified stateexception。 这是我正在使用的代码: static public string Encrypt(string data) { var encryptedData = ProtectedData.Protect(System.Text.Encoding.UTF8.GetBytes(data), entropy, DataProtectionScope.CurrentUser); return Convert.ToBase64String(encryptedData); } static public string Decrypt(string base64string) { var encryptedData = Convert.FromBase64String(base64string); return System.Text.Encoding.UTF8.GetString(ProtectedData.Unprotect(encryptedData, entropy, DataProtectionScope.CurrentUser)); } 对我的应用来说, entropy显然是静态的。 这是怎么回事? 我的印象是DataProtectionScope.CurrentUser将使用,顾名思义,当前用户 – 据我所知,应该是应用程序池标识。 当我执行IISRESET时,为什么它会被改变?

c#中的数据加密和密钥管理

采取哪条路线,哪些是利弊,哪个更安全.. 1)生成AES密钥,用它加密数据,然后用RSA加密AES密钥,将加密数据和加密的AES密钥保存到文件,并将RSA密钥保存到KeyContainer。 2)或者使用DPAPI ProtectedData类加密数据并将其保存到文件中,然后将我使用的熵与ProtectedData.Protect()到某个地方..(也可以用RSA加密它,将RSA密钥对存储到KeyContainer以及带有数据的加密熵到文件?) 编辑:只是为了更多信息:我们需要保护我们的应用程序文件系统使用。 因此,应用程序存储到文件系统的任何文件,我们希望它被加密。 该文件很可能由同一应用程序或同一应用程序堆栈的另一个组件使用。

CryptographicException – 无法更新密码

我有一些我希望保护的数据,所以我使用ProtectedData将其加密到文件中。 当我试图读取和解密数据时,我得到了最奇怪的例外: CryptographicException – 无法更新密码。 为新密码提供的值不符合域的长度,复杂性或历史记录要求。 这是抛出的地方: byte[] decryptedData = ProtectedData.Unprotect(Encoding.UTF8.GetBytes(fileContent), Encoding.UTF8.GetBytes(entropy), DataProtectionScope.LocalMachine); 使用DataProtectionScope.CurrentUser时也会发生这种情况。 我没有在网上找到有关此例外的任何信息,所以我几乎一无所知。

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

我尝试过使用UTF8算法和SHA256进行密码加密,但建议不要使用它们。 相反,我被建议使用DPAPI。我浏览了一些谷歌的示例代码,这些代码并不清楚。 你能帮我解决DPAPI算法吗?

使用DPAPI时安全存储可选熵

所以我试图使用DPAPI存储对称密钥。 一切都很好,但是如何处理熵呢? 这里回答的问题确实无法提供足够的见解。 这似乎是一个滑坡 – 我可以使用机器商店来存储熵但是那么是什么阻止某人也可以使用它? 注意:我使用用户范围存储当前密钥。 所以我的问题是 – 使用DPAPI存储熵的最佳方法是什么?

有关Data Protection API(DPAPI)的信息

我目前正在编写ac #mvc web应用程序,其中从用户获取密码并存储在数据库中 – sql server。 我需要一种散列密码的方法。 建议使用Data Protection API(DPAPI)。 我不喜欢它和互联网上的研究,很少有信息存在。 任何人都可以指出方向获取更多信息吗? 或者给我一个如何设置和使用它的概述等。