Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# RSA-数据长度不能超过模数错误_C#_Node.js_Encryption_Rsa - Fatal编程技术网

C# RSA-数据长度不能超过模数错误

C# RSA-数据长度不能超过模数错误,c#,node.js,encryption,rsa,C#,Node.js,Encryption,Rsa,在我的C#应用程序中,我用公钥加密数据。然后我会将加密数据发送到nodejs服务器。在服务器上,我试图用私钥解密数据。在服务器端,我得到一个加密错误,即数据长度不能超过模数 我加密的数据只有32字节长,密钥是4096位生成的RSA密钥 这就是用公钥加密数据的代码: 使用(var RSA=new RSACryptoServiceProvider()) { var rsaparms=RSA.ExportParameters(false); rsparams.module=Convert.FromBa

在我的C#应用程序中,我用公钥加密数据。然后我会将加密数据发送到nodejs服务器。在服务器上,我试图用私钥解密数据。在服务器端,我得到一个加密错误,即数据长度不能超过模数

我加密的数据只有32字节长,密钥是4096位生成的RSA密钥

这就是用公钥加密数据的代码:

使用(var RSA=new RSACryptoServiceProvider())
{
var rsaparms=RSA.ExportParameters(false);
rsparams.module=Convert.FromBase64String(PublicKey.Replace(----开始公钥----),Replace(----结束公钥----);
RSA.输入参数(rsaparms);
EncryptedMessage=RSA.Encrypt(DataToEncrypt,RSAEncryptionPadding.Pkcs1);
}
在服务器端,我使用加密模块用私钥解密消息:

var-pathToPrivateKey=path.resolve('./private.pem');
var privateKey=fs.readFileSync(pathToPrivateKey,“utf8”);
var decryptedMessage=crypto.privateDecrypt({
“密钥”:privateKey,
“密码短语”:“密码短语”,
“填充”:crypto.constants.RSA\u PKCS1\u填充
},数据加密);
我注意到,加密前的数据字节数组长度为32字节,加密后的数据字节数组长度为294字节


因此,加密消息到达服务器时的长度为294字节。是否打算这样做?

是否使用x64 VS设置?RSA既有旧的32位模式,也有新的64位模式。我在使用64位编译器选项时看到了一些问题,它也改变了RSA模式。我怀疑您的密钥只有32位,而使用64位编译器选项是问题的原因。@jdweng您的意思是,如果我用64位或32位编译C#应用程序?项目有不同模式的设置,有x86选项和x64选项。上周,当我进行研究时,我发现了以下WIKI:较旧的RSA使用256位,较新的使用512位。在NET4.8中,似乎有一个新类名为SH1。请参阅:我使用的是x64模式。您的公钥导入是伪造的(您将PKCS#1公钥作为模导入,但它是一个包含模的复杂结构。我现在无法轻松搜索重复项,但这是一个询问和回答的问题。RSA的加密输出始终等于密钥大小(以字节为单位),无论使用什么选项。但由于您和另一方在模数大小上存在分歧,他们认为您的数据太长。