js-ciphers

Node/Pure JavaScript symmetric ciphers adapter

View the Project on GitHub ecies/js-ciphers

@ecies/ciphers

License Npm Package CI Codecov

Node/Pure JavaScript symmetric ciphers adapter.

On browsers (or React Native, deno), it’ll use @noble/ciphers’s implementation for compatibility.

On node (or bun), it’ll use node:crypto’s implementation for efficiency.

[!NOTE] You may need to polyfill crypto.getRandomValues for React Native.

There are some limitations, see Known limitations below.

Check the example folder for bun/deno usage.

Quick start

import { aes256gcm } from "@ecies/ciphers/aes";
import { randomBytes } from "@noble/ciphers/webcrypto";

const TEXT = "hello world🌍!";
const encoder = new TextEncoder();
const decoder = new TextDecoder();
const msg = encoder.encode(TEXT);

const key = randomBytes();
const nonce = randomBytes(16);
const cipher = aes256gcm(key, nonce);
console.log("decrypted:", decoder.decode(cipher.decrypt(cipher.encrypt(msg))));

The API follows @noble/ciphers’s API for ease of use, you can check their examples as well.

Supported ciphers

Known limitations