Blowfish encryption library for browsers and Node.js.
Find the changelog in CHANGELOG.md
Take latest version here or with npm:
npm install egoroof-blowfish --save 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';All input data including key, IV, plaintext and ciphertext should be a String or ArrayBuffer / Buffer. Strings support all unicode including emoji ✨.
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 optionalhttps://en.wikipedia.org/wiki/Block_cipher_mode_of_operation
Blowfish.MODE.ECB; // (default) Electronic Codebook Blowfish.MODE.CBC; // Cipher Block Chaininghttp://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 spacesWhich type of data should return method decode:
Blowfish.TYPE.STRING; // (default) String Blowfish.TYPE.UINT8_ARRAY; // Uint8Array