Institutional Repository | Satya Wacana Christian University: Implementasi Algoritma Huffman dan Kriptografi Blowfish dalam Pengamanan Data File
Implementasi Algoritma Huffman dan Kriptografi
Blowfish dalam Pengamanan Data File
Artikel Ilmiah
Peneliti:
Juneth N. Wattimena (672009078)
Alz Danny Wowor, S.Si., M.Cs.
Dian W. Chandra, S.Kom., M.Cs.
Program Studi Teknik Informatika
Fakultas Teknologi Informasi
Universitas Kristen Satya Wacana
Salatiga
Januari 2015
Implementasi Algoritma Huffman dan Kriptografi
Blowfish dalam Pengamanan Data File
Artikel Ilmiah
Diajukan kepada
Fakultas Teknologi Informasi
untuk memperoleh Gelar Sarjana Komputer
Peneliti:
Juneth N. Wattimena (672009078)
Alz Danny Wowor, S.Si., M.Cs.
Dian W. Chandra, S.Kom., M.Cs.
Program Studi Teknik Informatika
Fakultas Teknologi Informasi
Universitas Kristen Satya Wacana
Salatiga
Januari 2015
i
ii
iii
iv
v
vi
Implementasi Algoritma Huffman dan Kriptografi
Blowfish dalam Pengamanan Data File
1)
Juneth N. Wattimena, 2) Alz Danny Wowor, 3) Dian W. Chandra
Fakultas Teknologi Informasi
Universitas Kristen Satya Wacana
Jl. Diponegoro 52-60, Salatiga 50711, Indonesia
2)
1)
E-mail: [email protected], [email protected],
3)
[email protected]
Abstract
Cryptography is a way to encode information so that safety is maintained.
Examples of cryptographic techniques used in the encryption process or descriptions that
blowfish algorithm. Blowfish algorithm is a symmetric key algorithm by exploiting the
block of bits in the process of encryption and decryption of data. To reduce the excessive
size after the message in encryption the Huffman algorithm used for compression and
decompression process. Tests were performed using a data file format that is encrypted
and compressed text. The results showed that the data security applications built to
compress files in text format and can restore the file size to its original shape. So also
with the encryption process, can encrypt a file by changing the plaintext files compressed
to form the ciphertext can not be recognized and can restore files ciphertext to plaintext
file. Comparison of encryption less time if done before the compression process, while it
takes more time if done after the compression process.
Keywords: Cryptography, Blowfish, Huffman Algorithm.Cryptography, Affine Cipher,
Cryptanalysis, Known Plaintext Attack, Gamma Function, Hyperbolic Function,
Abstrak
Kriptografi merupakan cara untuk menyandikan informasi agar keamananya tetap
dijaga. Contoh teknik kriptografi yang digunakan dalam proses enkripsi atau dekripsi
yaitu algoritma blowfish. Algoritma blowfish merupakan algoritma kunci simetris dengan
memanfaatkan block bit dalam proses enkripsi dan dekripsi data. Untuk mengurangi
ukuran yang berlebihan setelah pesan dienkripsi maka digunakan algoritma Huffman
untuk proses kompresi dan dekompresi. Pengujian yang dilakukan menggunakan data file
berformat teks yang dienkripsikan dan dikompresi. Hasil penelitian menunjukkan bahwa
aplikasi pengamanan data yang dibangun dapat mengkompresi file berformat teks dan
dapat mengembalikan ukuran file ke bentuk semula. Begitu juga dengan proses enkripsi,
dapat mengenkripsikan file dengan merubah file plaintext terkompresi ke bentuk
ciphertext sehingga tidak dapat diketahui dan dapat mengembalikan file ciphertext ke file
plaintext. Perbandingan waktu enkripsi lebih sedikit apabila dilakukan sebelum proses
kompresi, sedangkan waktu yang dibutuhkan lebih banyak apabila dilakukan sesudah
proses kompresi.
Kata Kunci: Kriptografi, Blowfish, Algoritma Huffman.
__________________________________________________________________
1)
Mahasiswa Program Studi Teknik Informatika, Fakultas Teknologi Informasi, Universitas
Kristen Satya Wacana
2)
Staff Pengajar Fakultas Teknologi Informasi, Universitas Kristen Satya Wacana
3)
Staff Pengajar Fakultas Teknologi Informasi, Universitas Kristen Satya Wacana
vii
1.
Pendahuluan
Informasi menentukan hampir setiap elemen dari kehidupan manusia.
Seiring dengan berkembangnya cara pengiriman pesan, berkembang pula cara
menyembunyikan pesan dan bagaimana agar orang lain tidak mengetahui isi
pesan walaupun pesan tersebut ditemukan. Kriptografi merupakan cara untuk
menyandikan informasi agar keamanannya tetap dijaga. Tujuan menggunakan
teknik kriptografi adalah untuk mengamankan informasi penting dari pihak luar
yang dapat menyalahgunakan informasi. Teknik kriptografi terdiri dari beberapa
algoritma, salah satunya yaitu algoritma blowfish. Algoritma blowfish merupakan
algoritma kunci simetris dengan memanfaatkan block bit dalam proses enkripsi
dan dekripsi data.
Dalam penerapannya, teknik kriptografi perlu dipertimbangkan tentang
masalah waktu yang dibutuhkan dalam proses enkripsi dan dekripsi. Jika ukuran
file semakin besar maka waktu yang dibutuhkan dalam proses enkripsi juga
semakin besar dan kecurigaan akan muncul karena ukuran file yang bertambah
dari ukuran file semula. Untuk menghindari ukuran data yang besar dalam ukuran
data yang semula, maka digunakan teknik kompresi. Tujuan dari kompresi data
adalah untuk merepresentasikan suatu data digital dengan sedikit mungkin bit,
tetapi tetap mempertahankan kebutuhan minimum untuk membentuk kembali data
aslinya. Teknik kompresi data yang digunakan yaitu Huffman Tree.
Berdasarkan latar belakang tersebut, maka dilakukan penelitian yang
bertujuan untuk merancang dan mengimplementasikan aplikasi pengamanan data
file menggunakan metode kriptografi blowfish, serta menggunakan algoritma
Huffman untuk memperkecil ukuran file teks (*.txt), dengan maksud untuk
mengoptimalkan kecepatan proses enkripsi dan dekripsi serta meminimalkan
ukuran data yang berlebihan.
2.
Tinjauan Pustaka
Ada beberapa penelitian terdahulu yang menjadi acuan dengan penelitian ini,
yaitu: pada penelitian yang berjudul “Implementasi Enkripsi Data Dengan
Algoritma Blowfish Menggunakan Java Pada Aplikasi Email”, menyatakan bahwa
algoritma Blowfish dapat digunakan untuk mengamankan data pada aplikasi email
dikarenakan algoritma Blowfish dapat berjalan pada jalur komunikasi atau
enkripsi file otomatis. Proses enkripsi dan dekripsi menggunakan key yang
memiliki panjang maksimum 56 karakter dan telah disepakati oleh kedua belah
pihak [1]. Penelitian lain yang berkaitan dengan penelitian ini, yaitu berjudul
“Perancangan dan Implementasi Aplikasi Steganography Menggunakan Metode
Enchanced Audio Steganography (EAS) Pada Data File Terkompresi”. Dalam
penelitian ini dijelaskan bahwa sebelum disisipkan, file documen dienkripsi
terlebih dahulu menggunakan algoritma gost. Metode kompresi yang digunakan
yaitu menggunakan algoritma Huffman. Hasil dalam penelitian ini, adalah sebuah
aplikasi yang dibangun bertujuan untuk membantu para pengguna untuk menjaga
kerahasiaan data yang disisipkan dalam file audio dan untuk mengatasi masalah
1
mengenai besarnya kapasitas penyimpanan (storage) sebagai wadah penyimpanan
data rahasia. [2].
Berdasarkan penelitian terdahulu yang membahas tentang penerapan
algoritma Huffman dan kriptografi blowfish, maka akan dilakukan penelitian yang
membahas tentang implementasi algoritma Huffman dan kriptografi blowfish
dalam pengamanan data file yang bertujuan untuk mengoptimalkan waktu proses
enkripsi-deskripsi file dengan ukuran data yang besar. Penelitian ini menghasilkan
aplikasi yang dapat menyembunyikan pesan rahasia yang terkompresi. Pesan yang
dienkripsikan berupa file teks (*.txt). Penelitian yang dilakukan akan melihat
apakah terjadi perubahan terhadap waktu, kualitas dan besar ukuran data setelah
melalui proses enkripsi, proses dekripsi, proses kompresi, dam proses dekompresi
data file. Program yang digunakan untuk membuat aplikasi pengamanan file teks
ini adalah Microsoft Visual Studio 2010 yang berbahasa C#.
Algoritma kriptografi yang diterapkan dalam penelitian ini adalah
algoritma blowfish. Algoritma Blowfish adalah metode kriptografi dengan kunci
simetri, yang berarti menggunakan kunci yang sama untuk melakukan enkripsi
dan dekripsi file. Algoritma blowfish termasuk dalam enkripsi block cipher 64-bit
dangan panjang kunci yang bervariasi antara 32-bit sampai 448-bit. Algoritma
Blowfish terdiri atas dua bagian, yaitu Key–Expansion (pengembangan kunci) dan
data encryption (enkripsi data) [3]. Key-Expansion berfungsi merubah kunci
(minimum 32-bit, maksimum 448-bit) menjadi beberapa array subkunci (subkey)
dengan total 4168 byte (18 x 32-bit untuk P-array dan 4 x 256 x 32-bit untuk Sbox sehingga totalnya 33344 bit atau 4168 byte). Kunci disimpan dalam K-array:
K1, K2, ... Kj 1 ≤j ≤14. Kunci–kunci ini yang dibangkitkan (generate) dengan
menggunakan sub kunci yang harus dihitung terlebih dahulu sebelum enkripsi
atau dekripsi data. Sub–sub kunci yang digunakan terdiri dari: P-array yang
terdiri dari 18 buah 32-bit sub kunci, dan S–box yang terdiri dari 4 buah 32-bit,
masing-masing memiliki 256 entri.
Langkah-langkah perhitungan atau pembangkitan sub kunci tersebut
adalah sebagai berikut: (1) Inisialisasi P-array yang pertama dan juga empat S–
box, berurutan, dengan string yang terdiri dari digit–digit heksadesimal dari Pi,
tidak termasuk angka tiga di awal; (2) XOR-kan P1 dengan 32-bit awal kunci,
XOR – kan P2 dengan 32-bit berikutnya dari kunci, dan seterusnya untuk semua
bit kunci; (3) Ulangi siklus seluruh bit kunci secara berurutan sampai seluruh P–
array ter – XOR – kan dengan bit-bit kunci; (4) Enkripsikan string yang
seluruhnya nol (all-zero string) dengan algoritma Blowfish, menggunakan
subkunci yang telah dideskripsikan pada langkah 1 dan 2; (5) Gantikan P1 dan P2
dengan keluaran dari langkah 3; (6) Enkripsikan keluaran langkah 3 menggunakan
algoritma Blowfish dengan subkunci yang telah dimodifikasi; (7) Gantikan P3 dan
P4 dengan keluaran dari langkah 5; (8) Lanjutkan langkah-langkah di atas,
gantikan seluruh elemen P-array dan kemudian keempat S-box secara berurutan,
dengan hasil keluaran algoritma Blowfish yang terus-menerus berubah.
Proses enkripsi algoritma Blowfish dalam bentuk blok diagram
ditunjukkan pada Gambar 1.
2
Gambar 1 Blok Diagram Algoritma Enkripsi Blowfish [3]
Pada langkah kedua, telah dituliskan mengenai penggunaan fungsi F. Fungsi F
adalah: bagi XL menjadi empat bagian 8-bit: a, b, c dan d, sehingga didapat
Persamaan 1.
F(XL) = ((S1,a + S2,b mod 232) XOR S3,c) + S4,d mod 232 (1)
Proses dekripsi yang dilakukan algoritma Blowfish hampir sama dengan proses
enkripsi, kecuali bahwa P1, P2,…, P18 yang digunakan pada urutan yang terbalik
(reverse). Algoritmanya dapat dinyatakan sebagai berikut:
For i = 1 to16 do
XRi = XLi-1 ⊕ P19-i;
XLi = F[XRi] ⊕ XRi-1;
XL17 = XR16 ⊕ P1;
XR17 = XL16 ⊕ P2;
Blok diagram dekripsi algoritma Blowfish ditunjukkan pada Gambar 2 .
Gambar 2 Blok Diagram Dekripsi Blowfish [4]
Kompresi data (pemampatan data) merupakan pengurangan ukuran suatu data
menjadi ukuran yang lebih kecil dari aslinya. Kompresi data digunakan untuk
mengurangkan jumlah bit-bit yang dihasilkan dari setiap simbol yang muncul.
Teknik kompresi ini diharapkan dapat mengurangi (memperkecil ukuran data)
dalam ruang penyimpanan [5]. Algoritma Huffman termasuk ke dalam kelas yang
menggunakan metode statik. Metode statik adalah metode yang selalu
menggunakan peta kode yang sama, metode ini membutuhkan dua fase (two-
3
pass): fase pertama untuk menghitung probabilitas kemunculan tiap simbol /
karakter dan menentukan peta kodenya, fase kedua untuk mengubah pesan
menjadi kumpulan kode yang akan ditransmisikan. Sedangkan berdasarkan teknik
pengkodean simbol yang digunakan, algoritma Huffman menggunakan metode
symbolwise. Metode symbolwise adalah metode yang menghitung peluang
kemunculan dari setiap simbol dalam satu waktu, dimana simbol yang lebih sering
muncul diberi kode lebih pendek dibandingkan simbol yang jarang muncul [6].
Proses pembentukan pohon Huffman menggunakan kode Huffman pada
dasarnya merupakan kode prefiks (prefix code). Kode prefiks adalah himpunan
yang berisi sekumpulan kode biner, dimana pada kode prefiks ini tidak ada kode
biner yang menjadi awal bagi kode biner yang lain. Kode prefiks biasanya
direpresentasikan sebagai pohon biner yang diberikan nilai atau label. Untuk
cabang kiri pada pohon biner diberi label 0, sedangkan cabang kanan pada pohon
biner diberi label 1. Rangkaian bit yang terbentuk pada setiap lintasan dari akar ke
daun merupakan kode prefiks untuk karakter yang berpadanan. Pohon biner ini
biasa disebut pohon Huffman [7].
3.
Metode dan Perancangan Sistem
Penelitian yang dilakukan, diselesaikan melalui tahapan penelitian yang
terbagi dalam empat tahapan, yaitu: (1) Identifikasi masalah dan Studi literatur,
(2) Perancangan sistem, (3) Implementasi Sistem, (4) Pengujian sistem dan
analisis hasil pengujian.
Gambar 3 Tahapan Penelitian
Tahapan penelitian pada Gambar 3, dapat dijelaskan sebagai berikut.
Tahap pertama: Identifikasi Masalah dan Studi literatur, yaitu mengidentifikasi
masalah-masalah yang akan dibahas, serta mencari dan mendapatkan data dan
literatur yang berkaitan dengan metode kriptografi Blowfish, dan algoritma
Huffman untuk proses kompresi dan dekompresi. Tahap kedua: Perancangan
Sistem meliputi perancangan proses enkripsi dan proses dekripsi dengan
menggunakan algoritma blowfish serta proses kompresi dan dekompresi data
dengan menggunakan algoritma Huffman dalam sistem yang akan dibangun dalam
penelitian ini. Tahap ketiga: Implementasi Sistem, yaitu membangun aplikasi
4
sesuai dengan perancangan proses pada tahap kedua. Tahap keempat: Pengujian
Sistem dan Analisis Hasil Pengujian, yaitu dilakukan pengujian terhadap
pengaruh ukuran data, waktu proses, dan kualitas data, serta melihat hasil yang
diberikan apakah sesuai dengan konsep metode penerapan kriptografi blowfish
dan algoritma Huffman sebagai algoritma kompresi data.
Proses utama dalam sistem yang dibangun, dibedakan menjadi dua yaitu
proses kompresi menggunakan algoritma Huffman, dan proses enkripsi
menggunakan algoritma blowfish. Proses kompresi data dapat dijelaskan dengan
diagram dalam bentuk flowchart yang ditunjukkan pada Gambar 4. Selanjutnya
proses dekompresi data yang terjadi dalam sistem menggunakan algoritma
Huffman, ditunjukkan pada Gambar 5.
Gambar 4 Proses Kompresi Data
Gambar 5 Proses Dekompresi Data
Proses Kompresi data pada Gambar 4 dapat dimulai dengan memasukkan
file. Selanjutnya file yang telah dimasukkan akan diproses dengan perhitungan
karakter yang muncul. Kemudian akan dilanjutkan dengan pembentukan Huffman
tree. Ini bertujuan untuk membaca karakter di dalam teks dan untuk menghitung
frekuensi kemunculan dari setiap karakter. Setiap karakter penyusun teks
dinyatakan sebagai pohon bersimpul tunggal. Setelah pembentukan Huffman tree
selesai, maka kemudian akan dilanjutkan dengan pengolahan Huffman file atau
pengolahan pengkodean data. Akhir dari setiap proses / output yang berbeda
dengan file aslinya sebelum dilakukan kompresi data.
Proses Dekompresi pada Gambar 5 dapat dimulai dengan memasukkan
file. File yang dimasukkan berupa file teks dengan format *.txt. Selanjutnya file
tersebut kemudian diproses untuk membaca setiap karakter yang muncul. Seperti
yang terjadi sebelumnya pada proses kompresi data, pada proses dekompresi juga
membentuk Huffman tree. Pembentukan Huffman tree bertujuan untuk membaca
karakter di dalam teks dan untuk menghitung frekuensi kemunculan dari setiap
karakter. Selanjutnya membaca kode dari hasil kompresi. Setelah membaca kode
yang ada dari hasil kompresi data, proses decoding dijalankan untuk
mengembalikan ukuran dari file asli. Akhir dari setiap proses dekompresi yang
terjadi, maka output file dari sistem berupa data asli. Dalam sistem ini, algoritma
5
yang digunakan pada proses enkripsi data yaitu algoritma blowfish. Proses
enkripsi algoritma blowfish dalam betuk flowchart, dapat dijelaskan pada Gambar
6.
Gambar 6 Proses Enkripsi Algoritma Blowfish
Gambar 6 menunjukkan proses enkripsi dengan menggunakan algoritma
blowfish yang dapat dijelaskan sebagai berikut. Masukan berupa nilai xl, xr dan
panjang tabel proses. Jika nilai xl dan xr sudah dimasukkan, maka nilai xl yang
pertama diatur menjadi xl = xl P[0]. Selanjutnya nilai i dapat diatur menjadi i =
1, xr = xr (f (xl) P[i]) dan nilai xl = xl (f (xr) P [i + 1]). Jika nilai i diatur
menjadi i = i + 2, lakukanlah perulangan hingga nilai i = 16. Selanjutnya nilai i
diatur menjadi i = i – 2, lakukanlah perulangan hingga nilai i = 1. Jika nilai i = 0,
xr = xr P [0].
Proses dekripsi tidak berbeda jauh dengan proses enkripsi. Proses dekripsi
dengan menggunakan algoritma blowfish, dijelaskan sebagai berikut. Masukan
berupa nilai xl, xr, dan panjang tabel. Jika nilai xl yang pertama diatur menjadi xl
= xl P [17]. Selanjutnya nilai i = 16, xr = xr (f(xl P [i] dan nilai xl = xl (f
(xr) P [i-1] ).
Proses dekripsi dengan menggunakan algoritma blowfish dalam bentuk
flowchart, ditunjukkan pada Gambar 7.
6
Gambar 7 Proses Dekripsi Algoritma Blowfish
4. Hasil dan Pembahasan
Hasil implementasi sistem berdasarkan rancangan sistem yang dibuat,
dapat dijelaskan sebagai berikut.
Gambar 8 Tampilan Proses Enkripsi
Gambar 9 Tampilan Cipherteks
Gambar 8 merupakan tampilan proses enkripsi pada aplikasi dan Gambar 9
merupakan tampilan cipherteks yang dihasilkan. Pada proses enkripsi, user
mencari dan menentukan lokasi plainteks yang merupakan lokasi dimana file
plainteks yang akan dienkripsi dan akan tampil pada info file. Setelah pencarian
file plainteks, maka proses selanjutnya memasukkan kunci enkripsi algoritma
blowfish dan memilih button enkripsi untuk menjalankan proses enkripsi. Setelah
proses enkripsi sukses, maka user menentukan lokasi cipherteks yang merupakan
lokasi dimana hasil enkripsi (cipherteks) akan disimpan.
7
Gambar 10 Tampilan Proses Dekripsi
Gambar 11 Tampilan Plainteks
Gambar 10 merupakan tampilan proses dekripsi pada aplikasi dan Gambar 11
merupakan tampilan dari plainteks yang telah berhasil didekripsi. Pada proses
dekripsi, user mencari dan menentukan lokasi cipherteks yang merupakan lokasi
dimana file cipherteks yang akan didekripsi dan akan muncul pada info file.
Setelah pencarian file cipherteks, maka proses selanjutnya memasukkan kunci
dekripsi algoritma blowfish dan memilih button dekripsi untuk menjalankan
proses dekripsi. Kunci untuk dekripsi harus sama panjang dengan enkripsi.
Setelah pemberitahuan proses dekripsi sukses, maka user menentukan lokasi
plainteks yang merupakan lokasi dimana hasil dekripsi (plainteks) akan disimpan.
Kode Program 1 Perintah Untuk Proses Enkripsi
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
List combine = new List();
byte[] d = Padding(data);
var b = new Blowfish(key);
for (int i = 0; i < d.Length; i += 8)
{
byte[] block = new byte[8];
Array.Copy(d, i, block, 0, 8);
b.Encipher(block, block.Length);
combine.AddRange(block);
}
combine.Insert(0, (byte)(d.Length - data.Length));
return combine.ToArray();
Kode Program 1 merupakan perintah yang digunakan untuk melakukan
proses enkripsi menggunakan algoritma Blowfish. Proses enkripsi dilakukan per
blok (perintah pada baris 6). Hasil enkripsi (ciphertext) yang juga dalam bentuk
blok, dikumpulkan kembali ke dalam variabel combine.
Proses enkripsi hampir sama dengan proses dekripsi. Kunci yang
digunakan dalam proses dekripsi harus sama dengan proses enkripsi. Untuk
proses dekripsi dapat dijelaskan pada Kode Program 2.
Kode Program 2 Perintah Untuk Proses Dekripsi
1.
2.
3.
4.
5.
6.
7.
8.
9.
List combine = new List();
var b = new Blowfish(key);
int padding = data[0];
byte[] d = new byte[data.Length - 1];
Array.Copy(data, 1, d, 0, d.Length);
for (int i = 0; i < d.Length; i += 8){
byte[] block = new byte[8];
Array.Copy(d, i, block, 0, 8);
b.Decipher(block, block.Length);
8
10.
11.
12.
combine.AddRange(block);}
combine.RemoveRange(combine.Count - padding, padding);
return combine.ToArray();
Kode Program 2 merupakan perintah yang digunakan untuk melakukan
proses dekripsi menggunakan algoritma Blowfish. Proses dekripsi dilakukan per
blok (perintah pada baris 7). Hasil dekripsi (plaintext) dalam bentuk blok,
dikumpulkan kembali ke dalam variabel combine. Selanjutnya, algoritma yang
digunakan dalam proses kompresi dan dekompersi data yaitu algoritma Huffman.
File yang akan dikompresi adalah file berformat txt.
Kode Program 3 Perintah Untuk Kompresi Data
1. class Compression
2. {
3.
public static byte[] Compress(byte[] data)
4.
{
5.
HuffmanTree huff = new HuffmanTree();
6.
String base64String = Convert.ToBase64String(data);
7.
huff.Build(base64String);
8.
BitArray encoded = huff.Encode(base64String);
9.
int tambahan = 8 - (encoded.Count % 8);
10.
byte[] bytesData = ConvertToByte(encoded, tambahan);
11.
byte[] tree = Encoding.Default.GetBytes(huff.PrintFrequencies());
12.
byte[] panjangTree = BitConverter.GetBytes((short)tree.Length);
13.
byte panjangPad = (byte)tambahan;
14.
List list = new List();
15.
list.AddRange(panjangTree);
16.
list.Add(panjangPad);
17.
list.AddRange(tree);
18.
list.AddRange(bytesData);
19.
return list.ToArray(); }
Kode Program 3 merupakan perintah yang digunakan untuk melakukan
proses kompresi. File dihitung frekuensi kemunculan dan mengubah ke dalam bitbit. Output dari pada proses kompresi adalah file teks berformat *.huffman.
Ada 3 langkah untuk melakukan proses kompresi yaitu memilih file yang
akan dikompresikan, dan akan terdapat info berupa info file pada panel info file
berisi nama file, letak file berada, dan ukuran file dalam satuan byte. Selanjutnya
akan ada button Compress. Button compress berfungsi untuk menjalankan proses
kompresi file. Selanjutnya apabila proses selesai, maka akan tampil waktu proses
kompresi dan jumlah byte pada textbox yang tersedia. Proses kompresi file dapat
dilihat pada Gambar 12.
Gambar 12 Form Proses Kompresi File
9
Kode Program 4 merupakan perintah untuk melakukan proses dekompresi
file yang akan dipanggil dan dijalankan pada saat button decompress dipilih.
Kode Program 4 Perintah Untuk Dekompresi Data
1.
2.
3.
4.
5.
6.
7.
public static byte[] Extract(byte[] data)
{
byte[] panjangTree = new byte[] { data[0], data[1] };
byte panjangPad = data[2];
byte[] tree = new byte[BitConverter.ToInt16(panjangTree, 0)];
Array.Copy(data, 3, tree, 0, tree.Length);
byte[] bytesData = new byte[data.Length - tree.Length - 1 panjangTree.Length];
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
int panjangHeader = panjangTree.Length + 1 + tree.Length;
Array.Copy(data, panjangHeader, bytesData, 0, bytesData.Length);
BitArray bits = ConvertToBitArray(bytesData, panjangPad);
string treeString = Encoding.Default.GetString(tree);
HuffmanTree huff = new HuffmanTree();
huff.LoadTree(treeString);
string base64 = huff.Decode(bits);
byte[] hasil = Convert.FromBase64String(base64);
return hasil;
}
Proses kompresi tidak berbeda jauh dengan proses dekompresi, yaitu
memilih file yang akan dikembalikan, dan akan terdapat info berupa info file pada
panel info file berisi nama file, letak file berada, dan ukuran file dalam satuan byte.
Selanjutnya akan ada button Decompress. Button decompress berfungsi untuk
menjalankan proses dekompresi file. Selanjutnya apabila proses selesai, maka
akan tampil waktu proses dekompresi dan jumlah byte pada textbox yang tersedia.
Proses dekompresi file dapat dilihat pada Gambar 13.
Gambar 13 Form Proses Dekompresi File
File yang akan digunakan untuk pengujian aplikasi yang dibuat ini adalah
file bertipe *.txt, dan membandingkan yang berbeda dalam enkripsi data untuk
melihat perbandingan kecepatan dan ukuran file.
Beberapa pengujian dilakukan, dijelaskan sebagai berikut. Pengujian
Proses Enkripsi – Proses Kompresi. Aplikasi yang dibangun dengan
menggunakan algoritma kompresi Huffman dan algoritma Blowfish, dapat
memperkecil dan mengembalikan ukuran file data text, serta dapat mengenkripsi
10
dan mendekripsi data text dengan baik. Hasil pengujian digambarkan dalam
bentuk grafik terlihat pada Gambar 14.
Gambar 14 Grafik Hasil Pengujian Panjang Plaintext Berdasarkan Ukuran File Dengan Kunci
Yang Sama
Gambar 14 merupakan grafik hasil pengujian jumlah karakter berdasarkan
ukuran file dengan kunci yang sama. Berdasarkan hasil pengujian aplikasi pada
data text, dapat diujikan juga waktu yang dibutuhkan dalam proses enkripsi,
dekripsi, kompresi dan dekompresi, ditunjukkan pada Gambar 15 dan Gambar 16.
Gambar 15 Pengujian Panjang Karakter
Plainteks terhadap Waktu Enkripsi
Gambar 16 Pengujian Panjang Karakter
Plainteks terhadap Waktu Dekripsi
Gambar 15 dan Gambar 16 menjelaskan tentang waktu dalam proses
enkripsi dan dekripsi. Proses dekripsi lebih sedikit membutuhkan waktu
dibandingkan dengan proses enkripsi yang dilakukan. Ukuran file berpengaruh
terhadap waktu dalam proses enkripsi atau dekripsi. Grafik pada Gambar 16 dapat
dilihat pada jumlah karakter lebih dari pada 6890 karakter maka berpengaruh pada
waktu dekripsi. Walaupun tidak melewati waktu lama proses enkripsi, tetapi
pencapaian waktu yang sedikit berbeda menunjukkan bahwa kapasitas ukuran
karakter juga berpengaruh dalam proses dekripsi. Berdasarkan hasil pengujian
11
aplikasi pada data text, dapat diujikan juga waktu yang dibutuhkan dalam proses
kompresi dan dekompresi yang dapat dilihat pada Gambar 17 dan Gambar 18.
Gambar 17 Pengujian Panjang Karakter
Plainteks terhadap Waktu Kompresi
Gambar 18 Pengujian Panjang Karakter
Plainteks terhadap Waktu Dekompresi
Gambar 17 dan Gambar 18 menjelaskan tentang waktu dalam proses
kompresi dan dekompresi file. Proses dekompresi lebih sedikit membutuhkan
waktu dibandingkan dengan proses kompresi yang dilakukan. Ukuran file
berpengaruh terhadap waktu dalam proses kompresi atau dekompresi. Grafik
waktu kompresi dan dekompresi menunjukkan bahwa semakin banyak jumlah
karakter maka semakin banyak waktu yang dibutuhkan dalam proses kompresi
dan dekompresi. Hasil Pengujian pada file text (.txt) dengan kunci enkripsi yang
berbeda, terlihat pada Gambar 19.
Gambar 19 Grafik Hasil Pengujian Panjang Plaintext Berdasarkan Ukuran File Dengan Kunci berbeda.
Berdasarkan hasil pengujian aplikasi pada data text dengan kunci yang
berbeda pada Gambar 19, dapat disimpulkan bahwa panjang kunci enkripsi yang
berbeda tidak berpengaruh pada ukuran file hasil dari proses yang dijalankan.
Berdasarkan hasil pengujian aplikasi pada data text, dapat diujikan juga waktu
yang dibutuhkan dalam proses enkripsi, dekripsi, kompresi dan dekompresi yang
dapat dijelaskan pada Gambar 20 dan Gambar 21.
12
Gambar 20 Pengujian Panjang Kunci terhadap
Waktu Enkripsi
Gambar 21 Pengujian Panjang Kunci terhadap
Waktu Dekripsi
Gambar 20 dan Gambar 21 menjelaskan tentang waktu dalam proses
enkripsi dan dekripsi dengan kunci yang berbeda. Proses dekripsi lebih sedikit
membutuhkan waktu dibandingkan dengan proses enkripsi. Panjang kunci
berpengaruh terhadap waktu proses enkripsi atau dekripsi. Semakin banyak kunci
yang digunakan dalam proses enkripsi, maka semakin banyak juga waktu yang
dibutuhkan. Grafik pada Gambar 20 dan Gambar 21 menghasilkan waktu yang
berbeda sesuai dengan panjang kunci. Hal ini disebabkan karena kapasitas memori
dan penggunaan kunci yang tidak bervariasi. Proses kompresi dan dekompresi file
teks menggunakan algoritma Huffman. Berdasarkan hasil pengujian aplikasi pada
data text dengan panjang kunci yang berbeda, dapat diujikan juga waktu yang
dibutuhkan dalam proses kompresi dan dekompresi yang dapat dilihat pada
Gambar 22 dan Gambar 23.
Gambar 22 Pengujian Panjang Kunci terhadap
Waktu Kompresi
Gambar 23 Pengujian Panjang Kunci terhadap
Waktu Dekompresi
Gambar 22 dan Gambar 23 menjelaskan tentang waktu dalam proses
kompresi dan dekompresi file hasil enkripsi dengan kunci yang berbeda. Proses
dekompresi lebih sedikit membutuhkan waktu dibandingkan dengan proses
13
kompresi yang dilakukan. Ukuran file dan panjang kunci berpengaruh terhadap
waktu proses kompresi atau dekompresi.
Pengujian Proses Kompresi - Proses Enkripsi. Pengujian pada file text (.txt)
dengan kunci enkripsi yang sama dimulai dari proses kompresi kemudian proses enkripsi,
dapat terlihat pada Gambar 24.
Gambar 24. Grafik Hasil Pengujian Panjang Plaintext Berdasarkan Ukuran File Dengan Kunci yang Sama
Berdasarkan hasil pengujian aplikasi pada data text, dapat diujikan juga
waktu yang dibutuhkan dalam proses enkripsi, dekripsi, kompresi dan dekompresi
yang dapat dilihat pada Gambar 25 dan Gambar 26.
Gambar 25 Pengujian Panjang Karakter Plainteks
terhadap Waktu Kompresi
Gambar 26 Pengujian Panjang Karakter Plainteks
terhadap Waktu Dekompresi
Gambar 25 dan Gambar 26 menjelaskan tentang waktu dalam proses
kompresi dan dekompresi file. Proses dekompresi lebih sedikit membutuhkan
waktu dibandingkan dengan proses kompresi yang dilakukan. Ukuran file cukup
berpengaruh terhadap waktu dalam proses kompresi atau dekompresi. Semakin
besar pesan teks yang akan dikompresikan, maka semakin banyak juga waktu
yang dibutuhkan. Sebaliknya demikian, semakin kecil ukuran pesan teks, maka
14
semakin sedikit waktu yang dibutuhkan dalam proses kompresi ataupun
dekompresi.
Gambar 27 Pengujian Panjang Karakter Plainteks
terhadap Waktu Enkripsi
Gambar 28 Pengujian Panjang Karakter Plainteks
terhadap Waktu Dekripsi
Gambar 27 dan Gambar 28 menjelaskan tentang waktu dalam proses
enkripsi dan dekripsi. Proses dekripsi lebih sedikit membutuhkan waktu
dibandingkan dengan proses enkripsi yang dilakukan. Ukuran file berpengaruh
terhadap waktu dalam proses enkripsi atau dekripsi. Hasil Pengujian pada file text
(.txt) dengan kunci enkripsi yang berbeda, terlihat pada Gambar 29 dan Gambar
30.
Gambar 29 Pengujian Panjang Kunci terhadap
Waktu Kompresi
Gambar 30 Pengujian Panjang Kunci terhadap
Waktu Dekompresi
Gambar 29 dan Gambar 30 menjelaskan tentang waktu dalam proses
kompresi dan dekompresi dengan panjang kunci yang berbeda. Proses kompresi
lebih banyak membutuhkan waktu dibandingkan dengan proses dekompresi.
Grafik pada Gambar 29 dan Gambar 30 menunjukkan bahwa file dengan jumlah
karakter yang kecil dan kunci yang berbeda, membutuhkan waktu yang banyak
dalam proses kompresi dan dekompresi.
Pada proses enkripsi dan dekripsi file teks menggunakan algoritma
blowfish. Berdasarkan hasil pengujian aplikasi pada data text, dapat diujikan juga
15
waktu yang dibutuhkan dalam proses enkripsi dan dekripsi yang dapat dilihat
pada Gambar 31 dan Gambar 32.
Gambar 31 Pengujian Panjang Kunci terhadap
Waktu Enkripsi
Gambar 32 Pengujian Panjang Kunci terhadap
Waktu Dekripsi
Gambar 31 dan Gambar 32 menjelaskan tentang waktu dalam proses
enkripsi dan dekripsi dengan kunci yang berbeda panjangnya. Proses dekripsi
lebih sedikit membutuhkan waktu dibandingkan dengan proses enkripsi yang
dilakukan. Panjang kunci berpengaruh terhadap waktu proses enkripsi atau
dekripsi. Perbedaan proses enkripsi dan dekripsi juga berpengaruh pada proses
kompresi dan dekompresi yang dapat dilihat pada Gambar 33 dan Gambar 34.
Gambar 33 Pengujian Panjang Karakter Plainteks
terhadap Proses Enkripsi yang Berbeda
Gambar 34 Pengujian Panjang Karakter Plainteks
terhadap Proses Dekripsi yang Berbeda
Gambar 33 menunjukkan proses enkripsi yang dilakukan dengan
membandingkan waktu antara proses kompresi dahulu sebelum proses enkripsi
dan proses enkripsi dahulu sebelum proses kompresi. Gambar 34 menunjukkan
proses dekripsi yang dilakukan dengan membandingkan waktu antara proses
dekompresi dahulu sebelum proses dekripsi dan proses dekripsi dahulu sebelum
proses dekompresi. Jika dihitung berdasarkan rata-rata waktu dari masing-masing
proses, maka dapat disimpulkan untuk waktu paling rendah jumlahnya adalah
waktu proses enkripsi-kompresi dan dekompresi-dekripsi dimana 0,06 dan 0,19
lebih sedikit waktunya dibandingkan dengan waktu dari proses kompresi-enkripsi
daan dekripsi-dekompresi dimana 0,61 dan 0,03. Selanjutnya jika dilihat waktu
16
terbanyak dalam setiap proses, maka dapat disimpulkan bahwa waktu pada proses
enkripsi-kompresi dan dekompresi-dekripsi dimana 0,8 dan 0,89 lebih kecil
dibandingkan dengan proses kompresi-enkripsi dan dekripsi-dekompresi dimana
0,98 dan 0,79. Walaupun waktu proses enkripsi-kompresi dan dekompresidekripsi lebih kecil dari pada kompresi-enkripsi dan dekripsi-dekompresi, tetapi
jika dilihat dari sudut kemiringan waktu maka terlihat selisih waktu yang paling
sedikit yaitu pada saat proses kompresi-enkripsi dan dekripsi-dekompresi
dibandingkan dengan proses enkripsi-kompresi dan dekompresi-dekripsi.
5.
Simpulan
Berdasarkan hasil penelitian, pengujian dan analisis terhadap sistem, maka
dihasilkan kesimpulan yaitu kecepatan proses aplikasi bergantung pada besarnya
ukuran file, semakin besar ukuran file maka semakin banyak waktu yang
dibutuhkan untuk proses enkripsi, kompresi, dekompresi, dan dekripsi.
Perbandingan waktu enkripsi lebih sedikit apabila dilakukan sebelum proses
kompresi, sedangkan waktu yang dibutuhkan lebih banyak apabila dilakukan
sesudah proses kompresi. Adapun saran yang dapat diberikan untuk
pengembangan aplikasi ini lebih lanjut adalah penerapan algoritma Huffman dan
kriptogarfi blowfish dalam pengamanan data audio.
6.
Daftar Pustaka
[1] Pratiwi, A. E., Lhaksmana, K. M., Rizal, Setia, Juli 2011. Implementasi
Enkripsi Data Dengan Algoritma Blowfish Menggunakan Java Pada Aplikasi
Email, Jurnal PA : Politeknik Telkom Bandung.
[2] Kosasih, D., Pakereng, M. A. I., 2013. Perancangan dan Implementasi
Aplikasi Steganography Menggunakan Metode Enchanced Audio
Steganography (EAS) Pada Data File Terkompresi. Skripsi-FTI. Universitas
Kristen Satya Wacana.
[3] Schneier, B., 1995. Applied Cryptography (Second Edition).
[4] Sitinjak, S., Fauziah Y., Juwairiah. 2010. Aplikasi Kriptografi File
Menggunakan Blowfish. SemnasIF : UPN “Veteran” Yogyakarta.
[5] Yusioktria, 2005. Simulasi Algoritma Huffman Guna Mengompresi Data
Pada Ponsel yang Berbasis Sistem Operasi Symbian.http://garuda.dikti.go.id/
jurnal/detil/id/ (30/06/2014)
[6] Batubara, 2009. Implementasi Algoritma Huffman dan algoritma Cipher
Substitusi Alfabet Tunggal pada Teks SMS. Ilmu computer, Medan, 2009.
http://repository.usu.ac.id/bitstream/123456789/25384/7/Cover.pdf.
(10/07/2014)
[7] Liliana, 2005. Pembuatan Perangkat Lunak Untuk Kompresi File Text
Dengan Menggunakan Huffman Tree. Teknik Informatika, Surabaya, 2005.
17
Blowfish dalam Pengamanan Data File
Artikel Ilmiah
Peneliti:
Juneth N. Wattimena (672009078)
Alz Danny Wowor, S.Si., M.Cs.
Dian W. Chandra, S.Kom., M.Cs.
Program Studi Teknik Informatika
Fakultas Teknologi Informasi
Universitas Kristen Satya Wacana
Salatiga
Januari 2015
Implementasi Algoritma Huffman dan Kriptografi
Blowfish dalam Pengamanan Data File
Artikel Ilmiah
Diajukan kepada
Fakultas Teknologi Informasi
untuk memperoleh Gelar Sarjana Komputer
Peneliti:
Juneth N. Wattimena (672009078)
Alz Danny Wowor, S.Si., M.Cs.
Dian W. Chandra, S.Kom., M.Cs.
Program Studi Teknik Informatika
Fakultas Teknologi Informasi
Universitas Kristen Satya Wacana
Salatiga
Januari 2015
i
ii
iii
iv
v
vi
Implementasi Algoritma Huffman dan Kriptografi
Blowfish dalam Pengamanan Data File
1)
Juneth N. Wattimena, 2) Alz Danny Wowor, 3) Dian W. Chandra
Fakultas Teknologi Informasi
Universitas Kristen Satya Wacana
Jl. Diponegoro 52-60, Salatiga 50711, Indonesia
2)
1)
E-mail: [email protected], [email protected],
3)
[email protected]
Abstract
Cryptography is a way to encode information so that safety is maintained.
Examples of cryptographic techniques used in the encryption process or descriptions that
blowfish algorithm. Blowfish algorithm is a symmetric key algorithm by exploiting the
block of bits in the process of encryption and decryption of data. To reduce the excessive
size after the message in encryption the Huffman algorithm used for compression and
decompression process. Tests were performed using a data file format that is encrypted
and compressed text. The results showed that the data security applications built to
compress files in text format and can restore the file size to its original shape. So also
with the encryption process, can encrypt a file by changing the plaintext files compressed
to form the ciphertext can not be recognized and can restore files ciphertext to plaintext
file. Comparison of encryption less time if done before the compression process, while it
takes more time if done after the compression process.
Keywords: Cryptography, Blowfish, Huffman Algorithm.Cryptography, Affine Cipher,
Cryptanalysis, Known Plaintext Attack, Gamma Function, Hyperbolic Function,
Abstrak
Kriptografi merupakan cara untuk menyandikan informasi agar keamananya tetap
dijaga. Contoh teknik kriptografi yang digunakan dalam proses enkripsi atau dekripsi
yaitu algoritma blowfish. Algoritma blowfish merupakan algoritma kunci simetris dengan
memanfaatkan block bit dalam proses enkripsi dan dekripsi data. Untuk mengurangi
ukuran yang berlebihan setelah pesan dienkripsi maka digunakan algoritma Huffman
untuk proses kompresi dan dekompresi. Pengujian yang dilakukan menggunakan data file
berformat teks yang dienkripsikan dan dikompresi. Hasil penelitian menunjukkan bahwa
aplikasi pengamanan data yang dibangun dapat mengkompresi file berformat teks dan
dapat mengembalikan ukuran file ke bentuk semula. Begitu juga dengan proses enkripsi,
dapat mengenkripsikan file dengan merubah file plaintext terkompresi ke bentuk
ciphertext sehingga tidak dapat diketahui dan dapat mengembalikan file ciphertext ke file
plaintext. Perbandingan waktu enkripsi lebih sedikit apabila dilakukan sebelum proses
kompresi, sedangkan waktu yang dibutuhkan lebih banyak apabila dilakukan sesudah
proses kompresi.
Kata Kunci: Kriptografi, Blowfish, Algoritma Huffman.
__________________________________________________________________
1)
Mahasiswa Program Studi Teknik Informatika, Fakultas Teknologi Informasi, Universitas
Kristen Satya Wacana
2)
Staff Pengajar Fakultas Teknologi Informasi, Universitas Kristen Satya Wacana
3)
Staff Pengajar Fakultas Teknologi Informasi, Universitas Kristen Satya Wacana
vii
1.
Pendahuluan
Informasi menentukan hampir setiap elemen dari kehidupan manusia.
Seiring dengan berkembangnya cara pengiriman pesan, berkembang pula cara
menyembunyikan pesan dan bagaimana agar orang lain tidak mengetahui isi
pesan walaupun pesan tersebut ditemukan. Kriptografi merupakan cara untuk
menyandikan informasi agar keamanannya tetap dijaga. Tujuan menggunakan
teknik kriptografi adalah untuk mengamankan informasi penting dari pihak luar
yang dapat menyalahgunakan informasi. Teknik kriptografi terdiri dari beberapa
algoritma, salah satunya yaitu algoritma blowfish. Algoritma blowfish merupakan
algoritma kunci simetris dengan memanfaatkan block bit dalam proses enkripsi
dan dekripsi data.
Dalam penerapannya, teknik kriptografi perlu dipertimbangkan tentang
masalah waktu yang dibutuhkan dalam proses enkripsi dan dekripsi. Jika ukuran
file semakin besar maka waktu yang dibutuhkan dalam proses enkripsi juga
semakin besar dan kecurigaan akan muncul karena ukuran file yang bertambah
dari ukuran file semula. Untuk menghindari ukuran data yang besar dalam ukuran
data yang semula, maka digunakan teknik kompresi. Tujuan dari kompresi data
adalah untuk merepresentasikan suatu data digital dengan sedikit mungkin bit,
tetapi tetap mempertahankan kebutuhan minimum untuk membentuk kembali data
aslinya. Teknik kompresi data yang digunakan yaitu Huffman Tree.
Berdasarkan latar belakang tersebut, maka dilakukan penelitian yang
bertujuan untuk merancang dan mengimplementasikan aplikasi pengamanan data
file menggunakan metode kriptografi blowfish, serta menggunakan algoritma
Huffman untuk memperkecil ukuran file teks (*.txt), dengan maksud untuk
mengoptimalkan kecepatan proses enkripsi dan dekripsi serta meminimalkan
ukuran data yang berlebihan.
2.
Tinjauan Pustaka
Ada beberapa penelitian terdahulu yang menjadi acuan dengan penelitian ini,
yaitu: pada penelitian yang berjudul “Implementasi Enkripsi Data Dengan
Algoritma Blowfish Menggunakan Java Pada Aplikasi Email”, menyatakan bahwa
algoritma Blowfish dapat digunakan untuk mengamankan data pada aplikasi email
dikarenakan algoritma Blowfish dapat berjalan pada jalur komunikasi atau
enkripsi file otomatis. Proses enkripsi dan dekripsi menggunakan key yang
memiliki panjang maksimum 56 karakter dan telah disepakati oleh kedua belah
pihak [1]. Penelitian lain yang berkaitan dengan penelitian ini, yaitu berjudul
“Perancangan dan Implementasi Aplikasi Steganography Menggunakan Metode
Enchanced Audio Steganography (EAS) Pada Data File Terkompresi”. Dalam
penelitian ini dijelaskan bahwa sebelum disisipkan, file documen dienkripsi
terlebih dahulu menggunakan algoritma gost. Metode kompresi yang digunakan
yaitu menggunakan algoritma Huffman. Hasil dalam penelitian ini, adalah sebuah
aplikasi yang dibangun bertujuan untuk membantu para pengguna untuk menjaga
kerahasiaan data yang disisipkan dalam file audio dan untuk mengatasi masalah
1
mengenai besarnya kapasitas penyimpanan (storage) sebagai wadah penyimpanan
data rahasia. [2].
Berdasarkan penelitian terdahulu yang membahas tentang penerapan
algoritma Huffman dan kriptografi blowfish, maka akan dilakukan penelitian yang
membahas tentang implementasi algoritma Huffman dan kriptografi blowfish
dalam pengamanan data file yang bertujuan untuk mengoptimalkan waktu proses
enkripsi-deskripsi file dengan ukuran data yang besar. Penelitian ini menghasilkan
aplikasi yang dapat menyembunyikan pesan rahasia yang terkompresi. Pesan yang
dienkripsikan berupa file teks (*.txt). Penelitian yang dilakukan akan melihat
apakah terjadi perubahan terhadap waktu, kualitas dan besar ukuran data setelah
melalui proses enkripsi, proses dekripsi, proses kompresi, dam proses dekompresi
data file. Program yang digunakan untuk membuat aplikasi pengamanan file teks
ini adalah Microsoft Visual Studio 2010 yang berbahasa C#.
Algoritma kriptografi yang diterapkan dalam penelitian ini adalah
algoritma blowfish. Algoritma Blowfish adalah metode kriptografi dengan kunci
simetri, yang berarti menggunakan kunci yang sama untuk melakukan enkripsi
dan dekripsi file. Algoritma blowfish termasuk dalam enkripsi block cipher 64-bit
dangan panjang kunci yang bervariasi antara 32-bit sampai 448-bit. Algoritma
Blowfish terdiri atas dua bagian, yaitu Key–Expansion (pengembangan kunci) dan
data encryption (enkripsi data) [3]. Key-Expansion berfungsi merubah kunci
(minimum 32-bit, maksimum 448-bit) menjadi beberapa array subkunci (subkey)
dengan total 4168 byte (18 x 32-bit untuk P-array dan 4 x 256 x 32-bit untuk Sbox sehingga totalnya 33344 bit atau 4168 byte). Kunci disimpan dalam K-array:
K1, K2, ... Kj 1 ≤j ≤14. Kunci–kunci ini yang dibangkitkan (generate) dengan
menggunakan sub kunci yang harus dihitung terlebih dahulu sebelum enkripsi
atau dekripsi data. Sub–sub kunci yang digunakan terdiri dari: P-array yang
terdiri dari 18 buah 32-bit sub kunci, dan S–box yang terdiri dari 4 buah 32-bit,
masing-masing memiliki 256 entri.
Langkah-langkah perhitungan atau pembangkitan sub kunci tersebut
adalah sebagai berikut: (1) Inisialisasi P-array yang pertama dan juga empat S–
box, berurutan, dengan string yang terdiri dari digit–digit heksadesimal dari Pi,
tidak termasuk angka tiga di awal; (2) XOR-kan P1 dengan 32-bit awal kunci,
XOR – kan P2 dengan 32-bit berikutnya dari kunci, dan seterusnya untuk semua
bit kunci; (3) Ulangi siklus seluruh bit kunci secara berurutan sampai seluruh P–
array ter – XOR – kan dengan bit-bit kunci; (4) Enkripsikan string yang
seluruhnya nol (all-zero string) dengan algoritma Blowfish, menggunakan
subkunci yang telah dideskripsikan pada langkah 1 dan 2; (5) Gantikan P1 dan P2
dengan keluaran dari langkah 3; (6) Enkripsikan keluaran langkah 3 menggunakan
algoritma Blowfish dengan subkunci yang telah dimodifikasi; (7) Gantikan P3 dan
P4 dengan keluaran dari langkah 5; (8) Lanjutkan langkah-langkah di atas,
gantikan seluruh elemen P-array dan kemudian keempat S-box secara berurutan,
dengan hasil keluaran algoritma Blowfish yang terus-menerus berubah.
Proses enkripsi algoritma Blowfish dalam bentuk blok diagram
ditunjukkan pada Gambar 1.
2
Gambar 1 Blok Diagram Algoritma Enkripsi Blowfish [3]
Pada langkah kedua, telah dituliskan mengenai penggunaan fungsi F. Fungsi F
adalah: bagi XL menjadi empat bagian 8-bit: a, b, c dan d, sehingga didapat
Persamaan 1.
F(XL) = ((S1,a + S2,b mod 232) XOR S3,c) + S4,d mod 232 (1)
Proses dekripsi yang dilakukan algoritma Blowfish hampir sama dengan proses
enkripsi, kecuali bahwa P1, P2,…, P18 yang digunakan pada urutan yang terbalik
(reverse). Algoritmanya dapat dinyatakan sebagai berikut:
For i = 1 to16 do
XRi = XLi-1 ⊕ P19-i;
XLi = F[XRi] ⊕ XRi-1;
XL17 = XR16 ⊕ P1;
XR17 = XL16 ⊕ P2;
Blok diagram dekripsi algoritma Blowfish ditunjukkan pada Gambar 2 .
Gambar 2 Blok Diagram Dekripsi Blowfish [4]
Kompresi data (pemampatan data) merupakan pengurangan ukuran suatu data
menjadi ukuran yang lebih kecil dari aslinya. Kompresi data digunakan untuk
mengurangkan jumlah bit-bit yang dihasilkan dari setiap simbol yang muncul.
Teknik kompresi ini diharapkan dapat mengurangi (memperkecil ukuran data)
dalam ruang penyimpanan [5]. Algoritma Huffman termasuk ke dalam kelas yang
menggunakan metode statik. Metode statik adalah metode yang selalu
menggunakan peta kode yang sama, metode ini membutuhkan dua fase (two-
3
pass): fase pertama untuk menghitung probabilitas kemunculan tiap simbol /
karakter dan menentukan peta kodenya, fase kedua untuk mengubah pesan
menjadi kumpulan kode yang akan ditransmisikan. Sedangkan berdasarkan teknik
pengkodean simbol yang digunakan, algoritma Huffman menggunakan metode
symbolwise. Metode symbolwise adalah metode yang menghitung peluang
kemunculan dari setiap simbol dalam satu waktu, dimana simbol yang lebih sering
muncul diberi kode lebih pendek dibandingkan simbol yang jarang muncul [6].
Proses pembentukan pohon Huffman menggunakan kode Huffman pada
dasarnya merupakan kode prefiks (prefix code). Kode prefiks adalah himpunan
yang berisi sekumpulan kode biner, dimana pada kode prefiks ini tidak ada kode
biner yang menjadi awal bagi kode biner yang lain. Kode prefiks biasanya
direpresentasikan sebagai pohon biner yang diberikan nilai atau label. Untuk
cabang kiri pada pohon biner diberi label 0, sedangkan cabang kanan pada pohon
biner diberi label 1. Rangkaian bit yang terbentuk pada setiap lintasan dari akar ke
daun merupakan kode prefiks untuk karakter yang berpadanan. Pohon biner ini
biasa disebut pohon Huffman [7].
3.
Metode dan Perancangan Sistem
Penelitian yang dilakukan, diselesaikan melalui tahapan penelitian yang
terbagi dalam empat tahapan, yaitu: (1) Identifikasi masalah dan Studi literatur,
(2) Perancangan sistem, (3) Implementasi Sistem, (4) Pengujian sistem dan
analisis hasil pengujian.
Gambar 3 Tahapan Penelitian
Tahapan penelitian pada Gambar 3, dapat dijelaskan sebagai berikut.
Tahap pertama: Identifikasi Masalah dan Studi literatur, yaitu mengidentifikasi
masalah-masalah yang akan dibahas, serta mencari dan mendapatkan data dan
literatur yang berkaitan dengan metode kriptografi Blowfish, dan algoritma
Huffman untuk proses kompresi dan dekompresi. Tahap kedua: Perancangan
Sistem meliputi perancangan proses enkripsi dan proses dekripsi dengan
menggunakan algoritma blowfish serta proses kompresi dan dekompresi data
dengan menggunakan algoritma Huffman dalam sistem yang akan dibangun dalam
penelitian ini. Tahap ketiga: Implementasi Sistem, yaitu membangun aplikasi
4
sesuai dengan perancangan proses pada tahap kedua. Tahap keempat: Pengujian
Sistem dan Analisis Hasil Pengujian, yaitu dilakukan pengujian terhadap
pengaruh ukuran data, waktu proses, dan kualitas data, serta melihat hasil yang
diberikan apakah sesuai dengan konsep metode penerapan kriptografi blowfish
dan algoritma Huffman sebagai algoritma kompresi data.
Proses utama dalam sistem yang dibangun, dibedakan menjadi dua yaitu
proses kompresi menggunakan algoritma Huffman, dan proses enkripsi
menggunakan algoritma blowfish. Proses kompresi data dapat dijelaskan dengan
diagram dalam bentuk flowchart yang ditunjukkan pada Gambar 4. Selanjutnya
proses dekompresi data yang terjadi dalam sistem menggunakan algoritma
Huffman, ditunjukkan pada Gambar 5.
Gambar 4 Proses Kompresi Data
Gambar 5 Proses Dekompresi Data
Proses Kompresi data pada Gambar 4 dapat dimulai dengan memasukkan
file. Selanjutnya file yang telah dimasukkan akan diproses dengan perhitungan
karakter yang muncul. Kemudian akan dilanjutkan dengan pembentukan Huffman
tree. Ini bertujuan untuk membaca karakter di dalam teks dan untuk menghitung
frekuensi kemunculan dari setiap karakter. Setiap karakter penyusun teks
dinyatakan sebagai pohon bersimpul tunggal. Setelah pembentukan Huffman tree
selesai, maka kemudian akan dilanjutkan dengan pengolahan Huffman file atau
pengolahan pengkodean data. Akhir dari setiap proses / output yang berbeda
dengan file aslinya sebelum dilakukan kompresi data.
Proses Dekompresi pada Gambar 5 dapat dimulai dengan memasukkan
file. File yang dimasukkan berupa file teks dengan format *.txt. Selanjutnya file
tersebut kemudian diproses untuk membaca setiap karakter yang muncul. Seperti
yang terjadi sebelumnya pada proses kompresi data, pada proses dekompresi juga
membentuk Huffman tree. Pembentukan Huffman tree bertujuan untuk membaca
karakter di dalam teks dan untuk menghitung frekuensi kemunculan dari setiap
karakter. Selanjutnya membaca kode dari hasil kompresi. Setelah membaca kode
yang ada dari hasil kompresi data, proses decoding dijalankan untuk
mengembalikan ukuran dari file asli. Akhir dari setiap proses dekompresi yang
terjadi, maka output file dari sistem berupa data asli. Dalam sistem ini, algoritma
5
yang digunakan pada proses enkripsi data yaitu algoritma blowfish. Proses
enkripsi algoritma blowfish dalam betuk flowchart, dapat dijelaskan pada Gambar
6.
Gambar 6 Proses Enkripsi Algoritma Blowfish
Gambar 6 menunjukkan proses enkripsi dengan menggunakan algoritma
blowfish yang dapat dijelaskan sebagai berikut. Masukan berupa nilai xl, xr dan
panjang tabel proses. Jika nilai xl dan xr sudah dimasukkan, maka nilai xl yang
pertama diatur menjadi xl = xl P[0]. Selanjutnya nilai i dapat diatur menjadi i =
1, xr = xr (f (xl) P[i]) dan nilai xl = xl (f (xr) P [i + 1]). Jika nilai i diatur
menjadi i = i + 2, lakukanlah perulangan hingga nilai i = 16. Selanjutnya nilai i
diatur menjadi i = i – 2, lakukanlah perulangan hingga nilai i = 1. Jika nilai i = 0,
xr = xr P [0].
Proses dekripsi tidak berbeda jauh dengan proses enkripsi. Proses dekripsi
dengan menggunakan algoritma blowfish, dijelaskan sebagai berikut. Masukan
berupa nilai xl, xr, dan panjang tabel. Jika nilai xl yang pertama diatur menjadi xl
= xl P [17]. Selanjutnya nilai i = 16, xr = xr (f(xl P [i] dan nilai xl = xl (f
(xr) P [i-1] ).
Proses dekripsi dengan menggunakan algoritma blowfish dalam bentuk
flowchart, ditunjukkan pada Gambar 7.
6
Gambar 7 Proses Dekripsi Algoritma Blowfish
4. Hasil dan Pembahasan
Hasil implementasi sistem berdasarkan rancangan sistem yang dibuat,
dapat dijelaskan sebagai berikut.
Gambar 8 Tampilan Proses Enkripsi
Gambar 9 Tampilan Cipherteks
Gambar 8 merupakan tampilan proses enkripsi pada aplikasi dan Gambar 9
merupakan tampilan cipherteks yang dihasilkan. Pada proses enkripsi, user
mencari dan menentukan lokasi plainteks yang merupakan lokasi dimana file
plainteks yang akan dienkripsi dan akan tampil pada info file. Setelah pencarian
file plainteks, maka proses selanjutnya memasukkan kunci enkripsi algoritma
blowfish dan memilih button enkripsi untuk menjalankan proses enkripsi. Setelah
proses enkripsi sukses, maka user menentukan lokasi cipherteks yang merupakan
lokasi dimana hasil enkripsi (cipherteks) akan disimpan.
7
Gambar 10 Tampilan Proses Dekripsi
Gambar 11 Tampilan Plainteks
Gambar 10 merupakan tampilan proses dekripsi pada aplikasi dan Gambar 11
merupakan tampilan dari plainteks yang telah berhasil didekripsi. Pada proses
dekripsi, user mencari dan menentukan lokasi cipherteks yang merupakan lokasi
dimana file cipherteks yang akan didekripsi dan akan muncul pada info file.
Setelah pencarian file cipherteks, maka proses selanjutnya memasukkan kunci
dekripsi algoritma blowfish dan memilih button dekripsi untuk menjalankan
proses dekripsi. Kunci untuk dekripsi harus sama panjang dengan enkripsi.
Setelah pemberitahuan proses dekripsi sukses, maka user menentukan lokasi
plainteks yang merupakan lokasi dimana hasil dekripsi (plainteks) akan disimpan.
Kode Program 1 Perintah Untuk Proses Enkripsi
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
List combine = new List();
byte[] d = Padding(data);
var b = new Blowfish(key);
for (int i = 0; i < d.Length; i += 8)
{
byte[] block = new byte[8];
Array.Copy(d, i, block, 0, 8);
b.Encipher(block, block.Length);
combine.AddRange(block);
}
combine.Insert(0, (byte)(d.Length - data.Length));
return combine.ToArray();
Kode Program 1 merupakan perintah yang digunakan untuk melakukan
proses enkripsi menggunakan algoritma Blowfish. Proses enkripsi dilakukan per
blok (perintah pada baris 6). Hasil enkripsi (ciphertext) yang juga dalam bentuk
blok, dikumpulkan kembali ke dalam variabel combine.
Proses enkripsi hampir sama dengan proses dekripsi. Kunci yang
digunakan dalam proses dekripsi harus sama dengan proses enkripsi. Untuk
proses dekripsi dapat dijelaskan pada Kode Program 2.
Kode Program 2 Perintah Untuk Proses Dekripsi
1.
2.
3.
4.
5.
6.
7.
8.
9.
List combine = new List();
var b = new Blowfish(key);
int padding = data[0];
byte[] d = new byte[data.Length - 1];
Array.Copy(data, 1, d, 0, d.Length);
for (int i = 0; i < d.Length; i += 8){
byte[] block = new byte[8];
Array.Copy(d, i, block, 0, 8);
b.Decipher(block, block.Length);
8
10.
11.
12.
combine.AddRange(block);}
combine.RemoveRange(combine.Count - padding, padding);
return combine.ToArray();
Kode Program 2 merupakan perintah yang digunakan untuk melakukan
proses dekripsi menggunakan algoritma Blowfish. Proses dekripsi dilakukan per
blok (perintah pada baris 7). Hasil dekripsi (plaintext) dalam bentuk blok,
dikumpulkan kembali ke dalam variabel combine. Selanjutnya, algoritma yang
digunakan dalam proses kompresi dan dekompersi data yaitu algoritma Huffman.
File yang akan dikompresi adalah file berformat txt.
Kode Program 3 Perintah Untuk Kompresi Data
1. class Compression
2. {
3.
public static byte[] Compress(byte[] data)
4.
{
5.
HuffmanTree huff = new HuffmanTree();
6.
String base64String = Convert.ToBase64String(data);
7.
huff.Build(base64String);
8.
BitArray encoded = huff.Encode(base64String);
9.
int tambahan = 8 - (encoded.Count % 8);
10.
byte[] bytesData = ConvertToByte(encoded, tambahan);
11.
byte[] tree = Encoding.Default.GetBytes(huff.PrintFrequencies());
12.
byte[] panjangTree = BitConverter.GetBytes((short)tree.Length);
13.
byte panjangPad = (byte)tambahan;
14.
List list = new List();
15.
list.AddRange(panjangTree);
16.
list.Add(panjangPad);
17.
list.AddRange(tree);
18.
list.AddRange(bytesData);
19.
return list.ToArray(); }
Kode Program 3 merupakan perintah yang digunakan untuk melakukan
proses kompresi. File dihitung frekuensi kemunculan dan mengubah ke dalam bitbit. Output dari pada proses kompresi adalah file teks berformat *.huffman.
Ada 3 langkah untuk melakukan proses kompresi yaitu memilih file yang
akan dikompresikan, dan akan terdapat info berupa info file pada panel info file
berisi nama file, letak file berada, dan ukuran file dalam satuan byte. Selanjutnya
akan ada button Compress. Button compress berfungsi untuk menjalankan proses
kompresi file. Selanjutnya apabila proses selesai, maka akan tampil waktu proses
kompresi dan jumlah byte pada textbox yang tersedia. Proses kompresi file dapat
dilihat pada Gambar 12.
Gambar 12 Form Proses Kompresi File
9
Kode Program 4 merupakan perintah untuk melakukan proses dekompresi
file yang akan dipanggil dan dijalankan pada saat button decompress dipilih.
Kode Program 4 Perintah Untuk Dekompresi Data
1.
2.
3.
4.
5.
6.
7.
public static byte[] Extract(byte[] data)
{
byte[] panjangTree = new byte[] { data[0], data[1] };
byte panjangPad = data[2];
byte[] tree = new byte[BitConverter.ToInt16(panjangTree, 0)];
Array.Copy(data, 3, tree, 0, tree.Length);
byte[] bytesData = new byte[data.Length - tree.Length - 1 panjangTree.Length];
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
int panjangHeader = panjangTree.Length + 1 + tree.Length;
Array.Copy(data, panjangHeader, bytesData, 0, bytesData.Length);
BitArray bits = ConvertToBitArray(bytesData, panjangPad);
string treeString = Encoding.Default.GetString(tree);
HuffmanTree huff = new HuffmanTree();
huff.LoadTree(treeString);
string base64 = huff.Decode(bits);
byte[] hasil = Convert.FromBase64String(base64);
return hasil;
}
Proses kompresi tidak berbeda jauh dengan proses dekompresi, yaitu
memilih file yang akan dikembalikan, dan akan terdapat info berupa info file pada
panel info file berisi nama file, letak file berada, dan ukuran file dalam satuan byte.
Selanjutnya akan ada button Decompress. Button decompress berfungsi untuk
menjalankan proses dekompresi file. Selanjutnya apabila proses selesai, maka
akan tampil waktu proses dekompresi dan jumlah byte pada textbox yang tersedia.
Proses dekompresi file dapat dilihat pada Gambar 13.
Gambar 13 Form Proses Dekompresi File
File yang akan digunakan untuk pengujian aplikasi yang dibuat ini adalah
file bertipe *.txt, dan membandingkan yang berbeda dalam enkripsi data untuk
melihat perbandingan kecepatan dan ukuran file.
Beberapa pengujian dilakukan, dijelaskan sebagai berikut. Pengujian
Proses Enkripsi – Proses Kompresi. Aplikasi yang dibangun dengan
menggunakan algoritma kompresi Huffman dan algoritma Blowfish, dapat
memperkecil dan mengembalikan ukuran file data text, serta dapat mengenkripsi
10
dan mendekripsi data text dengan baik. Hasil pengujian digambarkan dalam
bentuk grafik terlihat pada Gambar 14.
Gambar 14 Grafik Hasil Pengujian Panjang Plaintext Berdasarkan Ukuran File Dengan Kunci
Yang Sama
Gambar 14 merupakan grafik hasil pengujian jumlah karakter berdasarkan
ukuran file dengan kunci yang sama. Berdasarkan hasil pengujian aplikasi pada
data text, dapat diujikan juga waktu yang dibutuhkan dalam proses enkripsi,
dekripsi, kompresi dan dekompresi, ditunjukkan pada Gambar 15 dan Gambar 16.
Gambar 15 Pengujian Panjang Karakter
Plainteks terhadap Waktu Enkripsi
Gambar 16 Pengujian Panjang Karakter
Plainteks terhadap Waktu Dekripsi
Gambar 15 dan Gambar 16 menjelaskan tentang waktu dalam proses
enkripsi dan dekripsi. Proses dekripsi lebih sedikit membutuhkan waktu
dibandingkan dengan proses enkripsi yang dilakukan. Ukuran file berpengaruh
terhadap waktu dalam proses enkripsi atau dekripsi. Grafik pada Gambar 16 dapat
dilihat pada jumlah karakter lebih dari pada 6890 karakter maka berpengaruh pada
waktu dekripsi. Walaupun tidak melewati waktu lama proses enkripsi, tetapi
pencapaian waktu yang sedikit berbeda menunjukkan bahwa kapasitas ukuran
karakter juga berpengaruh dalam proses dekripsi. Berdasarkan hasil pengujian
11
aplikasi pada data text, dapat diujikan juga waktu yang dibutuhkan dalam proses
kompresi dan dekompresi yang dapat dilihat pada Gambar 17 dan Gambar 18.
Gambar 17 Pengujian Panjang Karakter
Plainteks terhadap Waktu Kompresi
Gambar 18 Pengujian Panjang Karakter
Plainteks terhadap Waktu Dekompresi
Gambar 17 dan Gambar 18 menjelaskan tentang waktu dalam proses
kompresi dan dekompresi file. Proses dekompresi lebih sedikit membutuhkan
waktu dibandingkan dengan proses kompresi yang dilakukan. Ukuran file
berpengaruh terhadap waktu dalam proses kompresi atau dekompresi. Grafik
waktu kompresi dan dekompresi menunjukkan bahwa semakin banyak jumlah
karakter maka semakin banyak waktu yang dibutuhkan dalam proses kompresi
dan dekompresi. Hasil Pengujian pada file text (.txt) dengan kunci enkripsi yang
berbeda, terlihat pada Gambar 19.
Gambar 19 Grafik Hasil Pengujian Panjang Plaintext Berdasarkan Ukuran File Dengan Kunci berbeda.
Berdasarkan hasil pengujian aplikasi pada data text dengan kunci yang
berbeda pada Gambar 19, dapat disimpulkan bahwa panjang kunci enkripsi yang
berbeda tidak berpengaruh pada ukuran file hasil dari proses yang dijalankan.
Berdasarkan hasil pengujian aplikasi pada data text, dapat diujikan juga waktu
yang dibutuhkan dalam proses enkripsi, dekripsi, kompresi dan dekompresi yang
dapat dijelaskan pada Gambar 20 dan Gambar 21.
12
Gambar 20 Pengujian Panjang Kunci terhadap
Waktu Enkripsi
Gambar 21 Pengujian Panjang Kunci terhadap
Waktu Dekripsi
Gambar 20 dan Gambar 21 menjelaskan tentang waktu dalam proses
enkripsi dan dekripsi dengan kunci yang berbeda. Proses dekripsi lebih sedikit
membutuhkan waktu dibandingkan dengan proses enkripsi. Panjang kunci
berpengaruh terhadap waktu proses enkripsi atau dekripsi. Semakin banyak kunci
yang digunakan dalam proses enkripsi, maka semakin banyak juga waktu yang
dibutuhkan. Grafik pada Gambar 20 dan Gambar 21 menghasilkan waktu yang
berbeda sesuai dengan panjang kunci. Hal ini disebabkan karena kapasitas memori
dan penggunaan kunci yang tidak bervariasi. Proses kompresi dan dekompresi file
teks menggunakan algoritma Huffman. Berdasarkan hasil pengujian aplikasi pada
data text dengan panjang kunci yang berbeda, dapat diujikan juga waktu yang
dibutuhkan dalam proses kompresi dan dekompresi yang dapat dilihat pada
Gambar 22 dan Gambar 23.
Gambar 22 Pengujian Panjang Kunci terhadap
Waktu Kompresi
Gambar 23 Pengujian Panjang Kunci terhadap
Waktu Dekompresi
Gambar 22 dan Gambar 23 menjelaskan tentang waktu dalam proses
kompresi dan dekompresi file hasil enkripsi dengan kunci yang berbeda. Proses
dekompresi lebih sedikit membutuhkan waktu dibandingkan dengan proses
13
kompresi yang dilakukan. Ukuran file dan panjang kunci berpengaruh terhadap
waktu proses kompresi atau dekompresi.
Pengujian Proses Kompresi - Proses Enkripsi. Pengujian pada file text (.txt)
dengan kunci enkripsi yang sama dimulai dari proses kompresi kemudian proses enkripsi,
dapat terlihat pada Gambar 24.
Gambar 24. Grafik Hasil Pengujian Panjang Plaintext Berdasarkan Ukuran File Dengan Kunci yang Sama
Berdasarkan hasil pengujian aplikasi pada data text, dapat diujikan juga
waktu yang dibutuhkan dalam proses enkripsi, dekripsi, kompresi dan dekompresi
yang dapat dilihat pada Gambar 25 dan Gambar 26.
Gambar 25 Pengujian Panjang Karakter Plainteks
terhadap Waktu Kompresi
Gambar 26 Pengujian Panjang Karakter Plainteks
terhadap Waktu Dekompresi
Gambar 25 dan Gambar 26 menjelaskan tentang waktu dalam proses
kompresi dan dekompresi file. Proses dekompresi lebih sedikit membutuhkan
waktu dibandingkan dengan proses kompresi yang dilakukan. Ukuran file cukup
berpengaruh terhadap waktu dalam proses kompresi atau dekompresi. Semakin
besar pesan teks yang akan dikompresikan, maka semakin banyak juga waktu
yang dibutuhkan. Sebaliknya demikian, semakin kecil ukuran pesan teks, maka
14
semakin sedikit waktu yang dibutuhkan dalam proses kompresi ataupun
dekompresi.
Gambar 27 Pengujian Panjang Karakter Plainteks
terhadap Waktu Enkripsi
Gambar 28 Pengujian Panjang Karakter Plainteks
terhadap Waktu Dekripsi
Gambar 27 dan Gambar 28 menjelaskan tentang waktu dalam proses
enkripsi dan dekripsi. Proses dekripsi lebih sedikit membutuhkan waktu
dibandingkan dengan proses enkripsi yang dilakukan. Ukuran file berpengaruh
terhadap waktu dalam proses enkripsi atau dekripsi. Hasil Pengujian pada file text
(.txt) dengan kunci enkripsi yang berbeda, terlihat pada Gambar 29 dan Gambar
30.
Gambar 29 Pengujian Panjang Kunci terhadap
Waktu Kompresi
Gambar 30 Pengujian Panjang Kunci terhadap
Waktu Dekompresi
Gambar 29 dan Gambar 30 menjelaskan tentang waktu dalam proses
kompresi dan dekompresi dengan panjang kunci yang berbeda. Proses kompresi
lebih banyak membutuhkan waktu dibandingkan dengan proses dekompresi.
Grafik pada Gambar 29 dan Gambar 30 menunjukkan bahwa file dengan jumlah
karakter yang kecil dan kunci yang berbeda, membutuhkan waktu yang banyak
dalam proses kompresi dan dekompresi.
Pada proses enkripsi dan dekripsi file teks menggunakan algoritma
blowfish. Berdasarkan hasil pengujian aplikasi pada data text, dapat diujikan juga
15
waktu yang dibutuhkan dalam proses enkripsi dan dekripsi yang dapat dilihat
pada Gambar 31 dan Gambar 32.
Gambar 31 Pengujian Panjang Kunci terhadap
Waktu Enkripsi
Gambar 32 Pengujian Panjang Kunci terhadap
Waktu Dekripsi
Gambar 31 dan Gambar 32 menjelaskan tentang waktu dalam proses
enkripsi dan dekripsi dengan kunci yang berbeda panjangnya. Proses dekripsi
lebih sedikit membutuhkan waktu dibandingkan dengan proses enkripsi yang
dilakukan. Panjang kunci berpengaruh terhadap waktu proses enkripsi atau
dekripsi. Perbedaan proses enkripsi dan dekripsi juga berpengaruh pada proses
kompresi dan dekompresi yang dapat dilihat pada Gambar 33 dan Gambar 34.
Gambar 33 Pengujian Panjang Karakter Plainteks
terhadap Proses Enkripsi yang Berbeda
Gambar 34 Pengujian Panjang Karakter Plainteks
terhadap Proses Dekripsi yang Berbeda
Gambar 33 menunjukkan proses enkripsi yang dilakukan dengan
membandingkan waktu antara proses kompresi dahulu sebelum proses enkripsi
dan proses enkripsi dahulu sebelum proses kompresi. Gambar 34 menunjukkan
proses dekripsi yang dilakukan dengan membandingkan waktu antara proses
dekompresi dahulu sebelum proses dekripsi dan proses dekripsi dahulu sebelum
proses dekompresi. Jika dihitung berdasarkan rata-rata waktu dari masing-masing
proses, maka dapat disimpulkan untuk waktu paling rendah jumlahnya adalah
waktu proses enkripsi-kompresi dan dekompresi-dekripsi dimana 0,06 dan 0,19
lebih sedikit waktunya dibandingkan dengan waktu dari proses kompresi-enkripsi
daan dekripsi-dekompresi dimana 0,61 dan 0,03. Selanjutnya jika dilihat waktu
16
terbanyak dalam setiap proses, maka dapat disimpulkan bahwa waktu pada proses
enkripsi-kompresi dan dekompresi-dekripsi dimana 0,8 dan 0,89 lebih kecil
dibandingkan dengan proses kompresi-enkripsi dan dekripsi-dekompresi dimana
0,98 dan 0,79. Walaupun waktu proses enkripsi-kompresi dan dekompresidekripsi lebih kecil dari pada kompresi-enkripsi dan dekripsi-dekompresi, tetapi
jika dilihat dari sudut kemiringan waktu maka terlihat selisih waktu yang paling
sedikit yaitu pada saat proses kompresi-enkripsi dan dekripsi-dekompresi
dibandingkan dengan proses enkripsi-kompresi dan dekompresi-dekripsi.
5.
Simpulan
Berdasarkan hasil penelitian, pengujian dan analisis terhadap sistem, maka
dihasilkan kesimpulan yaitu kecepatan proses aplikasi bergantung pada besarnya
ukuran file, semakin besar ukuran file maka semakin banyak waktu yang
dibutuhkan untuk proses enkripsi, kompresi, dekompresi, dan dekripsi.
Perbandingan waktu enkripsi lebih sedikit apabila dilakukan sebelum proses
kompresi, sedangkan waktu yang dibutuhkan lebih banyak apabila dilakukan
sesudah proses kompresi. Adapun saran yang dapat diberikan untuk
pengembangan aplikasi ini lebih lanjut adalah penerapan algoritma Huffman dan
kriptogarfi blowfish dalam pengamanan data audio.
6.
Daftar Pustaka
[1] Pratiwi, A. E., Lhaksmana, K. M., Rizal, Setia, Juli 2011. Implementasi
Enkripsi Data Dengan Algoritma Blowfish Menggunakan Java Pada Aplikasi
Email, Jurnal PA : Politeknik Telkom Bandung.
[2] Kosasih, D., Pakereng, M. A. I., 2013. Perancangan dan Implementasi
Aplikasi Steganography Menggunakan Metode Enchanced Audio
Steganography (EAS) Pada Data File Terkompresi. Skripsi-FTI. Universitas
Kristen Satya Wacana.
[3] Schneier, B., 1995. Applied Cryptography (Second Edition).
[4] Sitinjak, S., Fauziah Y., Juwairiah. 2010. Aplikasi Kriptografi File
Menggunakan Blowfish. SemnasIF : UPN “Veteran” Yogyakarta.
[5] Yusioktria, 2005. Simulasi Algoritma Huffman Guna Mengompresi Data
Pada Ponsel yang Berbasis Sistem Operasi Symbian.http://garuda.dikti.go.id/
jurnal/detil/id/ (30/06/2014)
[6] Batubara, 2009. Implementasi Algoritma Huffman dan algoritma Cipher
Substitusi Alfabet Tunggal pada Teks SMS. Ilmu computer, Medan, 2009.
http://repository.usu.ac.id/bitstream/123456789/25384/7/Cover.pdf.
(10/07/2014)
[7] Liliana, 2005. Pembuatan Perangkat Lunak Untuk Kompresi File Text
Dengan Menggunakan Huffman Tree. Teknik Informatika, Surabaya, 2005.
17