У меня есть код в узле для передачи на python, но у меня много проблем при попытке сделать это. Прежде всего в python говорится, что размер текста слишком длинный. Код ниже в узле работает.
const NodeRSA = require('node-rsa');
const publicKey = 'XPTO';
const xApiKey = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
const key = new NodeRSA({ b: 512 });
function rsaEncrypt(buffer) {
key.importKey(publicKey, 'public');
return key.encrypt(buffer, 'base64');
}
console.log(rsaEncrypt(xApiKey + '|' + new Date().getTime()));
Это мой python код, где я пытался сделать то же самое:
keyPub = RSA.importKey(newPublicKey)
cipher = Cipher_PKCS1_v1_5.new(keyPub)
cipher_text = cipher.encrypt(msg.encode())
emsg = b64encode(cipher_text)
print(emsg)
Сообщение об ошибке:
ValueError: Plaintext is too long.
Я понял, что сообщение не может быть выше ключа publi c, но почему оно работает в узле? Может быть, некоторые хеширования по умолчанию отличаются.