secretly

2.0.2 • Public • Published

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.

Package Sidebar

Install

npm i secretly

Weekly Downloads

10

Version

2.0.2

License

ISC

Unpacked Size

13.9 kB

Total Files

10

Last publish

Collaborators

  • webreflection