JSPM

blowfish-node

1.1.4
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 880
  • Score
    100M100P100Q95651F
  • License MIT

Blowfish encryption library for browsers and Node.js

Package Exports

  • blowfish-node
  • blowfish-node/dist/blowfish.js

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (blowfish-node) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

Blowfish

npm package

Blowfish encryption library for browsers and Node.js.

Works in Node.js 4+, IE10+ and all modern browsers.

Table of Contents

Installation

Take latest version here or with:

npm

npm install blowfish-node --save

yarn:

yarn add blowfish-node

Usage

All input data including key, IV, plaintext and ciphertext should be a String or ArrayBuffer / Buffer. Strings support all unicode including emoji ✨.

Example

const Blowfish = require('blowfish-node');
const bf = new Blowfish('super key', Blowfish.MODE.ECB, Blowfish.PADDING.NULL); // only key isn't optional
bf.setIv('abcdefgh'); // optional for ECB mode; bytes length should be equal 8

const encoded = bf.encode('input text even with emoji 🎅');
const decoded = bf.decode(encoded, Blowfish.TYPE.STRING); // type is optional

// encode the object to base64
const encoded = bf.encodeToBase64(JSON.stringify({message: 'super secret response api'}));
const decoded = bf.decode(encoded, Blowfish.TYPE.JSON_OBJECT); // type is required to JSON_OBJECT
// only for typescript
const response = bf.decode<{message: string}>(encoded, Blowfish.TYPE.JSON_OBJECT); // type is required to JSON_OBJECT

You can play with this example in runkit: https://runkit.com/mrdhanz/blowfish-example

Block cipher mode of operation

https://en.wikipedia.org/wiki/Block_cipher_mode_of_operation

Blowfish.MODE.ECB // (default) Electronic Codebook
Blowfish.MODE.CBC // Cipher Block Chaining

Padding

http://www.di-mgt.com.au/cryptopad.html

Blowfish.PADDING.PKCS5 // (default) Pad with bytes all of the same value as the number of padding bytes
Blowfish.PADDING.ONE_AND_ZEROS // Pad with 0x80 followed by zero bytes
Blowfish.PADDING.LAST_BYTE // Pad with zeroes except make the last byte equal to the number of padding bytes
Blowfish.PADDING.NULL // Pad with zero (null) characters
Blowfish.PADDING.SPACES // Pad with spaces

Return type

Which type of data should return method decode:

Blowfish.TYPE.STRING // (default) String
Blowfish.TYPE.UINT8_ARRAY // Uint8Array
Blowfish.TYPE.JSON_OBJECT // JSON