У меня есть клиентская сторона, которая работает на 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 " }
. Есть идеи, почему это произошло?