在机器" 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上的密钥库中吗?
答案 0 :(得分:0)
看看this gist。它包含一些用于导出和导入RSA密钥的powershell函数。我们遇到了同样的问题,并使用这些脚本来转移密钥
编辑: 为了澄清,我没有写要点,我只是找到要点并用它来解决这个确切的问题