JSPM

simple-encryption

1.0.1
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 18
  • Score
    100M100P100Q34130F
  • License ISC

Simple encryption using node-forge as the library to encrypt

Package Exports

  • simple-encryption

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (simple-encryption) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

simple-encryption

CircleCI NPM Version NPM Download

Simple encryption module for NodeJS using node-forge

Installation

npm install simple-encryption

Usage

Importing

At the top of your code, use something like this to import simple-encryption

var sencrypt = require('simple-encryption');

Or alternatively, for ease of use, you could do this:

var RSA = require('simple-encryption').RSA;
var AES = require('simple-encryption').AES;

RSA

Currently, RSA is just the basics: encrypting, decrypting, signing, and verifying

Encryption

var RSA = require('simple-encryption').RSA;
var publicKey; //Normally you'd need to assign this variable a PEM encoded public key
var privateKey; //Normally you'd need to assign this variable a PEM encoded private key
var encrypted = RSA.encrypt(publicKey, 'Hello, World!'); //Encrypts Hello, World and outputs it as Base64
var decrypted = RSA.decrypt(privateKey, encrypted); //Decrypts the message
console.log(encrypted);
console.log(decrypted);

Signing

var RSA = require('simple-encryption').RSA;
var publicKey; //Normally you'd need to assign this variable a PEM encoded public key
var privateKey; //Normally you'd need to assign this variable a PEM encoded private key
var signed = RSA.sign(privateKey, 'Hello, World!'); //Sign the message Hello, World
var verified = RSA.verify(publicKey, signed.signed, signed.md); //Verify the message with the base64 message signature and base64 message digest returned from the previous function
if(verified) {
  //verified is a boolean, true on if verification was successful, and false when it wasn't
  console.log("Verification successful");
} else {
  console.log("Verification failed");
}

Notes

  • You need to generate your own keys, and they should be in a PEM format
  • Any potential binary outputs (encrypted/signed outputs) are encoded in base64 to reduce errors

AES

Notes

  • AES uses AES-GCM. If you need another mode, this module is currently not for you

Generating information needed

var AES = require('simple-encryption').AES;
var iv = AES.generateIV(); //Generate 12 byte IV. Outputs Base64
var iv2 = AES.generateIV(16); //Is also valid and generates a 16 byte IV, but AES-GCM requires a 12 bytes IV. Outputs Base64
var key = AES.generateKey(); //Generate a 256 bit (32 byte) key. Outputs Base64
var key2 = AES.generateKey(16); //Generate a 128 bit (16 byte) key. Outputs Base64.

Encryption

var AES = require('simple-encryption').AES;
var iv = AES.generateIV();
var key = AES.generateKey();
var encrypted = AES.encrypt(key, iv, 'Hello, World!'); //Encrypts 'Hello, World!', outputting a JavaScript object with Base64 properties
var decrypted = AES.decrypt(key, iv, encrypted.tag, encrypted.encrypted); //Decrypts 'Hello, World!', and also verifies it at the same time
if(decrypted) {
  //If authentication was successful (i.e. it comes from the same person)
  console.log("Auth successful: " + decrypted);
} else {
  //Someone has tampered with it
  console.log("Auth failed");
}

License

ISC