Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/gunar/json-crypto

Safe defaults for Node's crypto module
https://github.com/gunar/json-crypto

Last synced: about 2 months ago
JSON representation

Safe defaults for Node's crypto module

Awesome Lists containing this project

README

        

# json-crypto

Easy to use abstraction on top of Node's native `crypto` module to safely encrypt and decrypt JSON objects.

## Installation

```
npm install json-crypto
```

## Usage

```js
const { createKey, createCodec } = require('json-crypto');

// Create a random encryption key
const key = createKey();

// Create our codec with { encrypt, decrypt }
const codec = createCodec(key);

// Encrypt a JSON object and return the ciphertext
const ciphertext = codec.encrypt({ message: 'my secret message' })

// Decrypt the ciphertext back into a JSON object
const secret = codec.decrypt(ciphertext)
// secret === { message: 'my secret message' }
```

NB: You'll probably want to persist the generated key and store it somewhere safe.

## Benefits

- Safe by nature (only uses native `crypto` functions)
- Safer by forcing you to use unique nonces ([see why it matters](https://www.cryptofails.com/post/70059609995/crypto-noobs-1-initialization-vectors))
- Easy to use interface for JSON objects
- Ciphertexts are valid URL query argument strings (using encodeURIComponent)