我正在使用AsymmetricKeyAlgorithmProvider
(Windows.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时,它会抛出异常,说"提供商的错误版本。"
答案 0 :(得分:1)
我有同样的错误。出于某种原因,FxSSH 不喜欢我生成的公共 RSA 密钥。我不得不使用 https://github.com/Aimeast/FxSsh 自述文件中的 RSA 密钥。