【问题标题】:Using a previously generated RSA public/private key with the .net framework在 .net 框架中使用先前生成的 RSA 公钥/私钥
【发布时间】:2009-10-07 00:41:50
【问题描述】:

我有一个预先存在的用于 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(...)

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

有人知道如何完成我想做的事情吗? 任何帮助将不胜感激。

干杯 娜仁

【问题讨论】:

  • 使用什么协议来保存密钥?它在证书中吗?
  • 我只有一个字符串作为私钥,一个字符串作为公钥和一个指数。

标签: c# .net security encryption rsa


【解决方案1】:

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

RSAParameters parameters = new RSAParameters()
parameters.Modulus = // ...
parameters.Exponent = // ...
RSA rsa = new RSACryptoServiceProvider();
rsa.ImportParameters(parameters);
rsa.Encrypt(/*...*/);

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

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

【讨论】:

    【解决方案2】:

    我意识到这是一个非常古老的问题,但也许有人还在看这个......

    现在您可以以 XML 格式检索/存储您的密钥(您也可以在过去使用这种格式)。

    导入示例:

    this.RSAKey = RSA.FromXmlString(xmlString: myRSAXMLKey);
    

    示例导出:

    this.RSAKey_XMLString = RSA.ToXmlString(includePrivateParameters: false);
    

    【讨论】:

      猜你喜欢
      • 2011-07-11
      • 2018-10-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-15
      • 2010-11-16
      • 2012-04-08
      • 2017-11-02
      相关资源
      最近更新 更多