В моем приложении 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 байта, когдаэто прибывает на сервер. Это предназначено?