"The parameter is incorrect." RSACryptoServiceProvider WCF Client/Server C#
"The parameter is incorrect." RSACryptoServiceProvider WCF Client/Server C#
我有两个本地控制台应用程序,一个是生成 public 和私钥的服务器,另一个是客户端,它通过使用服务从服务器接收 public 密钥,并且向服务器发送加密消息。
然后该服务尝试解密该消息并将其保存在服务器中,但是抛出 CryptographicException 指出调用 RSA.Decrypt 时参数不正确。
代码示例:
byte[] decryptedByteMessage;
using (RSACryptoServiceProvider RSA = new RSACryptoServiceProvider())
{
decryptedByteMessage = RSADecrypt(encryptedByteMessage, privKey);
}
解密
static public byte[] RSADecrypt(byte[] DataToDecrypt, RSAParameters RSAKeyInfo)
{
try
{
byte[] decryptedData;
using (RSACryptoServiceProvider RSA = new RSACryptoServiceProvider())
{
RSA.ImportParameters(RSAKeyInfo);
decryptedData = RSA.Decrypt(DataToDecrypt, false); // exception here
}
return decryptedData;
}
catch (CryptographicException e)
{
Console.Write(e.Message);
return null;
}
}
我可以看到键是正确的,并且相同的代码在单个控制台应用程序中工作正常。我试图寻找一个解决方案,(也许 CspParameters 是必需的?)但它只是让它在此刻变得更加混乱。
如果你能给我一些解决这个问题的建议,我将不胜感激。
问题是我 运行 应用程序在 Visual Studio 中处于调试模式。
我尝试使用实际的 Release 可执行文件,一切都按预期运行。
我有两个本地控制台应用程序,一个是生成 public 和私钥的服务器,另一个是客户端,它通过使用服务从服务器接收 public 密钥,并且向服务器发送加密消息。 然后该服务尝试解密该消息并将其保存在服务器中,但是抛出 CryptographicException 指出调用 RSA.Decrypt 时参数不正确。
代码示例:
byte[] decryptedByteMessage;
using (RSACryptoServiceProvider RSA = new RSACryptoServiceProvider())
{
decryptedByteMessage = RSADecrypt(encryptedByteMessage, privKey);
}
解密
static public byte[] RSADecrypt(byte[] DataToDecrypt, RSAParameters RSAKeyInfo)
{
try
{
byte[] decryptedData;
using (RSACryptoServiceProvider RSA = new RSACryptoServiceProvider())
{
RSA.ImportParameters(RSAKeyInfo);
decryptedData = RSA.Decrypt(DataToDecrypt, false); // exception here
}
return decryptedData;
}
catch (CryptographicException e)
{
Console.Write(e.Message);
return null;
}
}
我可以看到键是正确的,并且相同的代码在单个控制台应用程序中工作正常。我试图寻找一个解决方案,(也许 CspParameters 是必需的?)但它只是让它在此刻变得更加混乱。
如果你能给我一些解决这个问题的建议,我将不胜感激。
问题是我 运行 应用程序在 Visual Studio 中处于调试模式。
我尝试使用实际的 Release 可执行文件,一切都按预期运行。