2011-05-06 4 views
2

privé, je suis en train de porter ce morceau de code C++ C#:Code portage de C++ C# - Encrypting avec RSA PKCS # 1 clé

... 
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); 

... 

Jusqu'à présent, voici mon code:

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); 

EDIT: Je ne sais pas si c'est la classe à laquelle je devrais me référer.

Merci

Répondre

0

fixe en ajoutant:

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-----" 

Et enfin, j'utilisé OpenSsl.NET comme bibliothèque. Ce poste a résolu à l'origine mon problème: Decrypting RSA using OpenSSL.NET with Existing Key

0

RSAParameters (http://msdn.microsoft.com/en-us/library/system.security.cryptography.rsaparameters.aspx) peuvent être introduits dans la classe RSACryptoServiceProvider en utilisant la méthode ImportParameters. Vous pouvez coder la clé dans la structure RSAParameters.