在 .net 框架中使用先前生成的 RSA 公钥/私钥

Nar*_*ren 7 .net c# security encryption rsa

我有一个预先存在的用于 RSA 加密的公钥/私钥对,我需要在 .net 中使用它。我可以在网上找到的所有示例都演示了如何生成新的私有/公共对,然后加密/解密。IE。像这样:

const int PROVIDER_RSA_FULL = 1;
const string CONTAINER_NAME = "SpiderContainer";
CspParameters cspParams;
cspParams = new CspParameters(PROVIDER_RSA_FULL);
cspParams.KeyContainerName = CONTAINER_NAME;
cspParams.Flags = CspProviderFlags.UseMachineKeyStore;
cspParams.ProviderName = "Microsoft Strong Cryptographic Provider";
rsa = new RSACryptoServiceProvider(cspParams);
.....
rsa.encrypt(...)
rsa.decrypt(...)
Run Code Online (Sandbox Code Playgroud)

可以看出,没有指定预先存在的公钥/私钥的途径。

有谁知道如何完成我想要做的事情?任何帮助将非常感激。

干杯纳伦

Ras*_*ber 5

要使用现有密钥,可以使用 -ImportParameters方法:

RSAParameters parameters = new RSAParameters()
parameters.Modulus = // ...
parameters.Exponent = // ...
RSA rsa = new RSACryptoServiceProvider();
rsa.ImportParameters(parameters);
rsa.Encrypt(/*...*/);
Run Code Online (Sandbox Code Playgroud)

您也可以添加私有参数,以便将其用于解密或签名。

为了告诉您如何从现有的密钥数据获取参数,我们需要确切地知道它们是如何编码的。尝试向我们展示字符串(如果是真实密钥,请将大部分私钥替换为 X)。