将RSA密钥从一台计算机传输到另一台计算机

时间:2018-03-29 16:42:17

标签: c# .net rsa

在机器" A"我创建了一个RSA公钥/私钥,如下所示:

CspParameters cp = new CspParameters();
cp.KeyContainerName = containerName;

// Create a new instance of RSACryptoServiceProvider that accesses  
// the key container MyKeyContainerName.  
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(cp);
publicKeyXml = rsa.ToXmlString(false);

每次都给我同样的公钥和私钥。然后我拿出公钥并将其存储在计算机B上。然后,我可以解密来自计算机A的消息:

RSACryptoServiceProvider RSA = new RSACryptoServiceProvider();

// set the public key of the crypto service provider
RSA.FromXmlString(publicKeyXml);

// create a deformatter
RSAPKCS1SignatureDeformatter RSADeformatter = new RSAPKCS1SignatureDeformatter(RSA);

// set the hash algorithm. The sender must use the same algorithm
RSADeformatter.SetHashAlgorithm(hashAlgorithm);

// verify the signature
verified = RSADeformatter.VerifySignature(hashValue, signaturebytes);

我的问题是:如果我想从第三台计算机(称之为C)向B发送消息怎么办?如何将密钥库从A传输到C以保证生成相同的密钥对?我只有一个地方可以在计算机B上存储公钥。它需要解密来自A和C的消息。我可以从windows文件夹中复制密钥库吗?或者这样做:使用ToXmlString导出B上的键(true)并使用RSA.FromXmlString()将其导入到c上。如果我这样做,它会将它存储在C上的密钥库中吗?

1 个答案:

答案 0 :(得分:0)

看看this gist。它包含一些用于导出和导入RSA密钥的powershell函数。我们遇到了同样的问题,并使用这些脚本来转移密钥

编辑: 为了澄清,我没有写要点,我只是找到要点并用它来解决这个确切的问题