RSA - данные не могут быть длиннее, чем ошибка модуля - PullRequest
0 голосов
/ 30 сентября 2019

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

...