RSA шифрование в C# и дешифрование в nodejs - PullRequest
3 голосов
/ 20 марта 2020

У меня есть клиентская сторона, которая работает на C# и шифрует данные с помощью открытого ключа c RSA и отправляет на Nodejs для расшифровки. Все работает почти идеально, за исключением того, что данные, которые я расшифровал, идут со странным дополнением Я попробовал все способы, которые я знал прежде, чем я спрашиваю здесь, поэтому любая помощь будет оценена.

C#

UnicodeEncoding ByteConverter = new UnicodeEncoding();
byte[] dataToEncrypt = ByteConverter.GetBytes("{\"hello\":\"world\"}");
using (var stream = File.OpenRead("C:\\rsaKeys\\my-public-key.pem"))
using (var reader = new PemReader(stream))
{
   var rsaParameters = reader.ReadRsaKey();
   byte[] encryptedData;
   using (RSACryptoServiceProvider RSA = new RSACryptoServiceProvider())
   {
       RSA.ImportParameters(rsaParameters);
       encryptedData = RSA.Encrypt(dataToEncrypt, false);
   }
   return encryptedData;
}

NodeJs

const buffer = Buffer.from(val, 'base64');
const decrypted = crypto.privateDecrypt(
  {
    key: this.rsaPrivateKey,
    padding: crypto.constants.RSA_PKCS1_PADDING
  },buffer);
let rtn = decrypted.toString('utf8');

расшифрованные данные станут вместо { " h e l l o " : " w o r l d " }. Есть идеи, почему это произошло?

...