Используйте ключ OpenSSL RSA с .Net

Я использую openssl 0.9.6g, и я создал пару открытых / закрытых ключей с помощью RSA_generate_key (). Когда я сохраняю ключ сPEM_write_bio_RSAPublicKey, это дает мне ключи, такие как:

-----BEGIN RSA PUBLIC KEY-----
...
-----END RSA PUBLIC KEY-----

У меня есть другой модуль в .NET, который выдает исключение при передаче в этом ключе из-за его формата. Он принимает формат как:

-----BEGIN PUBLIC KEY-----
...
-----END PUBLIC KEY-----

Как конвертировать мои ключи в этот формат. Я использую C ++.

В .NET я использую openssl.net, код выглядит следующим образом:

string publicKey = @"-----BEGIN RSA PUBLIC KEY-----
MIGJAoGBAKGtqUVBBqcGCRYa7Sb6JVQirOX3hggWP2k7CzEtbF/soOONK510Kefm
omXBrGn2t79ES+hAcCvGSiiVZGuEb3UPiznzbiY150SME5nRC+zU0vvdX64ni0Mu
DeUlGcxM1eWSpozO71at6mxLloEMUg0oSWHfAlS5a4LVaURrJqXfAgMBAAE=
-----END RSA PUBLIC KEY-----";

Encoding enc = Encoding.ASCII;
string text = "hello world";
byte[] msg = enc.GetBytes(text);
CryptoKey key = CryptoKey.FromPublicKey(publicKey, "");
RSA rsa = key.GetRSA();
byte[] res = rsa.PublicEncrypt(msg, RSA.Padding.PKCS1);

Исключение приходит в строке:

CryptoKey key = CryptoKey.FromPublicKey(publicKey, "");

Если я использую ключ:

-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCbhcU+fhYmYLESZQAj1hKBXsNY
si0kYHNkxpP7ftxZiTFowWUVXHzQgkcYiCNnp3pt1eG6Vt0WDzyFYXqUUqugvX41
gkaIrKQw/sRiWEx49krcz7Vxr3dufL6Mg3eK7NyWDGsqwFrx/qVNqdhsHg12PGNx
IMY4UBtxin2A8pd4OwIDAQAB
-----END PUBLIC KEY-----

Работает нормально.

Я искал эту проблему. Я думаю, что я ищу "как преобразовать открытый ключ RSA из формата PCSC # 1 в x509.

Ответы на вопрос(1)

Ваш ответ на вопрос