2

このコードを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);

編集:それが私が参照すべきクラスであるかどうかはわかりません。

ありがとう

4

2 に答える 2

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をライブラリとして使用しました。この投稿はもともと私の問題を解決しました: 既存のキーでOpenSSL.NETを使用してRSAを復号化する

于 2011-08-29T20:20:18.660 に答える
0

RSAParameters(http://msdn.microsoft.com/en-us/library/system.security.cryptography.rsaparameters.aspx)は、ImportParametersメソッドを使用してRSACryptoServiceProviderクラスにフィードできます。RSAParameters構造内でキーをエンコードできます。

于 2011-05-06T22:36:50.430 に答える