Pure JavaScript Salsa20 stream cipher
Switch branches/tags
Nothing to show
Clone or download
Latest commit 9cc7857 Feb 2, 2017
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
src
test
.babelrc
.editorconfig Init commit Jan 24, 2017
.eslintrc.json
.gitattributes Init commit Jan 24, 2017
.gitignore
.travis.yml
LICENSE
README.md
package.json

README.md

JS-Salsa20

Pure JavaScript Salsa20 stream cipher

Build Status Standard - JavaScript Style Guide

Abstract

Salsa20 is a family of 256-bit stream ciphers designed in 2005 and submitted to eSTREAM, the ECRYPT Stream Cipher Project. Salsa20 has progressed to the third round of eSTREAM without any changes. The 20-round stream cipher Salsa20/20 is consistently faster than AES and is recommended by the designer for typical cryptographic applications.

Implementation derived from

Install

npm install js-salsa20 --save

Usage

Encrypt message with key and nonce

import JSSalsa20 from "js-salsa20";

const key = Uint8Array([...]); // 32 bytes key
const nonce = Uint8Array([...]); // 8 bytes nonce
const message = Uint8Array([...]); // some data as bytes array

// Encrypt //
const encrypt = new JSSalsa20(key, nonce).encrypt(message);

// now encrypt contains bytes array of encrypted message

Decrypt encrypted message with key and nonce

import JSSalsa20 from "js-salsa20";

const key = Uint8Array([...]); // 32 bytes key
const nonce = Uint8Array([...]); // 8 bytes nonce
const encrypt = Uint8Array([...]); // some data as bytes array

// Encrypt //
const message = new JSSalsa20(key, nonce).decrypt(encrypt);

// now message contains bytes array of original message

That all. If something happens, Error will be thrown. More examples you can find in tests files.