DESCRIPTION

Blowfish is a fast unpatented block cipher designed by Bruce Schneier. It
basically consists of a 16-round Feistel network. The block size is 64
bits and the maximum key size is 448 bits.
The blf_key() function initializes the 4 8-bit S-boxes and the 18 Subkeys
with the hexadecimal digits of Pi. The key is used for further randomiza-
tion. The first argument to blf_enc() is the initialized state derived
from blf_key(). The stream of 32-bit words is encrypted in Electronic
Codebook Mode (ECB) and datalen must be even. blf_dec() is used for de-
crypting Blowfish encrypted blocks.
The functions blf_ecb_encrypt() and blf_ecb_decrypt() are used for en-
crypting and decrypting octet streams in ECB mode. The functions
blf_cbc_encrypt() and blf_cbc_decrypt() are used for encrypting and de-
crypting octet streams in Cipherblock Chaining Mode (CBC).
The functions Blowfish_initstate(), Blowfish_expand0state(),
Blowfish_expandstate(), Blowfish_encipher() and Blowfish_decipher() are
used for customization of the Blowfish cipher, e.g., for the blowfish
password hashing function.