Blowfish Encryption/Decryption

Encrypt or decrypt data using the Blowfish algorithm with various modes and options.

Key will be adjusted to fit Blowfish requirements (4-56 bytes)

If not provided, a random one will be generated for encryption