egoroof-blowfish
v4.0.1
Published
Blowfish encryption library for browsers and Node.js
Downloads
32,165
Maintainers
Readme
Blowfish
Blowfish encryption library for browsers and Node.js.
Find the changelog in CHANGELOG.md
Table of Contents
Installation
Take latest version here or with npm:
npm install egoroof-blowfish --save
JS modules
The library is only deployed in native JS modules, so in browsers you have to use script
with type module
:
<script type="module">
import { Blowfish } from 'https://your-host/blowfish.mjs';
// your code here..
</script>
Or bundle the library to your code.
In Nodejs it imports easily:
import { Blowfish } from 'egoroof-blowfish';
Usage
All input data including key, IV, plaintext and ciphertext should be a String
or ArrayBuffer
/ Buffer
.
Strings support all unicode including emoji ✨.
Example
import { Blowfish } from 'egoroof-blowfish';
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
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