Research
Security News
Quasar RAT Disguised as an npm Package for Detecting Vulnerabilities in Ethereum Smart Contracts
Socket researchers uncover a malicious npm package posing as a tool for detecting vulnerabilities in Etherium smart contracts.
node-cipher
Advanced tools
Securely encrypt sensitive files for use in public source control. Find on NPM.
Why should I use node-cipher?
Let's say you have a file in your project name config.json
which contains sensitive information like private keys and database passwords. What should you do if you need 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.
You could remove the file from source control, and send the file to everyone in your team every time you update the file. But this is pretty cumbersome. Or, you can use node-cipher to encrypt the file and add the encrypted version to source control. This can later be decrypted by each team member independently with a password that you provide. Every time you or one of your team members makes a change to config.json
, just re-encrypt the file and commit. It's that easy!
Don't forget to add the original config.json
file to .gitignore
!
:exclamation: If you're looking for the node-cipher command line tool, it has moved to node-cipher-cli.
$ npm install node-cipher
Name | Type | Description | Required | Default |
---|---|---|---|---|
input | string | The file that you wish to encrypt or decrypt. | ✓ | |
output | string | The file that you wish to save the encrypted or decrypted contents to. This file does not necessarily need to exist. | ✓ | |
password | string | The key that you will use to encrypt or decrypt your input file. 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 | string | The cipher algorithm to use. Use list() to see a list of available cipher algorithms. | "cast5-cbc" |
encrypt(options[, callback[, scope]])
Encrypts a file using the options provided. Returns undefined
.
Parameter | Type | Description | Required |
---|---|---|---|
options | Object | See options. | ✓ |
callback | Function | The function to call when the encryption has completed. | |
scope | Object | The scope for the callback function parameter, if provided. |
Encrypts config.json
into config.json.cast5
using the password "passw0rd"
.
let nodecipher = require('node-cipher');
nodecipher.encrypt({
input: 'config.json',
output: 'config.json.cast5',
password: 'passw0rd'
}, function (err) {
if (err) throw err;
console.log('config.json encrypted.');
});
encryptSync(options)
The synchronous version of encrypt()
. Returns undefined
.
Parameter | Type | Description | Required |
---|---|---|---|
options | Object | See options. | ✓ |
Synchronously encrypts config.json
into config.json.cast5
using the password "passw0rd"
.
let nodecipher = require('node-cipher');
nodecipher.encryptSync({
input: 'config.json',
output: 'config.json.cast5',
password: 'passw0rd'
});
decrypt(options[, callback[, scope]])
Decrypts a file using the options provided. Returns undefined
.
Parameter | Type | Description | Required |
---|---|---|---|
options | Object | See options. | ✓ |
callback | Function | The function to call when the decryption has completed. | |
scope | Object | The scope for the callback function parameter, if provided. |
Decrypts config.json.cast5
back into config.json
using the password "passw0rd"
.
let nodecipher = require('node-cipher');
nodecipher.decrypt({
input: 'config.json.cast5',
output: 'config.json',
password: 'passw0rd'
}, function (err) {
if (err) throw err;
console.log('config.json.cast5 decrypted.');
});
decryptSync(options)
The synchronous version of decrypt()
. Returns undefined
.
Parameter | Type | Description | Required |
---|---|---|---|
options | Object | See options. | ✓ |
Synchronously decrypts config.json.cast5
back into config.json
using the password "passw0rd"
.
let nodecipher = require('node-cipher');
nodecipher.decryptSync({
input: 'config.json.cast5',
output: 'config.json',
password: 'passw0rd'
});
list():Array
Lists all available cipher algorithms as an Array. Returns Array
.
let nodecipher = require('node-cipher');
console.log(nodecipher.list());
// => ['CAST-cbc', 'aes-128-cbc', ..., 'seed-ofb']
Node-cipher implements debug for development logging. To set up node-cipher with debug, set the following environment variables:
Mac OS:
$ export DEBUG=nodecipher:*
Windows:
$ set DEBUG=nodecipher:*
MIT
FAQs
Securely encrypt sensitive files for use in public source control.
The npm package node-cipher receives a total of 47 weekly downloads. As such, node-cipher popularity was classified as not popular.
We found that node-cipher demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
Socket researchers uncover a malicious npm package posing as a tool for detecting vulnerabilities in Etherium smart contracts.
Security News
Research
A supply chain attack on Rspack's npm packages injected cryptomining malware, potentially impacting thousands of developers.
Research
Security News
Socket researchers discovered a malware campaign on npm delivering the Skuld infostealer via typosquatted packages, exposing sensitive data.