25-08-2017, 09:32 PM
Blowfish Encryption Algorithm
1Blowfish Encryption.pdf (Size: 57.63 KB / Downloads: 148)
INTRODUCTION
The data transformation process for PocketBrief uses the Blowfish Algorithm for
Encryption and Decryption, respectively. The details and working of the algorithm are
given below.
Blowfish is a symmetric block cipher that can be effectively used for encryption and
safeguarding of data. It takes a variable-length key, from 32 bits to 448 bits, making it
ideal for securing data. Blowfish was designed in 1993 by Bruce Schneier as a fast, free
alternative to existing encryption algorithms. Blowfish is unpatented and license-free,
and is available free for all uses.
Blowfish Algorithm is a Feistel Network, iterating a simple encryption function 16
times. The block size is 64 bits, and the key can be any length up to 448 bits. Although
there is a complex initialization phase required before any encryption can take place, the
actual encryption of data is very efficient on large microprocessors.
Blowfish is a variable-length key block cipher. It is suitable for applications where the
key does not change often, like a communications link or an automatic file encryptor. It is
significantly faster than most encryption algorithms when implemented on 32-bit
microprocessors with large data caches.
Feistel Networks
A Feistel network is a general method of transforming any function (usually called an Ffunction)
into a permutation. It was invented by Horst Feistel and has been used in many
block cipher designs. The working of a Feistal Network is given below:
Split each block into halves
Right half becomes new left half
New right half is the final result when the left half is XOR’d with the result of
applying f to the right half and the key.
Note that previous rounds can be derived even if the function f is not invertible.
DESCRIPTION OF THE ALGORITHM
Blowfish is a variable-length key, 64-bit block cipher. The algorithm consists of two
parts: a key-expansion part and a data- encryption part. Key expansion converts a key of
at most 448 bits into several subkey arrays totaling 4168 bytes.
Data encryption occurs via a 16-round Feistel network. Each round consists of a keydependent
permutation, and a key- and data-dependent substitution. All operations are
XORs and additions on 32-bit words. The only additional operations are four indexed
array data lookups per round.
DESIGN DECISIONS
A 64-bit block size yields a 32-bit word size, and maintains block-size compatibility with
existing algorithms. Blowfish is easy to scale up to a 128-bit block, and down to smaller
block sizes.
The fundamental operations were chosen with speed in mind. XOR, ADD, and MOV
from a cache are efficient on both Intel and Motorola architectures. All subkeys fit in the
cache of a 80486, 68040, Pentium, and PowerPC.
The Feistel Network that makes up the body of Blowfish is designed to be as simple as
possible, while still retaining the desirable cryptographic properties of the structure.
In algorithm design, there are two basic ways to ensure that the key is long enough to
ensure a particular security level.