i
SANDI
BIORTHOGONAL
8 BIT
DENGAN MATLAB
Diajukan untuk memenuhi salah satu syarat
memperoleh gelar Sarjana Teknik pada
Program Studi Teknik Elektro
Jurusan Teknik Elektro
Fakultas Sains dan Teknologi Universitas Sanata Dharma
disusun oleh :
LIA MELINA
NIM : 035114039
PROGRAM STUDI TEKNIK ELEKTRO
JURUSAN TEKNIK ELEKTRO
FAKULTAS SAINS DAN TEKNOLOGI
UNIVERSITAS SANATA DHARMA
YOGYAKARTA
ii
OF 8 BIT BIORTOGONAL CODES
WITH MATLAB
In partial fulfillment of the requirements
for the degree of Sarjana Teknik
Electrical Engineering Study Program
Electrical Engineering Departement
Science and Technology Faculty Sanata Dharma University
LIA MELINA
NIM : 035114039
STUDY PROGRAM OF ELECTRICAL ENGINEERING
DEPARTMENT OF ELECTRICAL ENGINEERING
FACULTY OF SCIENCE AND TECHNOLOGY
SANATA DHARMA UNIVERSITY
vi
MOTTO :
“
YESTERDAY IS A HISTORY
TOMORROW IS A MYSTERY
BUT
TODAY IS A GIFT”
Skripsi ini kupersembahkan untuk :
Yesus Kristus dan Bunda Maria yang selalu Memberkatiku
Pakde dan Bude Totok yang selalu mendukungku
Mbak Lus, Mamayo, Om Kelik dan Yudha yang selalu
vii
Sandi
biorthogonal adalah penyandian bentuk gelombang yang dapat digunakan
untuk memperbaiki sinyal pesan. Tujuannya untuk membuat sinyal pesan menjadi lebih
handal jika ada gangguan, seperti noise,
fading dan jamming. Jika ada kesalahan, maka
penerima mampu mendeteksi dan mengkoreksi kesalahan sendiri.
Pada tulisan ini, penyandi dan pengawasandi sandi biorthogonal 8 bit akan
disimulasikan menggunakan MATLAB. Sandi biorthogonal 8 bit disusun menggunakan
matrik Hadamard H
7. Matrik katasandi biorthogonal ini terdiri dari 256 katasandi dengan
panjang 128 bit. Dengan matrik ini, sebuah masukan 2 digit akan diubah menjadi
katasandi 128 bit. Proses pengawasandi terdiri dari proses deteksi dan koreksi error.
Pendeteksian
error menggunakan nilai Zij. Jika Zij = 1, maka kata terima tidak
mengalami kesalahan. Jika 0 < Zij < 1, maka dapat dipastikan bahwa kata terima
mengalami kesalahan. Jika Zij = 0, maka tidak dapat dipastikan bahwa kata terima tidak
mengalami kesalahan. Proses koreksi error menggunakan proses Look up table. Program
simulasi pengawasandi ini mampu mendeteksi 64 bit error dan mengkoreksi 31 bit error.
Hasil simulasi menunjukkan bahwa berapapun jumlah error yang terjadi, program
mampu mendeteksi error. Sedangkan pada proses koreksi, program mampu mengkoreksi
error dengan jumlah error kurang atau sama dengan 31 bit. Jika jumlah error lebih dari
31 bit, program tidak selalu mampu mengkoreksi error.
viii
Biorthogonal codes is a waveform coding that can be used to repair the information
waveform. The goal of repairing the information waveform is to make the waveform
more reliable to face the disturbance, such as noise, fading and jamming. If there was an
error, the receiver will be able to detect and correct the error by itself.
In this paper, the biorthogonal codes 8-bit encoder and decoder will be simulated
with MATLAB. Biorthogonal codes 8-bit was constructed by using Hadamard matrix H
7.
This biorthogonal codeword matrix consist of 256 codewords with length of 128 bits.
With this matrix, 2 digits input will be transformed to codeword 128 bits. The decoding
process consist of error detection and error correction. The error detection used Zij
value. If Zij = 1, there is no error in the received word. If 0 < Zij < 1, the received word
is disturbed by an error. If Zij = 0, it can not be sure that there is no error in the received
word. The error correction uses look-up-table process. Decoder simulation program is
able to detect 64 bits error and to correct 31 bits error.
From the result, the simulation shown that the program was able to detect the error
for all of error patern. In the error correction process, the program was able to correct the
error when the error were 31 bits or less. If the error more than 31 bits, the program was
not always able to correct the error.
ix
Yang bertanda tangan dibawah ini, saya mahasiswa Universitas Sanata Dharma :
Nama
: Lia Melina
Nomor Mahasiswa
: 035114039
Demi pengembangan ilmu pengetahuan, saya memberikan kepada Perpustakaan
Universitas Sanata Dharma Karya Ilmiah saya yang berjudul :
SIMULASI PENYANDI DAN PENGAWASANDI
SANDI
BIORTHOGONAL
8 BIT
DENGAN MATLAB
beserta perangkat, yang diperlukan (bila ada). Dengan demikian saya memberikan kepada
Perpustakaan Universitas Sanata Dharma hak untuk menyimpan, mengalihkan dalam
bentuk media lain, mengelolanya dalam bentuk pangkalan data, mendistribusikan secara
terbatas dan mempublikasikannya di Internet atau media lain untuk kepentingan akademis
tanpa perlu meminta ijin dari saya maupun memberikan royalty kepada saya selama tetap
mencantumkan nama saya sebagai penulis.
Demikian pernyataan ini saya buat dengan sebenarnya.
Dibuat di Yogyakarta
Pada tanggal : 28 April 2009
Yang menyatakan
x
Syukur dan terima kasih kepada Tuhan Yesus Kristus atas segala karuniaNya
sehingga tugas akhir ini dapat diselesaikan dengan baik.
Penelitian yang berupa tugas akhir ini merupakan salah satu syarat bagi
mahasiswa Jurusan Teknik Elektro untuk memperoleh gelar Sarjana Teknik di
Universitas Sanata Dharma Yogyakarta. Penelitian ini dapat diselesaikan dengan baik
atas bantuan, gagasan dan dukungan dari berbagai pihak. Oleh karena itu, peneliti ingin
mengucapkan terima kasih kepada :
1.
Bapak Yosef Agung Cahyanta S.T., M.T., selaku Dekan Fakultas Sains dan
Teknologi Universitas Sanata Dharma Yogyakarta.
2.
Ibu Ir. Th. Prima Ari S., M.T., selaku Dosen Pembimbing tugas akhir yang telah
banyak meluangkan waktu untuk menberikan bimbingan.
3.
Bapak A. Bayu Primawan, S.T., M.Eng., selaku Dosen Pembimbing tugas akhir
yang telah banyak meluangkan waktu untuk menberikan bimbingan.
4.
Ibu Wiwien Widyastuti, S.T., M.T., selaku Dosen Penguji tugas akhir yang telah
memberikan masukan dan saran.
5.
Bapak Damar Widjaja, S.T., M.T., selaku Dosen Penguji tugas akhir yang telah
memberikan masukan dan saran.
6.
Pakde dan Bude Pamuji Sugiharto yang telah memberikan dukungan baik moril
xii
Halaman Sampul (Bahasa Indonesia) ………...…...… i
Halaman Sampul (Bahasa Inggris) ... ii
Halaman Persetujuan …...…....………...……. iii
Halaman Pengesahan ……...………...…...……...…... iv
Pernyataan Keaslian Karya …...…...……..…...… v
Halaman Persembahan …...………...……...…. vi
Intisari ………...…...………...…...…... vii
Abstract
………...………...………...……... viii
Lembar Pernyataan Persetujuan Publikasi Karya Ilmiah Untuk
Kepentingan Akademis ... ix
Kata Pengantar …………...……...………...………... x
Daftar Isi ………...…...………...……….. xii
Daftar Gambar …………...…...………...………. xvi
Daftar Tabel ………...……...………...…...……….. xviii
Daftar Lampiran ………...……….…...…… xix
BAB I : PENDAHULUAN
1.1.
Judul ... 1
1.2.
Latar Belakang Masalah …………...………...…… 1
xiii
1.6.
Sistematika Penulisan ... 3
BAB II : DASAR TEORI
2.1. Penyandian Kanal (
Channel Coding
)
…...……...…..…...… 5
2.1.1. Penyandian Runtun Struktur (
Structured Sequences
) ... 5
2.1.2.
Penyandian Bentuk Gelombang (
Waveform Coding
) .. 7
2.1.2.1.
Sinyal Antipodal dan Sinyal
Orthogonal
... 7
2.1.2.2.
Penyandian Gelombang dengan Deteksi
Korelasi ... 9
2.2.
Sandi
Biorthogonal
... 9
2.3.
Penyandian Sandi
Biorthogonal
... 11
2.4.
Pengawasandi Sandi
Biorthogonal
... 13
2.4.1.
Bobot dan Jarak
Hamming
... 13
2.4.2.
Jarak Minimum Suatu Sandi Linear ... 14
2.4.3.
Deteksi dan Koreksi
Error
... 15
2.5.
MATLAB ... 15
2.5.1.
Window
utama MATLAB ... 16
2.5.1.1.
Command Window
………...…..……… 16
2.5.1.2.
Current Directory Window
…...…..……… 17
xiv
2.5.3.
Graphic User Interface
(GUI) …...…… 19
BAB III : PERANCANGAN
3.1.
Proses Penyandian ... 22
3.2.
Pembuatan
Error
... 25
3.3.
Pengawasandi ... 28
BAB IV : PEMBAHASAN
4.1.
Tampilan Awal MATLAB …………...………. 33
4.2.
Pembuatan Matrik Katasandi ……....…..….………. 34
4.3.
Proses Memasukkan Data ………....…..……….…….. 35
4.4.
Proses Penyandian ………..…...……….…. 37
4.5.
Proses Pembuatan
Error
…...…………...………..… 38
4.6.
Proses Pengawasandi …………...….……...…………..… 40
4.6.1.
Proses Deteksi
Error
………...…………..… 40
4.6.2.
Proses Koreksi
Error
…………...…..……….……. 44
4.7.
Analisis Hasil Uji Coba Program ……...…..………. 46
4.7.1.
Hasil Uji Coba I ……...……..…...………. 46
4.7.2.
Hasil Uji Coba II ………...…....……… 49
xvi
Halaman
Gambar 2.1. Contoh dari sinyal antipodal …………...………...……...……… 7
Gambar 2.2
Contoh dari sinyal orthogonal ... 8
Gambar 2.3
Window utama MATLAB ……...…………...….…………...….. 16
Gambar 2.4
Command Window ………...………...…....…. 16
Gambar 2.5
Current Directory Window ………...………...…..……...…..…… 17
Gambar 2.6
Workspace Window …………...………...………...….….. 17
Gambar 2.7
Command History Window ………...………...……… 18
Gambar 2.8 MATLAB editor …...………...…...……….. 18
Gambar 2.9
Form designer ... 20
Gambar 2.10
Property Inspector ... 20
Gambar 3.1 Diagram alir program ... 21
Gambar 3.2 Tampilan dari menu utama ... 22
Gambar 3.3
Diagram alir proses penyandian ... 24
Gambar 3.4
Tampilan proses memasukkan data ……...……...……….. 25
Gambar 3.5 Tampilan hasil dari proses penyandian ... 25
Gambar 3.6 Diagram alir pembuatan error ... 26
Gambar 3.7 Tampilan katasandi pada pembuatan error ... 27
Gambar 3.8 Tampilan untuk mengubah-ubah error ... 27
Gambar 3.9 Tampilan kata terima pada pembuatan error ... 27
Gambar 3.10 Tampilan posisi bit yang diubah ... 28
xvii
Gambar 3.14 Tampilan nilai Zij ... 31
Gambar 3.15 Tampilan pesan proses Look up table …………...………...……... 31
Gambar 3.16 Tampilan hasil deteksi ... 31
Gambar 3.17 Tampilan untuk data yang diterima ... 32
Gambar 3.18 Tampilan jumlah error ... 32
Gambar 3.19 Tampilan untuk data yang diterima ... 32
Gambar 4.1 Tampilan awal MATLAB………...………...………... 34
Gambar 4.2
Tampilan title dari program ...……...…...…..…...………… 34
Gambar 4.3
Tampilan untuk memasukkan data. ...…...……….……… 35
Gambar 4.4 Tampilan tanda perhatian. ………...…...…..………. 36
Gambar 4.5 Tampilan data yang telah dimasukan ... 36
Gambar 4.6 Tampilan dari data yang telah disandikan ... 37
Gambar 4.7 Tampilan dari proses pembuatan error ... 39
Gambar 4.8 Tampilan katasandi pembanding ... 41
Gambar 4.9 Tampilan dari hasil proses deteksi ... 43
xviii
Halaman
Tabel 4.1 Hasil uji coba dengan masukan data ‘8B’ (heksadesimal) …...……… 46
Tabel 4.2 Hasil uji coba dengan masukan data ‘06’ (heksadesimal) ………...…… 49
xix
Halaman
Listing Program ... L1
Tabel Hasil Uji Coba ... L6
1
1.1.
Judul
Simulasi Penyandi dan Pengawasandi Sandi Biorthogonal 8 Bit dengan Matlab
(Encoder and Decoder Simulation of 8 Bit Biorthogonal Codes with Matlab).
1.2.
Latar Belakang Masalah
Kesalahan (error) merupakan masalah pada sistem komunikasi, sebab dapat
mengurangi kinerja dari sistem. Untuk mengatasi masalah tersebut diperlukan suatu
sistem yang dapat mengkoreksi error. Oleh karena itu pada sistem komunikasi diperlukan
penyandian
.
Beberapa studi mengatakan, jika sistem komunikasi menggunakan
penyandian, maka dapat diperoleh kemampuan yang sangat handal untuk mengkoreksi
kesalahan.
Contoh beberapa sandi yang digunakan dalam proses penyandian adalah sandi
orthogonal, sandi biorthogonal, sandi transorthogonal dan lain-lain. Sandi-sandi yang
terkenal dalam penyandian bentuk gelombang (waveform coding) adalah sandi
orthogonal dan biorthogonal [1].
Sandi yang akan dibahas pada tulisan ini adalah sandi biorthogonal (biorthogonal
code). Sebuah program untuk menyimulasikan matrik pembangkit dari sandi
biorthogonal 8 bit, proses penyandian, pembuatan error serta deteksi dan koreksi error
1.3.
Tujuan dan Manfaat Penelitian
Tujuan dari penulisan tugas akhir ini adalah untuk membuat program simulasi
penyandian dengan sandi biorthogonal serta mengetahui kemampuan deteksi dan koreksi
error dari sandi biorthogonal.
Manfaat dari pembuatan program ini adalah mempermudah kalangan akademisi
untuk memahami penyandian dan pengawasandi sandi biorthogonal.
1.4.
Batasan Masalah
Program simulasi Penyandi dan Pengawasandi Sandi Biorthogonal dibuat dengan
batasan-batasan masalah sebagai berikut :
1.
Program akan diimplementasikan menggunakan Matlab.
2.
Masukan ( input
) berupa pesan 8 bit yang direpresentasikan menggunakan
bilangan heksadesimal 2 digit.
3.
Memasukkan input melalui keyboard.
4.
Kemampuan deteksi error maksimal 63 bit.
5.
Kemampuan koreksi error maksimal 31 bit.
1.5.
Metodologi Penelitian
Metode penelitian untuk membuat program simulasi Penyandi dan Pengawasandi
Sandi Biorthogonal adalah :
1.
Dengan mempelajari referensi-referensi yang berhubungan dengan sandi
2.
Membuat program untuk simulasi pembangkitan matrik sandi biorthogonal,
proses penyandian, pembuatan error, deteksi dan koreksi error.
3.
Menguji program untuk mengetahui apakah program sudah berjalan sesuai
dengan apa yang diinginkan.
1.6.
Sistematika Penulisan
Penulisan laporan pra tugas akhir ini terdiri dari lima bab yang masing-masing
berisi tentang :
1.
Bab I Pendahuluan
Bab pendahuluan ini berisi tentang latar belakang masalah, rumusan
masalah, batasan masalah, tujuan penulisan, manfaat penelitian, metodologi
penelitian, dan sistematika penulisan.
2.
Bab II Dasar Teori
Bab ini berisi dasar teori tentang sandi yang dibahas dalam tulisan ini
yaitu sandi biorthogonal serta perangkat lunak (software) yang digunakan dalam
merancang program simulasi.
3.
Bab III Perancangan
Bab ini menjelaskan tentang bagaimana membuat program simulasi matrik
pembangkitan sandi biorthogonal 8 bit, proses penyandian, pembuatan error,
deteksi dan koreksi error yang dilengkapi dengan flow chart.
4.
Bab IV Pembahasan
tentang proses penyandian sandi biorthogonal, pembuatan error serta deteksi dan
koreksi error.
5.
Bab V Kesimpulan dan Saran
Bab ini berisi tentang kesimpulan yang ditulis berdasarkan keseluruhan
dari proses perancangan dan pembuatan program, dan saran untuk perbaikan
5
Gangguan pada sistem komunikasi, misalnya noise,
fading, dan lain-lain
merupakan masalah yang sering terjadi. Penyandian kanal (channel coding) adalah proses
pengubahan sinyal pesan. Penyandian kanal (channel coding) dilakukan untuk mengatasi
permasalahan di atas dengan cara memperbaiki sinyal pesan yang akan ditransmisikan
agar menjadi lebih handal jika terkena gangguan-gangguan. Jika sampai terdapat
kesalahan bit, maka penerima mampu untuk mendeteksi dan mengoreksi kesalahan
sendiri.
Penyandian kanal dibagi dalam dua kategori, yaitu penyandian bentuk gelombang
(waveform coding) dan penyandian runtun struktur (structured sequences).
Waveform
coding berhubungan dengan penggunaan bentuk sinyal baru yang meningkatkan deteksi
sinyal asli. Structured sequences berhubungan dengan penggunaan redundant bit untuk
menentukan ada tidaknya noise pada kanal [1].
2.1
Penyandian Kanal (
Channel Coding
)
2.1.1
Penyandian Runtun Struktur (
Structured Sequences
)
Penyandian
Structured Sequences menggunakan redundant bit yang
ditambahkan pada data asli sehingga mudah untuk mendeteksi dan mengkoreksi error.
Salah satu contoh dari penyandian Structured Sequences adalah block coding. Pada
penyandian
block codes, sejumlah bit pariti ditambahkan pada bit informasi sehingga
informasi dikodekan kedalam n bit kode. Dengan demikian jumlah bit redudansi yang
ditambahkan pada data informasinya sebanyak n-k bit. Block code yang dihasilkan dapat
direpresentasikan dalam bentuk (n,k).
Sandi blok mempunyai matrik generator yang digunakan untuk menghasilkan
katasandi sebagai berikut :
G = P I
k(2.1)
dengan P = matrik pariti bit.
I
k= matrik identitas.
Vektor kode U dihasilkan dari perkalian data m dengan matrik generator G seperti pada
persamaan berikut :
U = mG (2.2)
dengan U = katasandi
Sebagai contoh sebuah data 1 1 0, dengan menggunakan persamaan (2.2) akan dihasilkan
katasandi sebagai berikut :
jika ,
G =
⎥ ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎢ ⎣ ⎡ 1 0 0 1 0 1 0 1 0 1 1 0 0 0 1 0 1 1maka ,
U = mG
U = [1 1 0]
⎥ ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎢ ⎣ ⎡ 1 0 0 1 0 1 0 1 0 1 1 0 0 0 1 0 1 1
= 1 1 0 1 0 0 + 0 1 1 0 1 0 + 1 0 1 0 0 1
Dengan cara yang sama diperoleh katasandi untuk data 3 bit yang lain yaitu :
Message vector Code vector
0 0 0 0 0 0 0 0 0
1 0 0 1 1 0 1 0 0
0 1 0 0 1 1 0 1 0
1 1 0 1 0 1 1 1 0
0 0 1 1 0 1 0 0 1
1 0 1 0 1 1 1 0 1
0 1 1 1 1 0 0 1 1
1 1 1 0 0 0 1 1 1
2.2.2.
Penyandian Bentuk Gelombang (
Waveform Coding
)
2.1.2.1
Sinyal Antipodal dan Sinyal
Orthogonal
Sinyal-sinyal antipodal adalah sinyal-sinyal yang berbeda 180
0atau dengan kata
lain salah satu sinyal adalah negatif dari sinyal yang lain. Contoh dari sinyal-sinyal
antipodal ditunjukkan pada Gambar 2.1.
Analytic Waveform Vector
representation representation representation
S
1(t)
T
S
1(t) = sin
ω
0t
0 t
d =2 EE
E
S
2(t) S2 0 S1
Ψ1
( )
t(c)
S
2(t) = - sin
ω
0t
0 t
T t≤
≤
0
T
(a)
(b)
Gambar 2.1 Contoh dari sinyal antipodal. (a) Persamaan gelombang. (b) Sinyal dalam
Contoh dari sinyal orthogonal ditunjukkan pada Gambar 2.2. Sin x dan cos x
merupakan fungsi orthogonal karena berbeda fasa sebesar 90
0. Demikian juga dengan sin
mx dan cos nx, dengan m dan n adalah bilangan bulat dan m
≠n. Gambar 2.2
menunjukkan bahwa gelombang kotak dideskripsikan sebagai :
S
1(t) = p(t)
0≤t ≤T(2.3)
S
2(t) = p
⎟
⎠
⎞
⎜
⎝
⎛ −
2
T
t
0≤t ≤T
dengan p(t) adalah gelombang dengan durasi
λ
= T/2, dan T adalah durasi simbol.
Analytic Waveform Vector
representation representation representation
S
1(t)
1
T
S
1(t) = p(t) 0 t
T/2 T
ES
2d = 2
EE
Ψ1
( )
t0 S
1S
2(t) (c)
1
T t
S
2(t) = p
⎟
⎠
⎞
⎜
⎝
⎛ −
2
T
t
0 T/2 T
(a) (b)
Gambar 2.2 Contoh dari sinyal orthogonal. (a) Persamaan gelombang. (b) Sinyal dalam
2.1.2.2
Penyandian Gelombang dengan Deteksi Korelasi
Penyandian gelombang mengubah satu set gelombang menjadi satu set
gelombang yang lebih baik. Yang paling populer dari waveform codes adalah
orthogonal
dan
biorthogonal codes. Tujuan dari penyandian ini adalah untuk membuat
setiap gelombang dari sinyal yang dikodekan sebeda mungkin atau membuat nilai
koefisien
cross-correlation (z
ij) dari setiap pasangan sinyal sekecil mungkin. Nilai
terkecil dari koefisien cross-correlation (z
ij) dihasilkan jika satu sinyal merupakan
antikorelasi (z
ij= -1) dari sinyal lainnya, tetapi hal ini hanya dapat dicapai jika jumlah
simbol dalam kelompok sinyal adalah dua (M=2) dan setiap simbol adalah antipodal.
Cross-correlation antara dua sinyal merupakan ukuran jarak antara
vektor-vektor sinyal. Semakin kecil nilai cross-correlation
maka jarak antar vektor semakin
panjang. Hal ini dapat dibuktikan pada Gambar 2.1 yang menunjukkan sinyal-sinyal
antipodal (dengan z
ij= -1) yang digambarkan dengan vektor yang memiliki jarak yang
berjauhan antara satu dengan yang lain dan pada Gambar 2.2 yang menunjukkan
sinyal-sinyal orthogonal (dengan z
ij= 0) yang digambarkan dengan vektor yang memiliki jarak
yang lebih dekat satu dengan yang lain jika dibandingkan dengan vektor-vektor antipodal.
2.2
Sandi
Biorthogonal
Sebuah himpunan sinyal biorthogonal dari M total sinyal atau katasandi dapat
disusun dari M/2 sinyal orthogonal ditambah dengan negatif dari setiap sinyal, dengan
kata lain sandi biorthogonal terdiri dari sandi orthogonal dengan setiap
katasandi orthogonal pada satu bagian memiliki katasandi antipodal pada bagian lain.
( ) ( )
⎪ ⎪ ⎪ ⎩ ⎪ ⎪ ⎪ ⎨ ⎧ ≠ − ≠ = − ≠ − = = =∫
2 , 0 2 , 1 1 1 0 M j i j i untuk M j i j i untuk j i untuk dt t s t s E z T j iij
(2.4)
dengan E = energi sinyal.
Persamaan (2.4) merupakan persamaan koefisien cross-corelation secara umum
untuk sinyal biorthogonal. Jika bentuk gelombang sinyal biorthogonal merupakan
gelombang biner, maka persamaan (2.4) dapat disederhanakan menjadi :
digit
total
jumlah
sama
tidak
yang
digit
jumlah
sama
yang
digit
jumlah
z
ij=
−
(2.5)
⎪ ⎪ ⎪ ⎩ ⎪ ⎪ ⎪ ⎨ ⎧ ≠ − ≠ = − ≠ − = = 2 , 0 2 , 1 1 M j i j i untuk M j i j i untuk j i untuk zij
dengan i,j = 1, ..., M.
M = ukuran katasandi.
Koefisien cross-corelation antara dua sinyal merupakan ukuran jarak antara kedua
vektor sinyal. Semakin kecil nilai cross-corelation, jarak antar vektor semakin panjang.
Nilai-nilai koefisien cross-corelation (Zij) ini dapat dikelompokkan menjadi :
1.
Nilai Zij = 1, jika semua digit dari katasandi yang diterima sama dengan semua
digit dari katasandi pembanding.
2.
Nilai 0 < Zij < 1, jika jumlah digit yang berbeda tidak sama dengan jumlah digit
yang sama. Katasandi yang diterima ini bukan merupakan sinyal orthogonal.
3.
Nilai Zij = 0, jika jumlah digit yang berbeda sama dengan jumlah digit yang sama,
atau jumlah digit yang berbeda dan yang sama masing-masing adalah 64 digit.
Katasandi yang diterima ini merupakan sinyal orthogonal, tetapi belum tentu
merupakan sandi biorthogonal.
Kelebihan sandi biorthogonal dibandingkan sandi orthogonal adalah untuk data
yang sama sandi biorthogonal membutuhkan setengah katasandi dari sandi orthogonal,
sehingga
bandwidth yang dibutuhkan untuk sandi biorthogonal adalah setengah dari
kebutuhan bandwidth sandi orthogonal [1].
2.3
Penyandian Sandi
Biorthogonal
Himpunan katasandi biorthogonal disusun menggunakan setengah dari katasandi
orthogonal, dengan matrik katasandi biorthogonal ini berdimensi 2
k×
2
(k-1). Sebagai
contoh, untuk data 3 bit dapat ditransformasikan ke dalam katasandi biorthogonal sebagai
berikut :
data katasandi biorthogonal
0 0 0 0 0 0 0
0 0 1 0 1 0 1
0 1 0 0 0 1 1
0 1 1 0 1 1 0
B
3=
1 0 0 1 1 1 1
1 0 1 1 0 1 0
1 1 0 1 1 0 0
1 1 1 1 0 0 1
Sebagai perbandingan data 3 bit dapat ditransformasikan ke dalam katasandi orthogonal
sebagai berikut :
data katasandi orthogonal
0 0 0 0 0 0 0 0 0 0 0
0 0 1 0 1 0 1 0 1 0 1
0 1 0 0 0 1 1 0 0 1 1
0 1 1 0 1 1 0 0 1 1 0
H
3=
1 0 0 0 0 0 0 1 1 1 1
1 0 1 0 1 0 1 1 0 1 0
1 1 0 0 0 1 1 1 1 0 0
1 1 1 0 1 1 0 1 0 0 1
Secara umum, matrik katasandi biorthogonal B
kdengan data k-bit dapat disusun dari
matrik H
k-1, sebagai berikut :
⎥
⎥
⎦
⎤
⎢
⎢
⎣
⎡
=
− −
1 1
k k k
H
H
B
(2.6)
dengan matrik H
1adalah :
data katasandi orthogonal
1
0
⎥
⎦
⎤
⎢
⎣
⎡
=
1
0
0
0
1
H
Dengan diketahuinya matrik H
1maka matrik H
2dapat disusun sebagai berikut :
data katasandi orthogonal
0 0 0 0 0 0
0 1 0 1 0 1
H
2=
1 0 0 0 1 1
Secara umum, matrik katasandi, H
k, dengan dimensi 2
k×
2
kuntuk k-bit data dapat
disusun dari matrik H
k-1, seperti di bawah ini :
⎥
⎦
⎤
⎢
⎣
⎡
=
− −
− −
1 1
1 1
k k
k k
k
H
H
H
H
H
(2.7)
Pada penyandian sandi orthogonal data yang berjumlah k-bit akan disandikan
menjadi katasandi dengan jumlah bit 2
k. Sebagai contoh, data yang berjumlah 3 bit akan
disandikan menjadi katasandi dengan jumlah bit 2
3atau sama dengan 8 bit. Sedangkan
untuk penyandian sandi biorthogonal, karena merupakan setengah dari sandi orthogonal,
maka data yang berjumlah k-bit akan disandikan menjadi katasandi dengan jumlah bit
2
k/2. Sehingga jika data 3 bit akan disandikan dengan sandi biorthogonal, maka data akan
menjadi katasandi dengan jumlah bit 2
3/2 atau sama dengan 4 bit.
2.4
Pengawasandi Sandi
Biorthogonal
2.4.1
Bobot dan Jarak
Hamming
Bobot Hamming (Hamming weight) dari suatu vektor U didefinisikan
sebagai jumlah elemen nonzero di dalam U. Untuk suatu vektor biner, bobot
Hamming adalah setara dengan jumlah bit 1 pada vektor biner tersebut. Sebagai contoh,
jika U = 001010011, maka :
4
)
(
U
=
w
Sedangkan jarak Hamming
(Hamming distance) antara dua vektor sandi didefinisikan
sebagai banyaknya elemen yang berbeda, contohnya :
U = 0 0 1 0 1 0 0 1 1
V = 1 0 1 0 0 0 1 1 1
d(U,V) = 3
Dengan penambahan modulo-2, diketahui bahwa penjumlahan dua vektor sandi
biner menghasilkan vektor baru. Dalam vektor baru ini bit 1 terletak pada posisi saat
kedua vektor tersebut berbeda seperti ditunjukkan pada contoh di bawah ini :
U + V = 1 0 0 0 1 0 1 0 0
Sehingga jarak Hamming antara dua vektor sandi sama dengan bobot Hamming dari
penjumlahan kedua vektor tersebut yaitu :
)
(
)
,
(
U
V
w
U
V
d
=
+
(2.8)
2.4.2
Jarak Minimum Suatu Sandi Linear
Penjumlahan dua vektor sandi akan menghasilkan vektor sandi baru yang tetap
merupakan anggota subspace. Jika U dan V adalah vektor sandi maka W = U + V harus
pula merupakan vektor sandi, sehingga jarak antara dua vektor sandi sama dengan bobot
vektor sandi yang baru, yaitu :
)
(
)
(
)
,
(
U
V
w
U
V
w
W
d
=
+
=
(2.9)
Jadi jarak minimum suatu sandi linear dapat diketahui hanya dengan menguji bobot dari
2.4.3
Deteksi dan Koreksi
Error
Kemampuan deteksi kesalahan (error) dari suatu sandi dapat dirumuskan sebagai
berikut :
e = d
min– 1 (2.10)
dengan d
min= jarak minimum dari sandi
.Besarnya kemampuan koreksi kesalahan (error) dari suatu sandi tergantung dari
sandi tersebut. Untuk sandi yang berdasarkan bit, kemampuan koreksi kesalahan
dituliskan dalam rumus berikut :
⎥⎦
⎥
⎢⎣
⎢
−
=
2
1
min
d
t
(2.11)
Pada rumus tersebut tampak bahwa kemampuan koreksi kesalahan dari sandi yang
berdasarkan bit, ditentukan oleh jarak minimum dari sandi tersebut [2].
2.5
MATLAB
MATLAB adalah pemrograman level tinggi yang dikhususkan untuk komputasi
teknis. MATLAB merupakan singkatan dari MATrix LABoratory. Bahasa ini
mengintegrasikan kemampuan komputasi, visualisasi dan pemrograman dalam sebuah
lingkungan yang mudah digunakan [3].
Sebagaimana bahasa pemrograman lainnya, MATLAB juga menyediakan
lingkungan kerja terpadu yang sangat mendukung dalam pembangunan aplikasi.
Lingkungan terpadu ini terdiri dari beberapa form/window yang memiliki kegunaan
2.5.1
Window
utama MATLAB
Window ini adalah window induk yang melingkupi seluruh lingkungan kerja
MATLAB. Terdiri dari beberapa window, antara lain Command Window,
Current
Directory Window,
Workspace Window dan Command History Window yang memiliki
fungsinya masing-masing. Namun yang terpenting adalah Command Window, yang
merupakan tempat untuk berinteraksi dengan MATLAB.
Gambar 2.3 Window utama MATLAB
2.5.1.1
Command Window
Command Window berfungsi sebagai penerima perintah dari pengguna untuk
menjalankan seluruh fungsi-fungsi yang disediakan oleh MATLAB.
2.5.1.2
Current Directory Window
Gambar 2.5 Current Directory Window
Window ini berfungsi sebagai browser direktori aktif, yang hampir sama dengan
window explorer.
2.5.1.3
Workspace Window
Workspace Window berfungsi sebagai navigator bagi pemakai dalam
menyediakan informasi mengenai variable yang sedang aktif dalam workspace pada saat
pemakaian.
Workspace adalah suatu lingkungan abstrak yang menyimpan seluruh
variable dan perintah yang pernah digunakan selama penggunaan MATLAB berlangsung.
2.5.1.4
Command History Window
Gambar 2.7 Command History Window
Window ini berfungsi sebagai penyimpan perintah-perintah yang pernah
dikerjakan pada suatu workspace.
2.5.2
MATLAB Editor
Window ini berfungsi untuk membuat skrip program MATLAB. Ketika window
utama MATLAB muncul, window MATLAB editor tidak akan muncul dengan
sendirinya. Cara memanggil window MATLAB editor adalah dengan mengetikkan edit
pada prompt MATLAB, atau dengan cara mengklik pada ikon file < new < M-file.
2.5.3
Graphic User Interface
(GUI)
Graphic User Interface (GUI) adalah media tampilan grafis sebagai pengganti
perintah teks untuk pengguna (user) berinteraksi. Untuk keperluan pemrograman
Window, MATLAB telah menyediakan komponen-komponen standar, seperti pushbotton,
edit,
text,
combo,
checkbox dan lain-lain untuk digunakan sebagai media disain.
MATLAB menyediakan sebuah GUI Designer yang dibungkus dalam fungsi GUIDE.
Untuk menjalankan fungsi ini user harus mengetikkan pada Window MATLAB, sebagai
berikut :
Selanjutnya MATLAB akan merespon dengan menampilkan Form designer
seperti ditunjukkan pada Gambar 2.9. Form designer adalah bagian yang digunakan
untuk meletakkan komponen-komponen window yang dibutuhkan.
Gambar 2.10 adalah form property inspector, melalui form ini
komponen-komponen yang digunakan dapat dikontrol. Tampilan window ini terbagi dua, bagian
pertama (sebelah kiri) adalah daftar property yang dimiliki oleh komponen tersebut.
Setiap komponen akan memiliki property yang berbeda satu dengan yang lainnya. Bagian
kedua (sebelah kanan) adalah daftar nilai parameter
(value property) yang dapat diatur
Gambar 2.9 Form designer
21
Program penyandi dan pengawasandi sandi biorthogonal 8 bit ini akan dibuat
menggunakan MATLAB. Diagram alir (flowchart) dari program ini ditunjukkan pada
Gambar 3.1.
Gambar 3.1 Diagram alir program
Pertama-tama program akan meminta pengguna (user) untuk memasukkan
input berupa bilangan heksadesimal 2 digit. Kemudian input akan disandikan
menggunakan sandi biorthogonal.
Input yang telah disandikan dapat diubah-ubah
oleh
user sehingga terjadi error. Selanjutnya program akan mendeteksi untuk
mengetahui apakah katasandi telah diubah sehingga terjadi error atau tidak. Setelah
mendeteksi, program akan menginformasikan ada tidaknya error. Jika terjadi error,
maka program akan mengkoreksi input, sehingga dihasilkan output berupa data yang
mulai
Inputdata
Penyandian
Pembuatan error
Pengawasandian (Deteksi dan koreksierror)
Outputdata
sama dengan input. Gambar 3.2 menunjukkan tampilan menu utama dari program
penyandi dan pengawasandi.
Gambar 3.2 Tampilan dari menu utama
4.1.
Proses Penyandian
Dalam proses penyandian input data 8 bit biner akan menjadi sebuah
katasandi. Proses penyandian ini dilakukan dengan menggunakan matrik pada
persamaan (2.6). Karena input data berjumlah 8 bit, maka persamaan (2.6) menjadi :
⎥
⎥
⎦
⎤
⎢
⎢
⎣
⎡
=
7 7 8
H
H
B
(3.1)
Untuk proses pembuatan matriks sandi biorthogonal 8 bit membutuhkan
matriks sandi orthogonal 7 bit. Pembuatan matriks H
7diawali dengan diketahuinya
elemen matriks H
1untuk membuat matriks H
2. Dengan tersusunnya matriks H
2,dapat
disusun pula matriks H
3dan seterusnya seperti rumusan di bawah ini :
⎥
⎦
⎤
⎢
⎣
⎡
=
1
0
0
0
1H
(3.2)
⎥
⎦
⎤
⎢
⎣
⎡
=
1 1 1 1 2H
H
H
H
H
(3.3)
⎥
⎦
⎤
⎢
⎣
⎡
=
2 2 2 2 3H
H
H
H
H
(3.4)
⎥
⎦
⎤
⎢
⎣
⎡
=
3 3 3 3 4H
H
H
H
H
(3.5)
⎥
⎦
⎤
⎢
⎣
⎡
=
4 4 4 4 5H
H
H
H
H
(3.6)
⎥
⎦
⎤
⎢
⎣
⎡
=
5 5 5 5 6H
H
H
H
H
(3.7)
⎥
⎦
⎤
⎢
⎣
⎡
=
6 6 6 6 7H
H
H
H
H
(3.8)
⎥
⎦
⎤
⎢
⎣
⎡
=
7 7 8H
H
Diagram alir dari proses penyandian ditunjukkan pada Gambar 3.3. Pada
proses penyandian ini, program akan meminta user untuk memasukkan data berupa
bilangan heksadesimal. Kemudian program akan memproses data yang masuk. Jika
besarnya nilai data tidak terletak antara 0 s/d FF dalam bilangan heksadesimal, maka
program akan meminta user untuk memasukkan data kembali. Jika data yang
dimasukkan sesuai, maka program akan segera memproses data untuk disandikan.
Tampilan dari proses memasukkan data dalam bilangan heksadesimal ditunjukkan
pada Gambar 3.4. Tampilan untuk hasil dari proses penyandian ditunjukkan pada
Gambar 3.5.
T T
Y
Gambar 3.3 Diagram alir proses penyandian
mulai
Pembuatan Matrik B8
Masukkan pesan berupa bilangan heksadesimal 2 digit
Apakah input
≤
2 digit ? Look Up table B8Sandi 128 bit
Gambar 3.4 Tampilan proses memasukkan data
Gambar 3.5 Tampilan hasil dari proses penyandian
3.2
Pembuatan
Error
Dalam proses pembuatan error, katasandi akan diubah sesuai dengan
keinginan user dengan suatu fasilitas untuk mengubah angka 0 atau 1 yang letaknya di
mana saja pada sebuah katasandi. Diagram alir untuk proses pembuatan error
ditunjukkan pada Gambar 3.6.
Setelah
user memasukkan posisi bit yang ingin diubah, program akan
mengecek apakah bit pada posisi yang diinginkan adalah bit 1 atau 0. Jika pada posisi
yang diinginkan adalah bit 1, maka akan diubah menjadi bit 0 dan begitu juga yang
sebaliknya. Selanjutnya user masih dapat mengubah-ubah katasandi dengan cara yang
T Y
T
Y
T
Y
Y
T
Gambar 3.6 Diagram alir pembuatan error
Gambar 3.7 adalah tampilan katasandi pada pembuatan error. Katasandi yang
ditampilkan pada kotak ini adalah katasandi yang nantinya akan diubah-ubah oleh
user agar terjadi error.
mulai
Katasandi 128
Ingin diubah ?
Masukkan posisi bit yang ingin diubah (g)
Apakah
128
1
≤
g
≤
?
Apakah X[g] = 1?
X[g] = 0
X[g] = 1
Mau menambahkan
error lagi ?
katasandi
Gambar 3.7 Tampilan katasandi pada pembuatan error
Gambar 3.8 adalah tampilan untuk user mengubah-ubah katasandi supaya
katasandi mengalami error. Jika kita menekan tombol ’UBAH’, maka katasandi pada
posisi yang diinginkan oleh user akan diubah. Sedangkan jika kita menekan tombol
’BATAL’, maka katasandi tidak akan mengalami perubahan.
Gambar 3.8 Tampilan untuk mengubah-ubah error
Gambar 3.9 adalah tampilan untuk kata terima pada pembuatan error. Kata
terima pada tampilan ini merupakan katasandi yang telah diubah-ubah oleh user.
Gambar 3.10 adalah tampilan untuk posisi bit yang diubah. Tampilan ini akan berisi
angka-angka yang menunjukkan pada bit berapa saja katasandi diubah oleh user.
Gambar 3.10 Tampilan posisi bit yang diubah
3.3
Pengawasandi
Diagram alir dari proses pengawasandi ditunjukkan pada Gambar 3.11. Proses
pengawasandi terdiri dari dua proses yaitu proses deteksi dan koreksi error. Proses
deteksi bertujuan untuk mengetahui ada tidaknya error pada kata terima. Jika terdapat
error pada kata terima, maka proses selanjutnya adalah proses koreksi dan proses
pengawasandi selesai setelah proses koreksi. Tetapi jika tidak ditemukan error pada
kata terima, maka proses pengawasandi selesai setelah proses deteksi.
T
Y
Gambar 3.11 Diagram alir pengawasandi
mulai
Kata terima
Deteksi error
Ada
error ? Koreksierror
Pada suatu sandi biorthogonal kemampuan deteksi dan koreksi error
berhubungan dengan jarak minimum sandi. Jarak minimum dari sandi biorthogonal
256
×
128 untuk semua katasandi adalah sama yaitu :
64 128 2 1
min
= × =
d
Dengan menggunakan persamaan (2.9) dan persamaan (2.10) kemampuan deteksi dan
koreksi kesalahannya dapat dihitung, yaitu :
Kemampuan deteksi kesalahan :
e = d
min– 1
= 64 – 1 = 63
Kemampuan koreksi kesalahan :
31
2
1
64
2
1
min
=
⎥⎦
⎥
⎢⎣
⎢
−
=
⎥⎦
⎥
⎢⎣
⎢
−
=
d
t
Pada proses deteksi error, kata terima dibandingkan dengan salah satu sandi
dari
look up table untuk mendapatkan nilai Z
ij. Pada proses look up table, jika
berhasil, berarti tidak ada error. Tapi jika look up table gagal, berarti kata terima
mengalami
error. Jika ada error, maka akan dicari nilai d
min(jarak minimum dari
sandi), kemudian dilakukan proses look up table yang akan menghasilkan data
terkirim 8 bit biner yang akan diubah ke dalam bilangan heksadesimal. Gambar 3.12
Y T Y T
T
Y
Gambar 3.12 Diagram alir proses deteksi dan koreksi error
mulai
Kata terima
Bandingkan dengan katasandi : 01010101010101010101010101010101 01010101010101010101010101010101 01010101010101010101010101010101 01010101010101010101010101010101
Hitung Zij
Zij= 1 Zij ≠0
Ada error
Look up table B8
Mencari dmin
Mencari indeks kata terima pada matriks
katasandi
Data = indeks - 1 Mengubah data
decimal menjadi heksadesimal Look up table B8
Look up table berhasil ?
Tidak ada error
Data diterima 8 bit
Gambar 3.13 sampai 3.19 adalah tampilan hasil-hasil dari proses deteksi dan
koreksi
error. Kotak pesan pada Gambar 3.15 akan berisi ”Proses Look up
BERHASIL” atau “Proses Look up GAGAL”. Jika kotak pesan berisi “Proses Look
up BERHASIL”, maka akan ada informasi lain dengan tampilan yang ditunjukkan
pada Gambar 3.16. Pada kotak hasil deteksi Gambar 3.16 akan diinformasikan bahwa
kata terima tidak ada error dan akan muncul pesan ”Tidak ada Error”. Kemudian kata
terima akan ditampilkan dengan tampilan seperti pada Gambar 3.17.
Gambar 3.13 Tampilan kata terima pada pembuatan error
Gambar 3.14 Tampilan nilai Zij
Gambar 3.15 Tampilan pesan proses Look up table
Gambar 3.17 Tampilan untuk data yang diterima
Jika kotak pesan pada proses look up table berisi ”Proses Look up GAGAL”,
maka informasi lain yang akan ditampilkan adalah pada kotak hasil deteksi akan
diinformasikan bahwa ada error pada kata terima dan akan muncul pesan ”Ada
Error”. Sebagai tambahan informasi, jumlah error yang terdeteksi akan ditampilkan
seperti pada Gambar 3.18. Kemudian kata terima dengan error yang telah dikoreksi
akan ditampilkan dengan tampilan seperti pada Gambar 3.19.
Gambar 3.18 Tampilan jumlah error
33
Program penyandi dan pengawasandi sandi biorthogonal 8 bit ini dibuat
menggunakan MATLAB. Pembuatan program ini tidak menggunakan GUI (Guide
User Interface) seperti pada perancangan sebelumnya yang ditunjukkan pada Gambar
3.2, hal ini dikarenakan keterbatasan waktu untuk mempelajari lebih dalam mengenai
GUI (Guide User Interface). Maka program akan ditampilkan pada command
window. Skrip program dibuat pada m-editor dan disimpan dalam m-files. Untuk skrip
program penyandi dan pengawasandi sandi biorthogonal 8 bit ini disimpan dengan
nama ’biortho.m’. Program ini terdiri dari beberapa bagian. Setiap bagian terdiri dari
perintah-perintah yang digunakan dalam setiap proses penyandian dan pengawasandi,
yaitu :
1.
Pembuatan matrik katasandi
2.
Proses memasukkan data
3.
Proses penyandian
4.
Proses pembuatan error
5.
Proses deteksi error
6.
Proses koreksi error
5.1.
Tampilan Awal MATLAB
Yang perlu dilakukan untuk menjalankan program ini adalah mengetikkan
Dengan menekan Enter, program akan dijalankan. Selanjutnya program akan
menampilkan
title program seperti ditunjukkan pada Gambar 4.2 dan meminta user
untuk memasukkan data berupa bilangan heksadesimal.
Gambar 4.1 Tampilan awal MATLAB.
Gambar 4.2 Tampilan title dari program .
4.2
Pembuatan Matrik Katasandi
Matrik
orthogonal 7 bit dibutuhkan untuk mendapatka matrik katasandi
biorthogonal 8 bit. Matrik katasandi orthogonal 7 bit diperoleh dengan diketahuinya
matrik katasandi biorthogonal
8 bit dengan ordo 256
×
128. Matrik katasandi yang
diperoleh dari proses pembuatan matrik ini selanjutnya akan digunakan untuk proses
penyandian.
Program yang berisi perintah untuk membuat matrik katasandi ditulis sebagai
berikut :
%membuat matrik Biorthogonal 8 bit
H1 = [0 0;0 1];
H2 = [H1 H1;H1 ~H1]; %operator ~ akan menghasilkan negasi (not) dari matrik H1
H3 = [H2 H2;H2 ~H2];
H4 = [H3 H3;H3 ~H3];
H5 = [H4 H4;H4 ~H4];
H6 = [H5 H5;H5 ~H5];
H7 = [H6 H6;H6 ~H6];
B8 = [H7;~H7];
4.3
Proses Memasukkan Data
Proses setelah program dijalankan adalah program meminta user untuk
memasukkan data berupa bilangan heksadesimal seperti ditunjukkan pada Gambar
4.3. Bilangan heksadesimal yang dimasukkan harus berkisar antara 00 s/d FF. Jika
lebih besar dari FF, maka program akan mengeluarkan tanda perhatian seperti
ditunjukkan pada Gambar 4.4.
Gambar 4.4 Tampilan tanda perhatian.
Setelah data dimasukkan, program akan mengubah data dari bilangan
heksadesimal menjadi bilangan biner dan desimal. Selanjutnya bilangan desimal hasil
dari pengubahan inilah yang akan digunakan untuk mencari katasandi dari data yang
dimasukkan. Untuk mempermudah pengamatan maka data yang telah dimasukkan
dan telah diubah ditampilkan kembali seperti ditunjukkan pada Gambar 4.5.
Gambar 4.5 Tampilan data yang telah dimasukan.
Di bawah ini adalah perintah-perintah program yang digunakan untuk
meminta user memasukkan data dan mengubah data menjadi bilangan lain :
a = inputdlg('Bilangan heksa yang anda inginkan = ','DATA');
disp('PROSES PENYANDI DAN PENGAWASANDI SANDI BIORTHOGONAL');
disp('---');
d = char(a);
if length (d) >= 3
errordlg('Pesan yang anda masukkan lebih dari 2 digit !!!','Perhatian')
else
b=hex2dec(d);
while length(c)<8
c = strcat('0',c);
end;
while length (d)<2
d = strcat('0',d);
end
disp(['Bilangan Heksadesimal = ',d]);
disp(['Bilangan Desimal = ',num2str(b)]);
disp(['Bilangan Biner = ',c]);
disp([' '] );
4.4
Proses Penyandian
Proses selanjutnya adalah proses penyandian. Data yang telah diubah menjadi
bentuk desimal digunakan untuk mengambil katasandi dari matrik katasandi yang
telah dibuat. Sebagai contoh, data yang dimasukkan adalah ‘8B’ (heksadesimal)
kemudian diubah menjadi bilangan desimal menjadi ‘139’, maka katasandi yang
diambil dari matrik katasandi adalah katasandi pada baris (data + 1) yaitu baris
ke-140, sehingga katasandi dari data ‘8B’ ditunjukkan pada Gambar 4.6. Data yang
diambil dari matrik katasandi harus ditambah 1 (satu) karena data masukan terdiri dari
bilangan desimal 0 s/d 255, sedangkan indeks matrik katasandi mulai dari 1 s/d 256.
Perintah-perintah program yang digunakan pada proses penyandian ini ditulis
sebagai berikut :
%menampilkan code biorthogonal 8 bit untuk setiap bilangan heksadesimal yang
diinginkan
baris1=' ';
baris2=' ';
baris3=' ';
baris4=' ';
if 0<=b<=255 %data di b adalah bilangan desimal
j = b + 1;
e = B8(j,:);
p = e;
baris1 =[baris1,num2str(p(1:32))];
baris2 =[baris2,num2str(p(33:64))];
baris3 =[baris3,num2str(p(65:96))];
baris4 =[baris4,num2str(p(97:128))];
disp('Sandi yang dikirim = ');
disp(baris1);
disp(baris2);
disp(baris3);
disp(baris4);
disp([' ']);
end
5.5.
Proses Pembuatan
Error
Pembuatan
error ini dimaksudkan sebagai sebuah simulasi terjadinya
gangguan yang dialami oleh data saat dikirimkan. Pada proses ini program meminta
user untuk memasukkan angka yang menunjukkan posisi bit yang ingin diubah.
otomatis program akan mengubah bit yang bernilai 1 menjadi 0, begitu juga
sebaliknya. Tampilan dari proses pembuatan error ditunjukkan pada Gambar 4.7.
Gambar 4.7 Tampilan dari proses pembuatan error.
Berikut ini adalah perintah-perintah yang digunakan pada proses pembuatan
error.
%proses pembuatan error
maubuaterror = 't';
maubuaterror = input ('Mau membuat error [Y/T]: ', 's');
disp([' ']);
if maubuaterror == 't'
baris5=' ';
baris6=' ';
baris7=' ';
baris8=' ';
baris5 =[baris5,num2str(p(1:32))];
baris6 =[baris6,num2str(p(33:64))];
baris7 =[baris7,num2str(p(65:96))];
baris8 =[baris8,num2str(p(97:128))];
disp ([' '])
disp('code = ');
disp(baris5);
disp(baris7);
disp(baris8);
else
disp('Error akan diletakkan pada kolom berapa saja ?(Ditulis menggunakan kurung
siku dan dipisah dengan spasi)');
g = input('Kolom yang diinginkan = ');
disp([' '] );
jml = length (g);
for i = 1:jml
if p(:,[g(i)])==0
p(:,[g(i)])=1;
else
p(:,[g(i)])=0;
end
end
end
4.6
Proses Pengawasandi
4.6.1
Proses Deteksi
Error
Pada proses deteksi error satu katasandi dibutuhkan sebagai pembanding.
Tujuannya untuk mendapatkan nilai digit yang berbeda dan nilai digit yang sama
antara katasandi pembanding dengan katasandi dari data yang diterima. Semua
katasandi pada matrik biorthogonal dapat digunakan sebagai pembanding, tetapi
hanya dibutuhkan satu katasandi saja. Pada program ini katasandi yang digunakan
Gambar 4.8 Tampilan katasandi pembanding.
Dengan membandingkan setiap digit dari kedua katasandi tersebut, akan
diperoleh jumlah digit yang berbeda dan jumlah digit yang sama. Kemudian kedua
hasil ini akan digunakan untuk menghitung besarnya nilai Zij dengan menggunakan
persamaan (2.5).
Di bawah ini adalah perintah-perintah yang digunakan untuk menghitung
jumlah digit yang berbeda dan yang sama serta menghitung nilai Zij.
%proses pendeteksian ada tidaknya error
K = B8(2,:);
digitBenar = 0;
digitSalah = 0;
dmin = 130;
adaError = 'no';
digitUbah = ' ';
for i1 = 1:128
if p(i1)==K(i1)
digitBenar = digitBenar+1;
else
digitSalah = digitSalah+1;
end;
end
zij = abs((digitBenar-digitSalah)/128);
disp([' ']);
disp(['Zij = ', num2str(zij)]);
Seperti ditunjukkan pada digram alir Gambar 3.13, proses deteksi error
dimulai dengan membandingkan kataterima dengan salah satu katasandi pada matrik
biorthogonal. Pada proses ini katasandi pembanding yang digunakan adalah katasandi
dari data ‘01’ (desimal).
Kemudian akan dihitung nilai Zij dengan membandingkan kata terima dengan
katasandi pembanding. Selanjutnya program akan mendeteksi apakah kata terima
mengalami kesalahan (error) atau tidak dengan melihat nilai Zij yang diperoleh. Jika
nilai Zij yang diperoleh adalah 1 (Zij = 1), maka katasandi yang diterima dianggap
tidak mengalami kesalahan (error), karena katasandi yang diterima sama dengan
katasandi pembanding. Seperti yang telah dijelaskan pada pengelompokan nilai-nilai
Zij di atas, jika nilai Zij yang diperoleh terletak antara 0 dan 1 (0 < Zij < 1), maka
dapat dipastikan bahwa katasandi yang diterima mengalami kesalahan (error).
Sedangkan jika nilai Zij sama dengan 0 (Zij = 0), maka katasandi yang diterima akan
dibandingkan dengan setiap katasandi yang ada pada tabel look up. Proses ini disebut
dengan proses look up table.
Jika proses ini berhasil dalam arti terdapat satu katasandi dalam tabel look up
yang sama dengan katasandi yang diterima, maka pesan yang disampaikan program
kepada
user adalah ‘Proses look up table berhasil’. Hal ini berarti bahwa katasandi
tidak mengalami kesalahan (error). Sebaliknya jika tidak ada satupun katasandi yang
sama, maka pesan yang disampaikan adalah ‘Proses look up table gagal’ yang berarti
Gambar 4.9 Tampilan dari hasil proses deteksi.
Perintah-perintah program yang digunakan dalam proses deteksi adalah
sebagai berikut :
adaError = 'no';
if zij == 1
disp(['Hasil deteksi : TIDAK ADA ERROR']);
elseif zij ~= 0
disp(['Hasil deteksi : ADA ERROR']);
adaError = 'ya';
elseif zij == 0
hasil= -1;
for i1=1:256
if p == B8(i1,1:128)
%hasil = index dari tabel H8
hasil = i1-1;
break;
end;
end;
if hasil==(-1)
disp('Proses Look up : GAGAL');
disp(' ');
disp(['Hasil deteksi : ADA ERROR']);
adaError='ya';
else
disp('Proses Look up table : BERHASIL');
disp(['Hasil deteksi : TIDAK ADA ERROR']);
end;
end;
5.6.2
Proses Koreksi
Error
Proses koreksi error akan dilakukan jika proses look up table gagal. Katasandi
yang diterima akan dibandingkan kembali dengan katasandi pada tabel look up.
Tujuan dari proses look up table ini adalah untuk mencari nilai dmin yaitu jumlah
terkecil digit yang berbeda antara katasandi yang diterima dengan katasandi pada
tabel look up. Perintah-perintah program yang digunakan adalah :
%proses koreksi error
dmin = 130;
hmin = 0;
for r1 = 1:256
digitbenar = 0;
digitsalah = 0;
L8 = B8(r1,1:128);
for r2 = 1:128
if L8(r2) == p(r2)
digitbenar = digitbenar + 1;
else
digitsalah = digitsalah + 1;
end ;
end ;
if dmin > digitsalah
dmin = digitsalah;
hmin = r1 - 1;
end ;
Dengan diperolehnya nilai dmin maka diperoleh pula posisi indeks tabel yang
kemudian diketahui sebagai data yang dikirim. Indeks tabel yang diperoleh ini masih
berupa bilangan desimal sehingga harus diubah menjadi bilangan heksadesimal untuk
mengetahui apakah data yang diterima sama dengan data yang dikirim.
Gambar 4.10 Tampilan hasil dari proses koreksi.
Berikut adalah perintah-perintah program yang digunakan untuk mengubah
bilangan desimal menjadi bilangan heksadesimal.
chmin = dec2bin (hmin);
fhmin = dec2hex (hmin);
while length(chmin)<8
chmin = strcat('0',chmin);
end;
while length(fhmin)<2
fhmin = strcat('0',fhmin);
end;
disp ([' '])
disp (['Nilai dmin = ', num2str(dmin)]);
disp ([' '])
disp (['KATA TERIMA YANG TELAH DIKOREKSI ']);
disp (['---']);
disp (['Hasil (HEKSADESIMAL) : ', num2str(fhmin)]);
disp (['Hasil (DESIMAL) : ', num2str(hmin)]);
disp (['Hasil (BINER) : ', chmin ]);
4.7
Analisis Hasil Uji Coba Program
Sub bab ini menjelaskan beberapa hasil uji coba program untuk mengetahui
apakah program dapat mendeteksi atau mengkoreksi error sesuai dengan teori yang
telah dijabarkan.
4.7.1
Hasil Uji Coba I
Pesan yang akan dimasukkan pada uji coba yang pertama adalah data ‘8B’
(heksadesimal) yang kemudian akan disandikan menggunakan sandi biorthogonal.
Setelah disandikan, katasandi dari pesan akan diubah-ubah sehingga mengalami
kesalahan (error). Hasil uji coba diperoleh dengan error yang dikombinasi seperti
ditunjukkan pada Tabel 4.1.
Tabel 4.1 Hasil uji coba dengan masukan data ‘8B’ (heksadesimal)
Masukan berupa bilangan heksadesimal = 8B = 10001011 = 139 Sandi yang dikirim :
1 0 0 1 1 0 0 1 0 1 1 0 0 1 1 0 1 0 0 1 1 0 0 1 0 1 1 0 0 1 1 0 1 0 0 1 1 0 0 1 0 1 1 0 0 1 1 0 1 0 0 1 1 0 0 1 0 1 1 0 0 1 1 0 1 0 0 1 1 0 0 1 0 1 1 0 0 1 1 0 1 0 0 1 1 0 0 1 0 1 1 0 0 1 1 0 1 0 0 1 1 0 0 1 0 1 1 0 0 1 1 0 1 0 0 1 1 0 0 1 0 1 1 0 0 1 1 0
Hasil hitungan Hasil program Kata Terima
No. Jml error
Posisi bit yang diubah
Digit beda
Digit
sama Zij dmin Zij,
pesan dmin
Hek sa
Desi
mal Biner
1 2 4, 18 64 64 0 2 0,
ada error 2 8B 139 10001011
2 14
72, 60, 19, 98, 7, 16, 109, 56, 80, 111, 49, 4,
13, 127
64 64 0 14 0,
Ada error 14 8B 139 10001011
3 29
122, 106, 90, 74, 58, 42, 26,
10, 117, 101, 85, 69, 53, 37,
21, 5, 16, 32, 48, 64, 80, 96, 112, 128, 114, 98, 82, 66, 50
51 77 0.20313 29 0.20313,
Ada error 29 8B 139 10001011
4 31
90, 10, 44, 78, 1, 5, 9, 3, 19, 51, 114, 21, 30,
2, 7, 128, 118, 80, 83, 64, 29,
65 63 0.015625 31 0.015625,
Tabel 4.1 (Lanjutan) Hasil uji coba dengan masukan data ‘8B’ (heksadesimal)
Hasil hitungan Hasil program Kata Terima
No. Jml error Posisi bit yang diubah Digit beda Digit
sama Zij dmin Zij,
pesan dmin
Hek sa
Desi
mal Biner
4 31
37, 48, 53, 69, 74, 85, 93, 103,
109, 116 65 63
0.015625 31 0.015625,
Ada error 31 8B 139 10001011
5 32
88, 49, 100, 4, 75, 61, 10, 117, 22, 108, 39, 64, 81, 17, 54, 1, 29, 113, 124, 70, 44, 93, 27, 104, 35, 14, 8, 20, 84, 73, 97,
47
62 66 0.03125 32 0.03125,
Ada error 32 8B 139 10001011
6 33
2, 18, 34, 50, 66, 81, 97, 113,
5, 21, 37, 53, 69, 85, 101, 117, 11, 27, 43, 59, 75, 91, 107, 123, 16, 32, 48, 64, 80, 96, 112,
128, 14
33 95 0.48438 33 0.48438,
Ada error 33 01 1 00000001
7 63
1, 17, 33, 49, 65, 81, 97, 113,
8, 24, 40, 56, 72, 88, 104, 120, 12, 28, 44, 60, 76, 92, 108, 124, 4, 20, 36, 52, 68, 84, 100, 116, 16, 32, 48, 64, 80, 96, 112, 128, 10, 26, 42, 58, 74, 90, 106, 122, 6, 22, 38, 54, 70, 86, 102, 118, 14, 30, 46, 62, 78, 94, 110,
126
64 64 0 16 0,
Ada error 16 8A 138 10001010
8 64
23, 110, 50, 7, 94, 123, 75, 15,
38, 115, 59, 102, 82, 31, 2, 127, 11, 54, 86, 67, 111, 43, 98, 19, 10 3, 71, 119, 22, 34, 106, 14, 27, 103, 18, 30, 90,
66, 35, 6, 42, 114, 91, 78, 126, 63, 26, 39, 122, 95, 74, 46, 58, 107, 99, 70, 62, 47, 79, 118, 83, 51, 87, 55
64 64 0 0
0, tidak ada
error
0 88 136 10001000
9 65
1, 18, 35, 52, 69, 86, 103, 120, 126, 109, 92, 75, 58, 41, 24, 7, 16, 32, 48, 64, 80, 96, 112, 12, 83, 20,
37, 54, 71, 88,
51 77 0.20313 41 0.20313,
Tabel 4.1 (Lanjutan) Hasil uji coba dengan masukan data ‘8B’ (heksadesimal)
Hasil hitungan Hasil program Kata Terima
No. Jml error
Posisi bit yang diubah
Digit beda
Digit
sama Zij dmin Zij,
pesan dmin
Hek sa
Desi
mal Biner
9 65
105, 122, 11, 22, 33, 44, 55, 66, 77, 99, 100, 101, 15, 31, 47, 63, 79, 95, 111, 127, 17, 49, 65, 81, 97, 113, 5,
9, 12, 14, 53, 73, 90, 117, 26
51 77 0.20313 41 0.20313,
Ada error 41 1A 26 00011010
Dari tabel 4.1 hasil uji coba dapat dilihat bahwa program simulasi
pengawasandi telah berhasil menyandikan data berupa bilangan heksadesimal 2 digit
menjadi katasandi 128 bit. Untuk proses pendeteksian, dapat dipastikan program
mampu mendeteksi saat jumlah error lebih kecil dari 64 bit (error
< 64 bit). Untuk
jumlah
error sama dengan 64 bit (error = 64 bit), program tidak mampu mendeteksi
error, hal ini sesuai dengan hasil perhitungan kemampuan deteksi error
yang telah
dibahas pada Bab III.
Pendeteksian error ini berdasarkan nilai Zij yang diperoleh. Jika nilai Zij yang
diperoleh diantara 0 dan 1, maka katasandi yang diterima pasti mengalami kesalahan
(error) karena katasandi ini bukan merupakan sinyal orthogonal. Jika nilai Zij yang
diperoleh adalah 0 maka katasandi yang diterima merupakan sinyal orthorgonal tetapi
tidak dapat dipastikan apakah sinyal merupakan sandi biorthogonal atau bukan.
Sehingga belum juga dapat dipastikan bahwa katasandi tidak mengalami kesalahan
(error) seperti ditunjukkan pada Tabel 4.1 no.1 dan no.2.
Untuk mem