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:
-
Fast, Blowfish performs data encryption on 32-bit microprocessors with
a rate of 26 clock cycles per byte.
-
Compact (lightweight), Blowfish can run on less than 5K memory.
-
Simple, Blowfish uses only simple operations: addition, XOR, and
lookup tables on 32-bit operands.
-
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].
-
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
-
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: