如何在机器中创建RSA密钥以便在RSACryptoServiceProvider中使用?

时间:2010-05-07 14:38:38

标签: c# cryptography rsa

我有以下情况:

不同机器中的多个应用程序将使用RSA加密技术共享存储在数据库中的信息。

今天我这样做的方式不是更安全的方式。这些机器共享一个包含XML的RSA密钥的DLL。

如何使用此XML中的信息在不同的计算机中生成计算机密钥,之后,我如何在RSACryptoServiceProvider中使用它们?

2 个答案:

答案 0 :(得分:2)

我过去做过的事情:(这只是一个大纲;如果你需要实际代码,我可以提供它,但听起来你的问题只是寻找想法。)

必须在每台机器上执行以下操作。 (您可以创建一个简单的控制台应用程序来执行此操作,或者创建PowerShell脚本。)

  • 使用ProtectedData.Protect加密密钥
  • 将加密密钥存储在注册表中。您可以在注册表项上设置ACL权限以获得额外的安全性。

在您的应用中,使用ProtectedData.Unprotect获取密钥,然后将其传递给RSACryptoServiceProvider进行加密和解密。

答案 1 :(得分:1)

RSACryptoServiceProvider()的构造函数可用于创建新密钥对。如果要创建机器密钥或定义已创建密钥对的其他一些参数,则应使用RSACryptoServiceProvider(CspParameters parameters)构造函数。因此,请创建一个新的CspParameters实例,例如cspParams,并将cspParams.Flags填入CspProviderFlags.UseMachineKeyStore。然后,您将能够尊重RSACryptoServiceProvider(CspParameters parameters)构造函数创建机器密钥。