2011-05-06 119 views
2

我試圖端口這塊從C++代碼到C#:移植從C++到C#代碼 - 與RSA PKCS#加密1私鑰

... 
strPrivateKey = "someBase64EncodedPrivateKey"; 
long sizeKey = DecodeBase64(strPrivateKey, pKey); 
const unsigned char* _pKey = pKey; 
d2i_RSAPrivateKey(&pRSA, &_pKey, sizeKey); 
... 

RSA_private_encrypt(sizeOfMessage, pMessage, pSignature, pRSA, RSA_PKCS1_PADDING); 

... 

到目前爲止,這裏是我的代碼:

var strPrivateKey = "someBase64EncodedPrivateKey"; 
var bytes = Convert.FromBase64String(strPrivateKey); 

var rsa = new RSACryptoServiceProvider(); 

// How to set the private key to the rsa object?! 

byte[] someDataToEncrypt = /* Set the data to encrypt */; 
var encryptedData = rsa.Encrypt(someDataToEncrypt, false); 

編輯: 我一直都不確定是否應該參考這門課。

由於

回答

0

通過增加固定它:

At the begin of the private key: "-----BEGIN RSA PRIVATE KEY-----\r\n" 
After each line of my private key : "\r\n" 
At the end of my private key: "-----END RSA PRIVATE KEY-----" 

最後,我用OpenSsl.NET作爲庫。這篇文章原本解決了我的問題: Decrypting RSA using OpenSSL.NET with Existing Key

0

RSAParameters(http://msdn.microsoft.com/en-us/library/system.security.cryptography.rsaparameters.aspx)可以被饋送到使用ImportParameters方法的RSACryptoServiceProvider類。您可以在RSAParameters結構中對密鑰進行編碼。