あなたはRSACryptoServiceProvider.Encrypt方法を使用することによってこれを行うことができます。また、RSACryptoServiceProvider.ImportParametersメソッドを使用し、RSAParameters構造体(これは指数、モジュラスなどを設定します)を渡す必要があります。
RSAParametersのリンクにあるドキュメントを見てください。これは、どの構造パラメータを渡す必要があるパラメータが非常によく文書化されています。
編集:ここストレートMSDN-siteからの例です:
class RSACSPSample
{
static void Main()
{
try
{ //initialze the byte arrays to the public key information.
byte[] PublicKey = {214,46,220,83,160,73,40,39,201,155,19,202,3,11,191,178,56,
74,90,36,248,103,18,144,170,163,145,87,54,61,34,220,222,
207,137,149,173,14,92,120,206,222,158,28,40,24,30,16,175,
108,128,35,230,118,40,121,113,125,216,130,11,24,90,48,194,
240,105,44,76,34,57,249,228,125,80,38,9,136,29,117,207,139,
168,181,85,137,126,10,126,242,120,247,121,8,100,12,201,171,
38,226,193,180,190,117,177,87,143,242,213,11,44,180,113,93,
106,99,179,68,175,211,164,116,64,148,226,254,172,147};
byte[] Exponent = {1,0,1};
//Values to store encrypted symmetric keys.
byte[] EncryptedSymmetricKey;
byte[] EncryptedSymmetricIV;
//Create a new instance of RSACryptoServiceProvider.
RSACryptoServiceProvider RSA = new RSACryptoServiceProvider();
//Create a new instance of RSAParameters.
RSAParameters RSAKeyInfo = new RSAParameters();
//Set RSAKeyInfo to the public key values.
RSAKeyInfo.Modulus = PublicKey;
RSAKeyInfo.Exponent = Exponent;
//Import key parameters into RSA.
RSA.ImportParameters(RSAKeyInfo);
//Create a new instance of the RijndaelManaged class.
RijndaelManaged RM = new RijndaelManaged();
//Encrypt the symmetric key and IV.
EncryptedSymmetricKey = RSA.Encrypt(RM.Key, false);
EncryptedSymmetricIV = RSA.Encrypt(RM.IV, false);
Console.WriteLine("RijndaelManaged Key and IV have been encrypted with RSACryptoServiceProvider.");
}
//Catch and display a CryptographicException
//to the console.
catch(CryptographicException e)
{
Console.WriteLine(e.Message);
}
}
}
のみキー/ IVは暗号化されることに注意してください - ない任意のバイト - これらのバイトの長さはあまりにも重要です!
許容される長さはMSDNに記載されており、OSによって異なります。
やあ、カーステンのケーニッヒは、返事をありがとう..私はそれを試してみましたが、それは、暗号化の例外を除いて、「BAD DATA」エラーを返しますか?私は以下のコードを 'RSAParameters rsaparam = new RSAParameters(); rsaparam.Modulus = modbytes; rsaparam.Exponent = expbytes; RSACryptoServiceProvider RSA =新しいRSACryptoServiceProvider(); RSA.ImportParameters(rsaparam); byte [] encryptedData = RSA.Encrypt(dataToEncrypt、false); ' –
私もRSA.FromXmlString(mykey)を試しました。 (mykeyはmodulusとexpを持つxml文字列を含んでいますが)暗号例外を含む "不良データ"エラーが発生します。またはいくつかのマイクロソフトのバグは、誰もがこれを簡単に行うためにいくつかの他のまともなライブラリを提案することができますか? –
内部の例外には何かがあったのでしょうか?暗号化するデータの長さに一定の長さがあることがわかっていますか? – Carsten