[英]C# RSA decrypt parameter is incorrect
我正在尝试解密来自 web sockets 的通信,并使用 SSL 证书进行保护。 证书已安装在计算机上,并且存在私钥。 我有这个解密 function
public static string DecryptTry(X509Certificate2 x509, string stringTodecrypt)
{
try
{
if (x509 == null || string.IsNullOrEmpty(stringTodecrypt))
throw new Exception("A x509 certificate and string for decryption must be provided");
if (!x509.HasPrivateKey)
throw new Exception("x509 certificate does not contain a private key for decryption");
if(x509 == null)
{
Console.WriteLine("certificate is null");
return "";
}
Console.WriteLine("decoding text with private key " + x509.HasPrivateKey);//true
using (RSA csp = (RSA)x509.PrivateKey)
{
byte[] bytestoDecrypt = Encoding.UTF8.GetBytes(stringTodecrypt).Take(256).ToArray();
Console.WriteLine("key size: " + x509.PrivateKey.KeySize + " received data length: " + stringTodecrypt.Length + " bytes length: " + bytestoDecrypt.Length);
Console.WriteLine(Encoding.UTF8.GetString(bytestoDecrypt));
byte[] bytesDecrypted = csp.Decrypt(bytestoDecrypt, RSAEncryptionPadding.OaepSHA256); //ERROR HERE
return Encoding.UTF8.GetString(bytesDecrypted);
}
}
catch(Exception e)
{
Console.WriteLine("Error while decrypting text: " + e.Message + e.HResult + e.StackTrace);
return "";
}
}
但是csp.Decrypt
抛出错误
参数不正确
我已经尝试了所有填充参数 - 似乎没有一个有所作为。 有谁知道问题可能出在哪里? 我错过了什么吗? **
** 添加更多背景信息:WebSocket 客户端正在侦听的网站是安全的 HTTPS,SSL 证书由 CA 签署,具有我对其所有信息的完全访问权限。 最初的问题是加密的 WebSocket 通信的握手。 我在想我可以用私钥解密它,这就是问题发生的地方。 传入请求(或握手)的长度在 490 到 520 个字节之间,这就是.Take(256)
的原因。 我正在考虑将文本分成多个,分别解码然后放在一起。 然而,这把我带到了这里。 最后一个想法:这是一个 .NET 控制台应用程序。 可以通过将其转换为 IIS 接受的格式来解决问题吗? 机器上的 IIS 安装了证书……它可能会有所作为吗? 提前致谢!
我不确定你想要实现什么:
我认为你应该提供更多信息它是如何工作的。 您能否显示 function function 的示例输入,表示:
DecryptTry(X509Certificate2 x509, string stringTodecrypt) {... }
'strendTodecypt' 看起来如何? 你在那儿放什么? 您如何通过 TLS 连接到该服务器以获取要解密的数据?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.