Blowfish is block cipher, block length is 8 byte.
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 trimZeroes method (see bellow Example 1).
Example: ECB mode, default
var bf = "secret key";var encrypted = bf;var decrypted = bf;decrypted = bf; // for string/text informationconsole;
Binary data encryption
If you want to encrypt binary data you must provide encrypt function with string length multiple by 8.
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:
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
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.
var bf = "key" "cbc";var encrypted = bf;var decrypted = bf;
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
var bf = "key";// Encrypt and encode to base64var encrypted = bf;console;// Decryptvar encrypted = bf;var decrypted = bf;