Tabel 2.6 Proses Dekompresi LZW untuk Menemukan String “BUKAN BUKA”
Dengan demikian diperoleh output “BUKAN BUKA”. Pada kasus ini indeks selalu ditemukan dalam dictionary. Bila kondisi tertentu menyebabkan indeks tidak
ditemukan dalam dictionary ditunjukkan dengan temp yang berisi null, maka output yg dihasilkan adalah karakter sebelumnya ditambahkan dengan karakter pertama dari
karakter tersebut. Misalnya bila karakter sebelumnya “A”, maka outputnya adalah “AA”. Dan ke dalam kamus ditambahkan “AA”.
2.5 Base64Encoding
Pada dasarnya internet mail didesain untuk mentransfer data plain ASCII text saja[5]. Karakter-karakter yang non-printable pada ASCII maupun standar lainnya akan
mengalami kendala ketika dikirimkan melalui media email. Umumnya karakter- karakter tersebut akan berubah menjadi simbol-simbol lain yang respresentasinya
berbeda. Untuk mencegah hal seperti ini salah satu cara yang dapat dilakukan adalah menerapkan base64encoding. Base64encoding akan merubah deretan data ke bentuk
lain yang merupakan karakter-karakter universal printable. Dengan merubah data ke bentuk printable, diharapkan tidak terjadi perubahan maupun kehilangan data ketika
dikirimkan melalui media telekomunikasi.
Deretan karakter pertama sekali didefenisikan dalam bentuk biner. Kemudian untuk menerapkan encode bit-bit ini kemudian masing-masing dikelompokkan 6 bit,
prev Temp
Temp = ‘’ ? Entry
Output Tambahan dalam
Dictionary
B -
- -
B -
B U
Tidak U
U BU-256
U K
Tidak K
K UK-257
K A
Tidak A
A KA-258
A N
Tidak N
N AN-259
N Sp
Tidak Sp
Sp NSp-260
Sp BU
Tidak BU
BU SpB-261
BU KA
Tidak KA
KA BUK-262
Universitas Sumatera Utara
dan kemudian dikonversi ke bilangan desimal. Setelah diperoleh bentuk desimal data kemudian disubstitusi dengan karakter yang indeksnya bilangan desimal tersebut pada
sebuah himpunan karakter yang berisikan 64 buah karakter printable pada ASCII. Himpunan karakter tersebut adalah sebagai berikut.
Tabel 2.7Himpunan Karakter yang Digunakan pada Base64 Encoding
Indeks Karakter
Indeks Karakter
Indeks Karakter
Indeks Karakter
A 16
Q 32
g 48
w 1
B 17
R 33
h 49
x 2
C 18
S 34
i 50
y 3
D 19
T 35
j 51
z 4
E 20
U 36
k 52
5 F
21 V
37 l
53 1
6 G
22 W
38 m
54 2
7 H
23 X
39 n
55 3
8 I
24 Y
40 o
56 4
9 J
25 Z
41 p
57 5
10 K
26 a
42 q
58 6
11 L
27 b
43 r
59 7
12 M
28 c
44 s
60 8
13 N
29 d
45 t
61 9
14 O
30 e
46 u
62 +
15 P
31 f
47 v
63 Padding
masing-masin 2 bit =
Prinsip kerja algoritma pada base64encoding dapat digambarkan sebagai berikut.
Gambar 2.4Proses Base64 Encoding
Karena jumlah bit input tidak habis dibagi 6, diperlukan padding sebanyak 4
bit, sehingga output hasil encoding adalah rkqljD==.
Deretan Input Biner 1 0 1 0 1 1 1 0 0 1 0 0 1 0 1 0 1 0 1 0 0 1 0 1 1 0 0 0 1 1 1 1
Pengelompokan 6 Bit 101011 100100 101010 100101 100011 padding-
Deretan output r
k q
l j
D==
Universitas Sumatera Utara
Untuk mengembalikan data ke deretan bit semula diperlukan infomasi mengenai panjang bit sebelum di-encoding. Dengan informasi ini deretan bit hasil
konversi karakter ke bentuk biner dikelompokkan dengan panjang masing-masing sama dengan panjang bit data sebelum di-encode. Sebelum proses konversi dilakukan
akan dicek terlebih dahulu padding yang disimbolkan dengan karakter ’=’. Bila terdapat padding maka karakter terakhir di-decode sepanjang selisih 6 dengan panjang
bitpadding . Himpunan karakter yang digunakan pada proses decoding sama dengan
himpunan karakter yang digunkan pada proses encoding. Untuk data pada contoh akhir input ditemukan simbol ‘=’ sebanyak 2 karakter, hal ini menunjukkan bahwa
terdapat padding sepanjang 4 bit. Dengan demikian karakter terakhir hanya dikonversi sepanjang 2 bit. Bila panjang bit tiap karakter sebelum di-encode adalah 8 bit, maka
diperoleh output sebagai berikut.
Gambar 2.5Proses Base64 Decoding
2.6 Mozilla Thunderbird dan Add On pada Mozilla Thunderbird