在我的 WinRT 应用程序中,我必须存储私钥以供以后解密。 在另一个应用程序中,我使用了 RSACryptoServiceProvider:
CspParameters cspParams = new CspParameters();
cspParams.KeyContainerName = ContainerName;
RSACryptoServiceProvider RSAalg = new RSACryptoServiceProvider(cspParams);
RSAalg.PersistKeyInCsp = true;
但在 WinRT 中是另一个命名空间中的另一个类。我正在寻找替代方法将私钥存储在容器(或其他安全位置)中。
我花了很多时间寻找最安全的解决方案,但我发现只有几个网站可能有用,例如:
建议在哪里保存解密的私钥(可能在文件中)。安全吗?
我也在 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/