RSA-数据不能超过模数误差

时间:2019-09-30 14:34:36

标签: c# node.js encryption rsa

在C#应用程序中,我正在使用公用密钥加密数据。然后,我将加密的数据发送到nodejs服务器。在服务器上,我正在尝试使用私钥解密数据。在服务器端,我得到了加密错误,即数据不能长于模数。

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

多数民众赞成在代码中,该代码使用公钥加密数据:

using (var RSA = new RSACryptoServiceProvider())
{
    var RSAParams = RSA.ExportParameters(false);
    RSAParams.Modulus = Convert.FromBase64String(PublicKey.Replace("-----BEGIN PUBLIC KEY-----", "").Replace("-----END PUBLIC KEY-----", ""));
    RSA.ImportParameters(RSAParams);

    EncryptedMessage = RSA.Encrypt(DataToEncrypt, RSAEncryptionPadding.Pkcs1);
}

在服务器端,我使用加密模块使用私钥解密消息:

var pathToPrivateKey = path.resolve('./private.pem');
var privateKey = fs.readFileSync(pathToPrivateKey, "utf8");

var decryptedMessage = crypto.privateDecrypt({
    'key': privateKey,
    'passphrase': 'passphrase',
    'padding': crypto.constants.RSA_PKCS1_PADDING
}, dataToDecrypt);

我注意到,加密之前的数据字节数组长为32个字节,加密之后为294个字节长。

因此,加密的消息到达服务器时,其长度为294个字节。这是故意的吗?

0 个答案:

没有答案