繁体   English   中英

C# RSA解密参数不正确

[英]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抛出错误

参数不正确

我已经尝试了所有填充参数 - 似乎没有一个有所作为。 有谁知道问题可能出在哪里? 我错过了什么吗? **

编辑 25.12.2020

** 添加更多背景信息:WebSocket 客户端正在侦听的网站是安全的 HTTPS,SSL 证书由 CA 签署,具有我对其所有信息的完全访问权限。 最初的问题是加密的 WebSocket 通信的握手。 我在想我可以用私钥解密它,这就是问题发生的地方。 传入请求(或握手)的长度在 490 到 520 个字节之间,这就是.Take(256)的原因。 我正在考虑将文本分成多个,分别解码然后放在一起。 然而,这把我带到了这里。 最后一个想法:这是一个 .NET 控制台应用程序。 可以通过将其转换为 IIS 接受的格式来解决问题吗? 机器上的 IIS 安装了证书……它可能会有所作为吗? 提前致谢!

我不确定你想要实现什么:

  • 使用 RSA 解密某些东西
  • 解密HTTP的TLS层
  • 解密 Websocket 协议中的某些内容

我认为你应该提供更多信息它是如何工作的。 您能否显示 function function 的示例输入,表示:

DecryptTry(X509Certificate2 x509, string stringTodecrypt) {... }

'strendTodecypt' 看起来如何? 你在那儿放什么? 您如何通过 TLS 连接到该服务器以获取要解密的数据?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM