WinRT存储RSA私钥

时间:2014-04-13 11:41:13

标签: 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中保存证书并通过证书加密/解密数据。

1 个答案:

答案 0 :(得分:1)

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

最重要的是,您希望私钥安全。在某些情况下,这意味着它们可以存储在您的硬盘上。在其他情况下,这意味着它们应存放在双人通道控制的保险柜中,前面有武装警卫。这取决于任何可能的曝光。