# secretly

> A basic class to encrypt and decrypt

Latest version **2.0.2** (published 2021-01-04) · ISC license · 0 weekly downloads

## Install

```sh
npm install secretly
pnpm add secretly
yarn add secretly
bun add secretly
```

## Health

**Score 20/100 (F)** — status: abandoned.

Positive: esm support; no vulnerabilities.

Warnings: low downloads; no types.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 2.0.2 |
| Published | 2021-01-04 |
| First published | 2019-01-03 |
| Weekly downloads | 0 |
| License | ISC |
| TypeScript types | none |
| Module format | ESM + CommonJS |
| Dependencies | 1 |
| Unpacked size | 13.6 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Author | Andrea Giammarchi |
| Maintainers | webreflection |
| Keywords | encrypt, decrypt, simple, utility, Web |

## Links

- npm: https://www.npmjs.com/package/secretly
- Repository: https://github.com/WebReflection/secretly
- Homepage: https://github.com/WebReflection/secretly#readme
- Issues: https://github.com/WebReflection/secretly/issues
- npm.io page: https://npm.io/package/secretly

## Dependencies (1)

- [node-webcrypto-ossl](https://npm.io/package/node-webcrypto-ossl.md) ^2.1.2

## Alternatives

- [@opentelemetry/exporter-zipkin](https://npm.io/package/@opentelemetry/exporter-zipkin.md) — 14.8M weekly downloads
- [pusher-js](https://npm.io/package/pusher-js.md) — 2.0M weekly downloads
- [browserify](https://npm.io/package/browserify.md) — 1.7M weekly downloads
- [sqs-consumer](https://npm.io/package/sqs-consumer.md) — 1.7M weekly downloads
- [@sanity/eventsource](https://npm.io/package/@sanity/eventsource.md) — 930.8K weekly downloads

## Recent versions

- 2.0.2 (latest) — 2021-01-04
- 2.0.1 — 2020-12-10
- 2.0.0 — 2020-12-10
- 1.1.3 — 2020-12-09
- 1.1.2 — 2020-12-09
- 1.1.1 — 2020-12-09
- 1.1.0 — 2020-12-09
- 1.0.0 — 2020-05-02
- 0.2.0 — 2019-01-03
- 0.1.1 — 2019-01-03
- 0.1.0 — 2019-01-03
- 0.0.0 — 2019-01-03

## README

# Secretly

[![Build Status](https://travis-ci.com/WebReflection/secretly.svg?branch=master)](https://travis-ci.com/WebReflection/secretly) [![Coverage Status](https://coveralls.io/repos/github/WebReflection/secretly/badge.svg?branch=master)](https://coveralls.io/github/WebReflection/secretly?branch=master)

<sup>**Social Media Photo by [Felix Hanspach](https://unsplash.com/@fhanspach) on [Unsplash](https://unsplash.com/)**</sup>


A basic class to encrypt and decrypt.

## Usage

```js
// 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](https://www.npmjs.com/package/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.

---
_Source: https://npm.io/package/secretly · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
