hybrid-rsa-stream v1.0.3
hybrid-rsa-stream
encrypt symmetric keys using asymmetric rsa keys
This hybrid approach
is necessary because encrypting more than n/8-11 bytes with an asymmetric
key is considered insecure, so the asymmetric key encrypts a generated key for a
symmetric block cipher.
data
The data over the wire is:
[asymmetric ciphertext length (UInt16BE, 2 bytes)]
[asymmetric ciphertext]
[symmetric ciphertext]The cleartext for the asymmetric payload is:
[symmetric key name length (UInt8, 1 byte)]
[symmetric key name string]
[symmetric key (remaining bytes)]example
encrypt with a public key
To send someone a message only knowing their public key:
var hybrid = require('hybrid-rsa-stream');
var fs = require('fs');
var pubkey = fs.readFileSync(__dirname + '/files/public');
var enc = hybrid.encrypt(pubkey, { encoding: 'base64' });
process.stdin.pipe(enc).pipe(process.stdout);decrypt with a private key
Now the recepient of the message can decrypt the message with their private key:
var hybrid = require('hybrid-rsa-stream');
var fs = require('fs');
var privkey = fs.readFileSync(__dirname + '/files/private');
var denc = hybrid.dencrypt(privkey, { encoding: 'base64' });
process.stdin.pipe(denc).pipe(process.stdout);methods
var hybrid = require('hybrid-rsa-stream')var enc = hybrid.encrypt(publicKey, opts)
Return a through stream enc that takes cleartext as input and produces
ciphertext as output encrypted with a public key buffer or string publicKey in
PEM or ssh-style format.
Optionally specify:
opts.encoding- encoding to use for output. Valid encodings:'base64','hex','binary'. Default encoding:'binary'.opts.algorithm- symmetric cipher to use, default:'AES-256-CBC'
var dec = hybrid.decrypt(privateKey, opts)
Return a through stream dec that takes ciphertext as input and produces
decrypted cleartext as output from the private key string or buffer privateKey
in PEM or ssh-style format.
Optionally specify:
opts.encoding- encoding to use for input. Valid encodings:'base64','hex','binary'. Default encoding:'binary'.
install
With npm do:
npm install hybrid-rsa-streamlicense
MIT
