c# - WinRT 在哪里存储 RSA 私钥

标签 c# encryption windows-runtime key private

在我的 WinRT 应用程序中,我必须存储私钥以供以后解密。 在另一个应用程序中,我使用了 RSACryptoServiceProvider:

 CspParameters cspParams = new CspParameters();

 cspParams.KeyContainerName = ContainerName;

 RSACryptoServiceProvider RSAalg = new RSACryptoServiceProvider(cspParams);

 RSAalg.PersistKeyInCsp = true;

但在 WinRT 中是另一个命名空间中的另一个类。我正在寻找替代方法将私钥存储在容器(或其他安全位置)中。

我花了很多时间寻找最安全的解决方案,但我发现只有几个网站可能有用,例如:

http://www.rahulsingla.com/blog/2011/04/serializing-deserializing-rsa-public-private-keys-generated-using-bouncy-castle-library

建议在哪里保存解密的私钥(可能在文件中)。安全吗?

我也在 Windows.Security.Cryptography.Certificates 中找到了 CertificateEnrollmentManager 类。但是我不明白如何使用此类将证书保存在KSP中并通过证书加密/解密数据。

最佳答案

Windows 将私钥存储在\Documents and Settings\\Application Data\Microsoft\Crypto\RSA 中,并要求使用密码保护它们。

底线是您希望您的私钥是安全的。在某些情况下,这意味着它们可以存储在您的硬盘上。在其他情况下,这意味着它们应该存放在两人访问控制的保险箱中,前面有武装 guard 。这仅取决于任何可能的曝光情况。

关于c# - WinRT 在哪里存储 RSA 私钥,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23042305/

相关文章:

c# - ProtectedData 可以在多台计算机上工作吗?

c# - 连接两个 Windows 运行时缓冲区的最佳方法是什么?

c# - EF6 : Renaming namespace using Code First Migrations

c# - 如何从嵌套方法 'continue' ForEach 循环?

c# - RegisterMany 不注册所有接口(interface)

c++ - VS2012 错误 C1107

.net - 如何调试 Windows Store 应用程序中的内存泄漏?

C# 没有在代码中或使用调试器捕获异常

c - 如何导出使用 CryptoAPI 派生的 AES key

c# - aspnet_Membership 表中有解密密码的方法吗?