Skip to content

WebReflection/secretly

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

31 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Secretly

Build Status Coverage Status

Social Media Photo by Felix Hanspach on Unsplash

A basic class to encrypt and decrypt.

Usage

// NodeJS
import Secretly from 'secretly';
// or const Secretly = require('secretly');

// Web
// import Secretly from 'secretly/web';
// or import Secretly from 'https://unpkg.com/secretly/esm/web.js';

const pvt = new Secretly(secret, Secretly.PATH);

const encrypted = await pvt.encrypt('any text');
const decrypted = await pvt.decrypt(encrypted);

API

  • constructor(password, salt = Secretly.PATH, random = true) where both password and salt cannot be empty strings. The Secretly.PATH is the process.cwd() in NodeJS, and the current location up to the last / in the browser. The third random is used to have different results across sessions, while if forced to false there won't be randomness in the derived iv key, so while encrypted content will be reusable across different sessions, assuming also the salt is the same, it might be less secure.
  • async encrypt(plain_text) => encrypted_hex
  • async decrypt(encrypted_hex) => plain_text

Compatibility

This module requires ES2015 compatible browsers on the client side, and NodeJS 15+ on the backend for the native crypto.webcrypto API, which is polyfilled via node-webcrypto-ossl.

If interested in using the synchronous, NodeJS only version of this module, which produces different results but in terms of API it works identically, you can use secretly@1 instead, which has been successfully tested, and used, from NodeJS version 8 up to version 15.

Breaking V2

After bringing this module to the Web, and discovering that NodeJS has a crypto.webcrypto that works the same, I've decided to make this module identical for both Web and NodeJS, making it portable client/server.

About

A basic class to encrypt and decrypt

Resources

License

Stars

Watchers

Forks

Packages

No packages published