Security News
Weekly Downloads Now Available in npm Package Search Results
Socket's package search now displays weekly downloads for npm packages, helping developers quickly assess popularity and make more informed decisions.
simple-encryptor
Advanced tools
A simple encryptor/decryptor for Node.js.
Add it to your node.js project via:
npm install simple-encryptor --save
First create an encryptor:
// Specify a string key:
// Don't do this though, your keys should most likely be stored in env variables
// and accessed via process.env.MY_SECRET_KEY
var key = 'real secret keys should be long and random';
// Create an encryptor:
var encryptor = require('simple-encryptor')(key);
To encrypt something:
var encrypted = encryptor.encrypt('testing');
// Should print gibberish:
console.log('encrypted: %s', encrypted);
To decrypt it:
var decrypted = encryptor.decrypt(encrypted);
// Should print 'testing'
console.log('decrypted: %s', decrypted);
To generate an HMAC:
var myHmac = encryptor.hmac('testing');
The module provides three functions:
encryptor.encrypt(obj)
- Encrypt the object and return back the encrypted cipher text. The object is first converted to text via JSON.stringify(...)
. This means you can encrypt arbitrary objects.encryptor.decrypt(cipherText)
- Decrypts the cipher text and returns the original object. Specifically, it decrypts the cipher text and calls JSON.parse(...)
on the result. If an error occurs during the decryption then null is returned. Note: This function never throws an error for bad input, it just returns null
.encryptor.hmac(string)
- Calculate the HMAC of the input string.This module supports two forms of creating an encryptor:
encryptor(key)
If the first parameter is a string then it will be used as the key and the rest of the options will be defaulted.
Example:
// Don't hard code keys! They should be in environment variables!
var encryptor = require('simple-encryptor')('my secret key');
encryptor(opts)
Alternatively you can specify the string key and other options as a hash. The following properties are supported:
key
- the string key to derive the crypto key from. Specifically the crypto key will be derived as the SHA-256 hash of this key. This must be specified, there is no default.hmac
- whether or not to calculate the HMAC of the encrypted text and add that to the result. Additionally, if enabled this will verify the HMAC prior to decrypting. Adding HMACs will add 64-bytes to the result of each encryption (32-byte HMAC stored as hex). By default this is true.debug
- whether to log errors decrypting, by default this is false.Example:
// Don't hard code keys! They should be in environment variables!
var encryptor = require('simple-encryptor')({
key: 'my secret key',
hmac: false,
debug: true
});
Interally this module uses the node.js crypto package. Specifically it uses the specified string key to derive a key via computing it's SHA-256 hash. Encryption is done via AES-256 with a unique IV (intialization vector) per call that is returned as part of the result.
If you're on a *nix system then the easiest way to generate a random string for a crypto key is to use /dev/urandom. The following will print out 32 random characters of lower case letters, upper case letters, and numbers:
$ echo "$(< /dev/urandom tr -dc A-Za-z0-9 | head -c 32)"
None.
This plugin is released under the MIT license. See the file LICENSE.
FAQs
Simplified encryption/decryption for node.js
The npm package simple-encryptor receives a total of 23,527 weekly downloads. As such, simple-encryptor popularity was classified as popular.
We found that simple-encryptor 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.
Security News
Socket's package search now displays weekly downloads for npm packages, helping developers quickly assess popularity and make more informed decisions.
Security News
A Stanford study reveals 9.5% of engineers contribute almost nothing, costing tech $90B annually, with remote work fueling the rise of "ghost engineers."
Research
Security News
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.