Blowfish Algorithm

Blowfish was created by a Cryptanalyst named Bruce Schneier and published in 1994. Blowfish made for use on computers with a large microprocessor (32-bit and above with large data cache) [11]. Blowfish is a non-patented and license free algorithm, and is available for free for a variety of uses [11] [12]. When the Blowfish is invented, it is expected to have the following design criteria:
  1. Fast, Blowfish performs data encryption on 32-bit microprocessors with a rate of 26 clock cycles per byte.
  2. Compact (lightweight), Blowfish can run on less than 5K memory.
  3. Simple, Blowfish uses only simple operations: addition, XOR, and lookup tables on 32-bit operands.
  4. Having varying security levels, the key lengths used by Blowfish may vary and may be up to 448 bits long.
In the implementation often this algorithm become not optimal. Due to improper implementation strategy. Blowfish algorithms will be more optimal if used for applications that do not often change keys, such as communication networks or automatic file encryption [12]. Also, since this algorithm requires large memory, this algorithm cannot be applied to applications that have a small memory such as smart cards. The key length used, also affects the security of implementing this algorithm [11] [12].
Blowfish algorithm consists of two parts, the key expansion, and data encryption [11] [12].
  1. Key expansion Function lock switch (minimum 32-bit, a maximum of 448-bits) into several arrays subkey with a total of 4168 bytes (18x32-bit for the P-array and 4x256x32-bit S-box for a total of 33 344 bits or 4168 bytes) and keys are put in the K-array
  2. Encryption Data Consisting of a simple iteration of functions (Feistel Network) of 16 times round (iteration), the input is a 64-bit data element X. Each round consists of key-dependent permutations and key- and dependent data substitutions. All operations are additions and XOR on 32-bit variables. Other additional operations are just four indexed array table searches for each round.

LZW Algorithm

The Lempel-Ziv-Welch (LZW) algorithm uses adaptive and dictionary-based techniques The LZW predecessor is LZ77 and LZ78 developed by Jacob Ziv and Abraham Lempel in 1977 and 1978. Terry Welch developed the technique in 1984. LZW widely used on UNIX, GIF for modems [15].
This algorithm performs compression using the dictionary, where text fragments are reconstructed with indexes obtained from the dictionary, where special codes are used to represent current words. This approach is adaptive and efficient because many characters could be encoded by reference to strings that have appeared before in the text [10] [13] [15]. The compression principle is reached if the reference in the form of a pointer can be collected in less number of bits than the original string [15].
Combination process in this experiment is perform one by one where the first process is done by encryption with Blowfish and ciphertext algorithm then in compression by using Lempel-Ziv-Welch (LZW) algorithm.

RESULTS AND DISCUSSION

The encryption process with Blowfish algorithm perform with manual calculations that occur in the encryption process, in this case the following parameters used:
Plaintext = MATAHARI
Key = 2905
The calculation as below: