公钥加载时使用RSACryptoServiceProvider出现“提供程序的坏版本”错误。

7

我正在使用AsymmetricKeyAlgorithmProviderWindows.Security.Cryptography.Core)创建RSA密钥对,并按照下面的方式导出密钥:

  AsymmetricKeyAlgorithmProvider rsaGenKeys = AsymmetricKeyAlgorithmProvider.OpenAlgorithm(AsymmetricAlgorithmNames.RsaPkcs1);

  CryptographicKey keyPair = rsaGenKeys.CreateKeyPair(2048);
  byte[] privateKeyBlob = keyPair.Export(CryptographicPrivateKeyBlobType.Pkcs1RsaPrivateKey).ToArray();

  string privateKeyBlobStr = Convert.ToBase64String(privateKeyBlob);

  byte[] publicKeyBlob = keyPair.ExportPublicKey().ToArray();

  string pubilcKeyBlobStr = Convert.ToBase64String(publicKeyBlob);

现在,接收这些数据的是一个Silverlight应用程序,并且正在使用RSACryptoServiceProvider (System.Security.Cryptography)来加载这个公钥:

RSACryptoServiceProvider rsaPublic = new RSACryptoServiceProvider();
byte[] keyBlobBytes = Convert.FromBase64String(keyBlob);
rsaPublic.ImportCspBlob(keyBlobBytes);

keyBlob是一个包含公钥的字节数组。问题在于当调用ImportCspBlob时,会抛出异常,提示“提供程序版本错误”。


你找到解决方案了吗? - Sam
1个回答

1
我遇到了同样的错误。出于某种原因,FxSSH 不喜欢我生成的公共 RSA 密钥。我不得不使用 https://github.com/Aimeast/FxSsh 自述文件中的 RSA 密钥。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接