猿问

将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公钥从pkcs#1转换为x509格式。


明月笑刀无情
浏览 443回答 1
1回答
随时随地看视频慕课网APP
我要回答