node-cipher
Securely encrypt sensitive files for use in public source control. Find on NPM.
Why would I want to encrypt my files?
Let's say you have a file in your project name config.json
which contains sensitive information like private keys and database passwords.
What happens if you want to publicly host a repository containing this file? Certainly you wouldn't want to make the contents of config.json
visible to the outside world, so instead you can use node-cipher to encrypt the file and add its encrypted counterpart to source control, which can later be decrypted using the encryption key when the repository is cloned.
Just don't forget to add the original config.json
file to .gitignore
!
Table of Contents
Install
$ npm install -g node-cipher
Command Line Interface
Looking for the Node JS API? Click here.
Usage
$ nodecipher [--list] <command> -i input -o output [-p password] [-a algorithm]
When in doubt, $ nodecipher --help
Commands
Command | Description |
---|
encrypt | Encrypts a file using the arguments provided. |
decrypt | Decrypts a file using the arguments provided. |
Flags
Flag | Alias | Description | Required | Default |
---|
input | i | The input filename relative to the current working directory. | ✓ | |
output | p | The output filename relative to the current working directory. | ✓ | |
password | p | The key that you will use to encrypt or decrypt your file. If this is not supplied directly, you will instead be prompted within your command line. If you are decrypting a file, the password must be the same as the one specified during encryption, or else the decryption will fail. | | |
algorithm | a | The cipher algorithm that you will use to encrypt or decrypt your file. If you are decrypting a file, the chosen algorithm must be the same as the one specified during encryption, or else the decryption will fail. | | cast5-cbc |
list | l | Lists all available cipher algorithms. | | |
version | v | Show the node-cipher version. | | |
help | h | Show the help menu. | | |
Example
Encrypts config.json
into config.encrypted.json
using the aes-128-cbc
cipher algorithm.
$ nodecipher encrypt -i "config.json" -o "config.encrypted.json" -a aes-128-cbc
Node JS API
Looking for the CLI? Click here.
Options
Name | Type | Description | Required | Default |
---|
input | string | The input filename relative to the current working directory. | ✓ | |
output | string | The output filename relative to the current working directory. | ✓ | |
password | string | The encryption password. Unlike the command line interface, this MUST be specified. | ✓ | |
algorithm | string | The algorithm to use. Use nodecipher -l to see a list of available cipher algorithms. | | "cast5-cbc" |
Methods
encrypt(options[, callback[, scope]])
Encrypt a file using the options provided.
Parameters
Parameter | Type | Description | Required |
---|
options | Object | The NodeCipher options Object. | ✓ |
callback | Function | The function to call when the encryption has completed. | |
scope | Object | The Function scope for the callback parameter, if provided. | |
Example
Encrypts config.json
into config.encrypted.json
using the password "b0sco"
.
let nodecipher = require('node-cipher');
nodecipher.encrypt({
input: 'config.json',
output: 'config.encrypted.json',
password: 'b0sco'
}, function (err) {
if (err) throw err;
console.log('config.json encrypted.');
});
decrypt(options[, callback[, scope]])
Decrypts a file using the options provided.
Parameters
Parameter | Type | Description | Required |
---|
options | Object | The NodeCipher options Object. | ✓ |
callback | Function | The function to call when the decryption has completed. | |
scope | Object | The Function scope for the callback parameter, if provided. | |
Example
Decrypts config.encrypted.json
back into config.json
using the password "b0sco"
.
let nodecipher = require('node-cipher');
nodecipher.decrypt({
input: 'config.encrypted.json',
output: 'config.json',
password: 'b0sco'
}, function (err) {
if (err) throw err;
console.log('config.encrypted.json decrypted.');
});
list():Array
Lists all available cipher algorithms as an Array.
Example
let nodecipher = require('node-cipher');
console.log(nodecipher.list());
Tips
Using NPM, you can create custom scripts in our package.json
file to automate much of the encryption/decryption process.
{
"scripts": {
"encrypt": "nodecipher encrypt -i config.json -o config.encrypted.json",
"decrypt": "nodecipher decrypt -i config.encrypted.json -o config.json"
}
}
Simply run npm run encrypt
or npm run decrypt
to execute these commands.
Authors
License
MIT