私はサーバ(python)とクライアント(c#)を持っていますが、私はそれらを一時的にassymetric rsa暗号を使用して通信する必要があります。 私はクライアントとしてサーバーに接続すると、私は彼に私の公開鍵を送り、彼は私に彼を送ります。私はサーバーでrsaライブラリを使用し、そこにサーバーの公開鍵パラメータ{n、e}を送信し、それらを送信し、それらの間にスペースを入れて受信します。私はそれらを区切ると、この機能を使用してのBigIntegerに弾性を変換:「パラメータが間違っています」:RSA C#ImportParameters "パラメータが正しくありません"例外
public static BigInteger GetBigInteger(string number)
{
BigInteger bigNum = new BigInteger();
for (int i = number.Length; i > 0; i--)
{
bigNum *= 10;
bigNum += (int) number[number.Length-i];
}
return bigNum;
}
public static void Connect(IPAddress ipAddress, int port)
{
try
{
string[] message;
byte[] data = new byte[1024];
srvr.Receive(data); //Recieve the server's public key.
int length = int.Parse(Encoding.ASCII.GetString(data.Take(4).ToArray()));
message = Encoding.ASCII.GetString(data.Skip(4).Take(length).ToArray()).Split(' ') ;
RSACryptoServiceProvider RSAserver = new RSACryptoServiceProvider(1024);
RSAParameters par = new RSAParameters();
par.Modulus = GetBigInteger(message[0]).ToByteArray(); // Saves the server's public key.
par.Exponent = new byte[] { 1, 0, 1 }; // Saves the server's public key.
RSAserver.ImportParameters(par);
addresseeKey = RSAserver.ToXmlString(false);
...
}
...
}
例外が言うImportParametersラインにスローされます。 どうしたの?
コードを最小限に抑える必要があります。あなたにはソケットは必要ありません。また、[最小限の完全かつ検証可能なサンプルを作成する方法](https://stackoverflow.com/help/mcve)も参照してください。 – jww
コードプロジェクトの[Cryptographic Interoperability:Keys](https://www.codeproject.com/Articles/25487/Cryptographic-Interoperability-Keys)も参照してください。 * "The parameter is incorrect" *の例とその修正を示します。 – jww