Blowfish is a free and fast cipher that was developed by Bruce Schneier in 1993. It was originally designed to replace some of the existing algorithms of the time that had fallen out of favor.

The encryption method is a symmetric block cipher. The cipher itself uses a variable length key that can be anywhere from 32 bits to 448 bits long. The block size is 64 bit and it uses 16 rounds of a Feistel network and large S-boxes for encryption.

The algorithm functions by keeping a P-array and found S-boxes. The S-boxes create a 32 bit output and one entry of the P-array is used per round. The 32 bit output of the S-box is split into four pieces and used as input into S-boxes. The output are then added to and xored to create the final encrypted string.

Blowfish is in use in several versions of Linux and a very wide array of other programs, operating systems, secure shells, file transfer programs, encryption software, steganography programs, word processors, and others.

As of today there has been no successful cryptanalysis of the Blowfish cipher. Even though Blowfish is still in use, the creator now recommends using the Twofish algorithm. The AES encryption standard is another cipher that is recommended in lieu of using Blowfish.