Skip to content

Repository files navigation

javascript-blowfish

Blowfish encryption library Javascript, jquery,coffeescript (blowfish.js)

Works well both in old and new browsers.

Blowfish is block cipher, block length is 8 byte.

Online DEMO of javascript-blowfish.

A key advantage of the library is that it works correctly with strings in UTF-8.

Text data encryption (ASCII/text)

It you want to encrypt string information (like text-message, or json, xml): use trimZeros method (see bellow Example 1).

Example: ECB mode, default

varbf=newBlowfish("secret key");varencrypted=bf.encrypt("secret message");vardecrypted=bf.decrypt(encrypted);decrypted=bf.trimZeros(decrypted);// for string/text information console.log(decrypted);

Binary data encryption

If you want to encrypt binary data you must provide encrypt function with string length multiple by 8.

Example:

Input string for encryption: "asdf" (4 bytes) is not enough. Blowfish want 8-byte string (or 16, 24, 32,...)

So my lib automaticaly pad string with zeros: "asdf\0\0\0\0" If you want to prevent such behaviour you should pad input data to block size.

Additional info about padding: Using Padding in Encryption (@lucnap) suggested

After decryption we will get not "asdf", but "asdf\0\0\0\0" string.

Example 2: CBC mode (better for encrypting long messages and images).

For CBC you need additional key (CBC Vector) which length should be 8 bytes.

varbf=newBlowfish("key","cbc");varencrypted=bf.encrypt("secret message","cbcvecto");vardecrypted=bf.decrypt(encrypted,"cbcvecto");

Blowfish when encrypt produces binary string as result. It's not usable for example, to copy paste. We could encode it to base64 text format:

Example 3: with base64 encoded output

varbf=newBlowfish("key");// Encrypt and encode to base64varencrypted=bf.base64Encode(bf.encrypt("secret message"));console.log(encrypted);// Decryptvarencrypted=bf.base64Decode(encrypted);vardecrypted=bf.decrypt(encrypted);

Node.js and npm version

Upd: 21.07.2018

Installation:

$ npm install agorlov/javascript-blowfish

Usage example:

constBlowfish=require('javascript-blowfish');constkey="secret key";constbf=newBlowfish(key);console.log("Blowfish encrypt text by key: "+key);// Encryptionconstencrypted=bf.encrypt("Secret message. Confidentially!");letencryptedMime=bf.base64Encode(encrypted);console.log(encryptedMime);// Decryptionconsole.log('decrypted: ',bf.decrypt(bf.base64Decode(encryptedMime)));

About

Blowfish encryption library Javascript, jquery,coffeescript (blowfish.js)

Resources

Stars

74 stars

Watchers

6 watching

Forks

Releases

Packages

Used by

Contributors

Languages