"Плохая версия провайдера". при загрузке открытого ключа с помощью RSACryptoServiceProvider
Я создаю пару ключей RSA, используя AsymmetricKeyAlgorithmProvider
(Windows.Security.Cryptography.Core
) и экспортируем ключи, как показано ниже:
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, он выдает исключение, говорящее "Плохая версия провайдера".
1 ответ
У меня была такая же ошибка. По какой-то причине FxSSH не понравился открытый ключ RSA, который я сгенерировал. Мне пришлось использовать ключ RSA в ридми https://github.com/Aimeast/FxSsh .