1.0.1 • Published 7 years ago

kripke v1.0.1

Weekly downloads
1
License
ISC
Repository
github
Last release
7 years ago

Kripke

Simple ciphering module that encrypts files using pbkdf2 to generate an encryption key from a secret. A random 128-bit salt and separate random 128-bit iv are used.

Installation

npm install kripke

API

options

OptionValue
keyA string or Buffer that's used in pbkdf2 to generate a 256-bit encryption key
hmacKey(optional) A string or Buffer used as an HMAC secret to sign the encrypted data. If not provided, then HMAC signing is disabled.
algorithm(optional) The name of the encryption algorithm to use. Default is 'AES-256-CBC'
hmacAlgorithm(optional) The name of the hash algorithm to use with HMAC signing. Default is 'SHA256'
iterations(optional) The number of iterations to use in pbkdf2. Default is 2^17 (131072)

Instance functions

You can create an instance of Kripke with the key and options (stored in private variables).

FunctionParametersPurpose
encryptplainText, callbackReturns a UTF8 string containing base64 encoded values of the cipher text, iv, salt, and optional HMAC signature. String is $ delimited.
decryptencodedText, callbackReturns a UTF8 string of the decrypted data
  var Kripke = require('kripke');
  var options = {
    key: process.env.MYAPP_SECRET_KEY, // 'yfghsdfgsdfhdfgh'
    hmacKey: process.env.MYAPP_HMAC_KEY, // '8y34u5ihlksjfg981'
  };
  var kripke = new Kripke(options);
    
  // Encrypt data
  kripke.encrypt('My secret data', function (err, result) {
    // result = 'UJoHS9jcZlillPUdsP2Blw==$kZTq/d9cFa3nq2b7nefM5Q==$b42M4KAPS302I6PCGS10hQ==$bXmfi5pTenDGQz5SMM1v84tO+GKaeNYw+fQJgIk9Y5E='
    model.set('secret', result);
  });
  
  kripke.decrypt(model.get('secret'), function (err, result) {
    // result = 'My secret data'
  });

Static functions

FunctionParametersPurpose
encryptplainText, options, callbackUsing the options provided, returns a UTF8 string containing base64 encoded values of the cipher text, iv, salt, and optional HMAC signature. String is $ delimited.
decryptencodedText, options, callbackUsing the options provided, returns a UTF8 string of the decrypted data
  var Kripke = require('kripke');
  var options = {
    key: process.env.MYAPP_SECRET_KEY, // 'yfghsdfgsdfhdfgh'
    hmacKey: process.env.MYAPP_HMAC_KEY, // '8y34u5ihlksjfg981'
  };
    
  // Encrypt data
  Kripke.encrypt('My secret data', options, function (err, result) {
    // result = 'UJoHS9jcZlillPUdsP2Blw==$kZTq/d9cFa3nq2b7nefM5Q==$b42M4KAPS302I6PCGS10hQ==$bXmfi5pTenDGQz5SMM1v84tO+GKaeNYw+fQJgIk9Y5E='
    model.set('secret', result);
  });
  
  Kripke.decrypt(model.get('secret'), options, function (err, result) {
    // result = 'My secret data'
  });