Перенос кода с c++ на c# - шифрование с помощью закрытого ключа RSA PKCS#1
Я пытаюсь перенести этот фрагмент кода с c++ на c#:
...
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);
Править:
Я никогда не уверен, что это тот класс, к которому я должен обратиться.
Спасибо
2 ответов:
RSAParameters (http://msdn.microsoft.com/en-us/library/system.security.cryptography.rsaparameters.aspx) может быть передан в класс RSACryptoServiceProvider с помощью методаImportParameters . Вы можете кодировать ключ в структуре RSAParameters.
Исправил это, добавив:
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 как библиотека. Этот пост изначально решил мою проблему: расшифровка RSA с использованием OpenSSL.NET с существующим ключом
Comments