"Плохая версия провайдера". при загрузке открытого ключа с помощью 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 .

Другие вопросы по тегам