Следующий код работает, но я не профессиональный криптограф, поэтому некоторые комментарии здесь будут полезны.
Я использовал модуль RSA ursa вместо шифрования.
Я обеспокоен тем, что если подобные данные были зашифрованы напрямую, без пропуска AES или подобного, то это может быть тривиально, если это сломать. Комментарии пожалуйста ...
var ursa = require('ursa');
var fs = require('fs');
// create a pair of keys (a private key contains both keys...)
var keys = ursa.generatePrivateKey();
console.log('keys:', keys);
// reconstitute the private key from a base64 encoding
var privPem = keys.toPrivatePem('base64');
console.log('privPem:', privPem);
var priv = ursa.createPrivateKey(privPem, '', 'base64');
// make a public key, to be used for encryption
var pubPem = keys.toPublicPem('base64');
console.log('pubPem:', pubPem);
var pub = ursa.createPublicKey(pubPem, 'base64');
// encrypt, with the public key, then decrypt with the private
var data = new Buffer('hello world');
console.log('data:', data);
var enc = pub.encrypt(data);
console.log('enc:', enc);
var unenc = priv.decrypt(enc);
console.log('unenc:', unenc);
После некоторого дальнейшего исследования http://en.wikipedia.org/w/index.php?title=RSA_%28cryptosystem%29§ion=12#Attacks_against_plain_RSA похоже, что Урса уже делает отступы.