Skip to content

Instantly share code, notes, and snippets.

@GeoffreyHervet
Created August 12, 2019 15:01
Show Gist options
  • Save GeoffreyHervet/9f0a687e8ad8ab2325e58a685b0e6c8e to your computer and use it in GitHub Desktop.
Save GeoffreyHervet/9f0a687e8ad8ab2325e58a685b0e6c8e to your computer and use it in GitHub Desktop.
const crypto = require('crypto');
const fs = require('fs');
const path = require('path');
const zlib = require('zlib');
const AppendInitVect = require('./appendInitVect');
const getCipherKey = require('./getCipherKey');
function encrypt({ file, password }) {
// Generate a secure, pseudo random initialization vector.
const initVect = crypto.randomBytes(16);
// Generate a cipher key from the password.
const CIPHER_KEY = getCipherKey(password);
const readStream = fs.createReadStream(file);
const gzip = zlib.createGzip();
const cipher = crypto.createCipheriv('aes256', CIPHER_KEY, initVect);
const appendInitVect = new AppendInitVect(initVect);
// Create a write stream with a different file extension.
const writeStream = fs.createWriteStream(path.join(file + ".enc"));
readStream
.pipe(gzip)
.pipe(cipher)
.pipe(appendInitVect)
.pipe(writeStream);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment