Pada postingan sebelumnya di judul kriptografi keamanan jaringan gw cuma mencantumkan source code doank. Sebenarnya itu source code buat program tugas dari mata kuliah keamanan jaringan. Metoda transposisi klasik dengan beberapa modifikasi. Metode transposisi yang digunakan cuma pada bagian pembangkitan kuncinya. Buat enkripsi digunakan substitusi alias pertukaran plain ke cipher dengan daftar yang ada di kunci. Metodanya terdiri dari 6 metode, yaitu :
a. Metoda Transposisi ditulis horizontal, dibaca horizontal.
b. Metoda Transposisi ditulis horizontal, dibaca vertikal.
c. Metoda Transposisi ditulis horizontal, dibaca spiral.
d. Metoda Transposisi ditulis horizontal, dibaca diagonal.
e. Metoda Transposisi ditulis zigzag, dibaca horizontal.
f. Metoda Transposisi ditulis piramid, dibaca vertikal.
Berikut penjelasan singkat metoda diatas
1.a. : Metoda Transposisi : Ditulis Horizontal, dibaca Horizontal
Kata kunci : Anak Krakatau -> ANKRTU
Ciphertext : ANKRTUBCDEFGHIJLMOPQSVWXYZ <- Horizontal
|
Plain
|
A
|
B
|
C
|
D
|
E
|
F
|
G
|
H
|
I
|
J
|
K
|
L
|
M
|
N
|
O
|
P
|
Q
|
R
|
S
|
T
|
U
|
V
|
W
|
X
|
Y
|
Z
|
|
Cipher
|
A
|
N
|
K
|
R
|
T
|
U
|
B
|
C
|
D
|
E
|
F
|
G
|
H
|
I
|
J
|
L
|
M
|
O
|
P
|
Q
|
S
|
V
|
W
|
X
|
Y
|
Z
|
|
B
|
A
|
|
D
|
U
|
|
G
|
T
|
R
|
C
|
E
|
|
F
|
H
|
I
|
J
|
K
|
|
L
|
M
|
O
|
P
|
Q
|
|
S
|
V
|
W
|
X
|
Y
|
|
Z
|
|
|
|
|
|
|
Contoh : BUDIONO -> NSRDJIJ
1.b. : Metoda Transposisi : Ditulis Horizontal, dibaca Vertikal
Kata kunci : Bandung Utara -> BANDUGTR
Horizontal : BANDUGTRCEFHIJKLMNOPQSVWXYZ
Ciphertext : BGFLSZATHMVNRIOWDCJPXUEKQY - Vertikal
|
Plain
|
A
|
B
|
C
|
D
|
E
|
F
|
G
|
H
|
I
|
J
|
K
|
L
|
M
|
N
|
O
|
P
|
Q
|
R
|
S
|
T
|
U
|
V
|
W
|
X
|
Y
|
Z
|
|
Cipher
|
B
|
G
|
F
|
L
|
S
|
Z
|
A
|
T
|
H
|
M
|
V
|
N
|
R
|
I
|
O
|
W
|
D
|
C
|
J
|
P
|
X
|
U
|
E
|
K
|
Q
|
Y
|
|
B
|
A
|
|
D
|
U
|
|
G
|
K
|
O
|
T
|
E
|
M
|
C
|
F
|
H
|
I
|
|
J
|
L
|
P
|
Q
|
R
|
|
S
|
V
|
W
|
X
|
Y
|
|
Z
|
|
|
|
|
|
|
Contoh : KRIPTOGRAFI -> VCHWPOACBZH
1.c. : Metoda Transposisi
Ditulis Horizontal, dibaca Spiral
Kata kunci : Bandung Kota Kembang à BANDUGKOTEM
Horizontal : BANDUGKOTEMCFHIJLPQRSVWXYZ
Ciphertext : ZSJMGBANDUEIRYXWVLCKOTHQPF ß Spiral
|
Plain
|
A
|
B
|
C
|
D
|
E
|
F
|
G
|
H
|
I
|
J
|
K
|
L
|
M
|
N
|
O
|
P
|
Q
|
R
|
S
|
T
|
U
|
V
|
W
|
X
|
Y
|
Z
|
|
Cipher
|
Z
|
S
|
J
|
M
|
G
|
B
|
A
|
N
|
D
|
U
|
E
|
I
|
R
|
Y
|
X
|
W
|
V
|
L
|
C
|
K
|
O
|
T
|
H
|
Q
|
P
|
F
|
Contoh : KRIPTOGRAFI à ELDWKXALZBD
|
B
|
A
|
|
D
|
U
|
|
G
|
K
|
O
|
T
|
E
|
M
|
C
|
F
|
H
|
I
|
|
J
|
L
|
P
|
Q
|
R
|
|
S
|
V
|
W
|
X
|
Y
|
|
Z
|
|
|
|
|
|
1.d. : Metoda Transposisi
Ditulis Horizontal, dibaca Diagonal
Kata kunci : Bandung Kota Kembang à BANDUGKOTEM



Horizontal : BANDUGKOTEMCFHIJLPQRSVWXYZ
Ciphertext : BGAMKNJCODSLFTUZVPHEWQIXRY
|
Plain
|
A
|
B
|
C
|
D
|
E
|
F
|
G
|
H
|
I
|
J
|
K
|
L
|
M
|
N
|
O
|
P
|
Q
|
R
|
S
|
T
|
U
|
V
|
W
|
X
|
Y
|
Z
|
|
Cipher
|
B
|
G
|
A
|
M
|
K
|
N
|
J
|
C
|
O
|
D
|
S
|
L
|
F
|
T
|
U
|
Z
|
V
|
P
|
H
|
E
|
W
|
Q
|
I
|
X
|
R
|
Y
|
Contoh : KRIPTOGRAFI à SPOZEUJPBNO
1.e. : Metoda Transposisi
Ditulis Zigzag, dibaca Horizontal
Kata kunci : Anak Krakatau à ANKRTU
Zigzag : ANKRTUBCDEFGHIJLMOPQSVWXYZ
Ciphertext : THSRUGIQVKBFJPWNCELOXZADMY ß Horizontal
|
|
|
|
|
T
|
|
|
|
|
|
|
|
H
|
|
|
|
|
|
|
|
S
|
|
|
|
|
|
|
|
|
|
R
|
|
U
|
|
|
|
|
|
G
|
|
I
|
|
|
|
|
|
Q
|
|
V
|
|
|
|
|
|
|
|
K
|
|
|
|
B
|
|
|
|
F
|
|
|
|
J
|
|
|
|
P
|
|
|
|
W
|
|
|
|
|
|
N
|
|
|
|
|
|
C
|
|
E
|
|
|
|
|
|
L
|
|
O
|
|
|
|
|
|
X
|
|
Z
|
|
A
|
|
|
|
|
|
|
|
D
|
|
|
|
|
|
|
|
M
|
|
|
|
|
|
|
|
Y
|
|
|
Plain
|
A
|
B
|
C
|
D
|
E
|
F
|
G
|
H
|
I
|
J
|
K
|
L
|
M
|
N
|
O
|
P
|
Q
|
R
|
S
|
T
|
U
|
V
|
W
|
X
|
Y
|
Z
|
|
Cipher
|
T
|
H
|
S
|
R
|
U
|
G
|
I
|
Q
|
V
|
K
|
B
|
F
|
J
|
P
|
W
|
N
|
C
|
E
|
L
|
O
|
X
|
Z
|
A
|
D
|
M
|
Y
|
Contoh : SURABAYA KOTA PAHLAWAN à LXETHTMT BWOT NTQFTATP
|
|
|
|
|
|
|
|
B
|
|
|
|
|
|
|
|
|
|
A
|
N
|
D
|
|
|
|
|
|
|
|
U
|
G
|
T
|
R
|
C
|
|
|
|
|
|
E
|
F
|
H
|
I
|
J
|
K
|
L
|
|
|
|
M
|
O
|
P
|
Q
|
S
|
V
|
W
|
X
|
Y
|
|
Z
|
|
|
|
|
|
|
|
|
|
|
|
1.f. : Metoda Transposisi
Ditulis Piramid, dibaca Vertikal
Kata kunci : Bandung Utara à BANDUGTR
Horizontal : BANDUGTRCEFHIJKLMOPQSVWXYZ
Ciphertext : ZMEOUFPAGHQBNTISDRJVCKWLXY ß Vertikal
|
Plain
|
A
|
B
|
C
|
D
|
E
|
F
|
G
|
H
|
I
|
J
|
K
|
L
|
M
|
N
|
O
|
P
|
Q
|
R
|
S
|
T
|
U
|
V
|
W
|
X
|
Y
|
Z
|
|
Cipher
|
Z
|
M
|
E
|
O
|
U
|
F
|
P
|
A
|
G
|
H
|
Q
|
B
|
N
|
T
|
I
|
S
|
D
|
R
|
J
|
V
|
C
|
K
|
W
|
L
|
X
|
Y
|
Contoh : PANCASILA SAKTI à SZTEZJGBZ JZQVG
Dari penjelasan di atas gw asumsikan metode di atas sudah cukup dimengerti. Sekarang kita langsung ke implementasi alias koding. Di sini gw menggunakan C. Pertama kita gunakan 2 pustaka umum yaitu stdio(untuk Input/Output) dan string(untuk pemrosesan string) pada baris 1 sd 2. Karena kita hanya melakukan proses enkripsi alfabet saja maka pada baris 14 sd 17 didefinisikan array alfabet untuk huruf A-Z yang akan kita enkrip. Pada baris 26 didefinisikan untuk array flag sebagai penanda untuk setiap karakter yang didefinisikan pada array alfabet.
Sory, sebelumnya kita definisikan dulu program kita secara garis besar programnya. Program secara garis besar terdiri dari Input -> Proses -> Output. Pada Input, program membutuhkan plaintext dan kunci yang akan digunakan untuk mengencrypt plaintext. Kemudian program akan men-generate kunci untuk setiap metoda yang kemudian digunakan untuk meng-encrypt plain sehingga menjadi ciphertext. Setelah itu program akan mencetak hasil encrypt tiap-tiap metoda.
Horizontal-Horizontal
Pada baris 28 didefinisikan fungsi keygen dengan parameter array sebagai penampung string. pada baris 143 diimplementasikan fungsi tersebut. fungsi ini men-generate key dengan metode Horizontal-Horizontal. parameter yang diterima berupa string kunci. Seperti yang telah dijelaskan di atas. Pada parameter akan dihilangkan karakter kosong alias spasi dan duplikasi pada baris 151 sd 176. pada baris selanjutnya 178 sd 183, dilakukan perulangan untuk mengnolkan flag sebagai penanda bahwa karakter belum dipakai. Pada baris 185 sd 214 perulangan yang dilakukan untuk mencek kunci, huruf apa saja yang belum terpakai untuk kemudian ditambahkan ke array kunci tersebut. sebelumnya perulangan akan mencek huruf apa saja yang telah ada pada array kunci dan kemudian merubah array flag pada indeks tersebut menjadi 1 atau true(baris 189 sd 197) mis A pada indeks 0, Z pada indeks 25. Pada perulangan di baris 202 sd 211 array kunci ditambahkan dengan mencek flag apa saja yang bernilai 0 atau false dan setelah menambahkan ke array kunci, flag akan diubah menjadi 1 atau true. Fungsi ini dapat kita gunakan kembali fungsi selanjutnya karena pada metoda lainnya membutuhkan fungsi ini untuk kemudian ditransposisi(ubah posisi) sesuai dengan metodenya.
Horizontal-Vertikal
Pada baris 30 didefinisikan fungsi HVer dengan parameter array sebagai penampung kunci yang sebelumnya telah diolah oleh fungsi keygen dan sudah terisi penuh dengan semua huruf dan tanpa ada perulangan dan spasi. pada baris 243 sd 279 diimplementasikan fungsi HVer tersebut. Dari penjelasan di atas, telah dijelaskan proses generate kunci pada metoda ini. Setelah diproses oleh fungsi keygen kemudian diterima fungsi HVer yang kemudian akan diubah ke matriks 6×5(baris 249 sd 261). Kemudian dari matriks akan diubah lagi ke array linear(string) pada baris 263 sd 274.
Horizontal-Spiral
Implementasi metoda ini cukup sulit. Dan gw sendiri belum nemuin algoritma yang tepat. Terpaksa gw bikin manual
. Proses perpindahan dari indeks satu ke indeks selanjutnya secara melingkar dilakukan manual per baris atau kolom. Sama seperti fungsi HVer, kunci diterima dari keygen. Kemudian dirubah ke matriks(baris 288 sd 298 ) dan dirubah ke array linear secara spiral(baris 305 sd 364). kemudian hasilnya digunakan untuk proses enkripsi.
(bersambung…)