Экспорт открытого ключа RSA в формат DER и расшифровка данных - PullRequest
0 голосов
/ 23 сентября 2018

Мне нужно получить байты моего открытого ключа RSA в формате DER и отправить этот ключ в API.Затем этот API отправит мне что-то зашифрованное с использованием этого открытого ключа, и мне нужно его расшифровать.

Первая проблема, похоже, что C # не имеет возможности экспортировать ключи RSA в формате DER.Так что, похоже, мне приходится полагаться на сторонние пакеты, такие как BouncyCastle.Я также нашел способ создания и экспорта моего открытого ключа в формате DER с помощью этого пакета:

var generator = new RsaKeyPairGenerator();
generator.Init(new KeyGenerationParameters(new SecureRandom(), 2048));
var keyPair = generator.GenerateKeyPair();
var publicKeyParam = (RsaKeyParameters)keyPair.Public;
var publicKey = SubjectPublicKeyInfoFactory.CreateSubjectPublicKeyInfo(publicKeyParam).GetDerEncoded();

Так что теперь мне нужно было только кодировать эти байты Base64 и отправить его в API, и API рад,Но теперь я застрял, пытаясь понять, как я могу расшифровать полученные данные.Прежде всего, я декодировал строку base64, и теперь я застрял в байтах данных.Я могу получить закрытый ключ от "вещи" BouncyCastle, но я не могу преобразовать его в RsaCryptoServiceProvider правильно, и документация BouncyCastle довольно странная.Если у кого-то есть идея или другой подход, я был бы более чем счастлив.

1 Ответ

0 голосов
/ 23 сентября 2018

Основываясь на комментариях, я пришел к этому решению:

var rsa = new RSACryptoServiceProvider(2048); // my rsa to decrypt and encrypt data

var publicKeyParam = DotNetUtilities.GetRsaPublicKey(rsa.ExportParameters(false));
var publicKey = SubjectPublicKeyInfoFactory.CreateSubjectPublicKeyInfo(publicKeyParam).GetDerEncoded(); // my exported public key in DER format

Большое спасибо Джеймс К Полк !

...