在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个字节。这是故意的吗?