Skip to content

Instantly share code, notes, and snippets.

@siteslave
Forked from bbstilson/encrypt.js
Created September 30, 2020 07:53
Show Gist options
  • Save siteslave/56344fe07ae4a7374aca07fbd0a8a323 to your computer and use it in GitHub Desktop.
Save siteslave/56344fe07ae4a7374aca07fbd0a8a323 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