Anda di halaman 1dari 13

E N K R I P S I DA N D E S K R I P S I DATA DENGAN ALGORITMA KRIPTOGRAFI SHIFT CIPHER

Nurul Zukhaila

Nurul Indrianingsih
Selvidiah Mutiara Siti Rupiah

Shift Cipher (Sandi Geser)


Dalam kriptografi, sandi Caesar, atau sandi geser, kode Caesar atau Geseran Caesar adalah salah satu teknik enkripsi paling sederhana dan paling terkenal. Sandi ini termasuk sandi substitusi dimana setiap huruf pada teks terang (plaintext) digantikan oleh huruf lain yang memiliki selisih posisi tertentu dalam alfabet. Misalnya, jika menggunakan geseran 3, W akan menjadi Z, I menjadi L, dan K menjadi N sehingga teks terang wiki akan menjadi ZLNL pada teks tersandi. Nama Caesar diambil dari Julius Caesar, jenderal, konsul, dan diktator Romawi yang menggunakan sandi ini untuk berkomunikasi dengan para panglimanya. Seperti : ABCDEFGHIJKLMNOPQRSTUPWXYZ DEFGHIJKLMNOPQRSTUPWXYZABC Jadi setiap huruf yang akan di sandikan di geser sebanyak 3 karakter ke kanan. Contoh Plainteks Maka Cipher Teks : SUMATERA UTARA : PXPDWHUD XWDUD

Desain Form

Algoritma
Untuk Mengenkripsikan plaintext Inputkan bit geser atau kunci pergeseran yang diinginkan Inputkan plaintext. Apabila plaintext berupa data klik browse, pilih data yang ingin dienkripsikan Klik Enkripsi untuk mengkonversi plaintext pada Text1 sesuai dengan pergeseran yang telah kita inputkan dalam bit geser, hasil enkripsi(CipherText) dari Text1 akan tampil pada Text2. Klik Save untuk menyimpan hasil enkripsi Untuk mendeskripsikan ciphertext Inputkan bit geser atau kunci pergeserannya Inputkan ciphertext. Apabila ciphertext berupa data klik browse, pilih data yang ingin dideskripsikan Klik Deskripsi untuk mengkonversi ciphertext pada Text3 sesuai dengan kunci pergeserannya, hasil deskripsi(plainText) dari Text3 akan tampil pada Text4. Klik Save untuk menyimpan hasil deskripsi

Pseudocode
ENKRIPSI Input(bit_geser) Input(Plaintext) x Timer For i 1 To Len(text1.Text) k Asc(Mid(text1.Text, i, i)) If ((k >= 65) And (k <= 90)) Then jk 65 m (j + bit) Mod 26 k m + 65 ElseIf ((k >= 97) And (k <= 122)) Then j k 97 m (j + bit) Mod 26 k m + 97 End If C C & Chr(k) text2.Text C Label7.Caption Len(text1.Text) & " karakter" Next i y Timer z CDbl(y) - CDbl(x) Label8.Caption z If text1.Text "" Then MsgBox "PLAINTEXT BELUM DIINPUTKAN" text1.SetFocus End If Output(ciphertext)

bit Val(Textbit.Text)
If Textbit.Text "" Then MsgBox "BIT GESER BELUM DIINPUTKAN" ElseIf Mid(Textbit.Text, 1, 1) "-" Then If Not IsNumeric(Mid(Textbit.Text, 2, 2)) Then MsgBox "INPUT SALAH" Else bit 26 - (Mid(Textbit.Text, 2, 2)) End If ElseIf Asc(Textbit.Text) < 45 Or (Asc(Textbit.Text) > 45 And Asc(Textbit.Text) < 48) Or Asc(Textbit.Text) > 122 Or (Asc(Textbit.Text) > 57 And Asc(Textbit.Text) < 65) Or (Asc(Textbit.Text) > 90 And Asc(Textbit.Text) < 95) Then MsgBox "INPUT SALAH" ElseIf Not IsNumeric(Textbit.Text) Then bit (Asc(UCase(Textbit.Text)) - 13) Mod 26 End If

DESKRIPSI Input(bit_geser) Input(ciphertext) x Timer bit Val(Textbit.Text) If Textbit.Text "" Then MsgBox "BIT GESER BELUM DIINPUTKAN" ElseIf Mid(Textbit.Text, 1, 1) "-" Then If Not IsNumeric(Mid(Textbit.Text, 2, 2)) Then MsgBox "INPUT SALAH" Else bit 26 - (Mid(Textbit.Text, 2, 2)) End If ElseIf Asc(Textbit.Text) < 45 Or (Asc(Textbit.Text) > 45 And Asc(Textbit.Text) < 48) Or Asc(Textbit.Text) > 122 Or (Asc(Textbit.Text) > 57 And Asc(Textbit.Text) < 65) Or (Asc(Textbit.Text) > 90 And Asc(Textbit.Text) < 95) Then MsgBox "INPUT SALAH" O(1) ElseIf Not IsNumeric(Textbit.Text) Then bit (Asc(UCase(Textbit.Text)) + 13) Mod 26 End If

For i 1 To Len(text3.Text) k = Asc(Mid(text3.Text, i, i)) If ((k >= 65) And (k <= 90)) Then j k 65 m ((bit + j) Mod 26) - ((2 * bit) Mod 26) If m < 0 Then k 91 + m Else k65 + m End If ElseIf ((k >= 97) And (k <= 122)) Then j k 97 m ((j + bit) Mod 26) - ((2 * bit) Mod 26) If m < 0 Then k 123 + m Else k m + 97 End If End If C C & Chr(k) text4.Text C Label10.Caption = Len(text3.Text) & " karakter" Next i y Timer z CDbl(y) - CDbl(x) Label8.Caption z If text1.Text "" Then MsgBox "CIPHERTEXT BELUM DIINPUTKAN" text1.SetFocus End If Output(Plaintext)

Kompleksitas Waktu
ENKRIPSI Input(bit_geser) Input(Plaintext) x Timer bit Val(Textbit.Text) If Textbit.Text "" Then O(1) O(1) O(1) O(1) For i 1 To Len(text1.Text) k Asc(Mid(text1.Text, i, i)) If ((k >= 65) And (k <= 90)) Then jk 65 m (j + bit) Mod 26 k m + 65 ElseIf ((k >= 97) And (k <= 122)) Then j k 97 m (j + bit) Mod 26 k m + 97 End If C C & Chr(k) text2.Text C Label7.Caption Len(text1.Text) & " karakter" Next i y Timer z CDbl(y) - CDbl(x) Label8.Caption z If text1.Text "" Then MsgBox "PLAINTEXT BELUM DIINPUTKAN text1.SetFocus End If Output(ciphertext)

O(n)
O(n) O(n) O(n) O(n) O(n) O(n) O(n) O(n) O(n) O(1) O(1) O(1)

MsgBox "BIT GESER BELUM DIINPUTKAN"


ElseIf Mid(Textbit.Text, 1, 1) "-" Then If Not IsNumeric(Mid(Textbit.Text, 2, 2)) Then MsgBox "INPUT SALAH" Else bit 26 - (Mid(Textbit.Text, 2, 2)) End If

O(1)

O(1)

O(1)

O(1)

ElseIf Asc(Textbit.Text) < 45 Or (Asc(Textbit.Text) > 45 And Asc(Textbit.Text) < 48) Or Asc(Textbit.Text) > 122 Or (Asc(Textbit.Text) > 57 And Asc(Textbit.Text) < 65) Or (Asc(Textbit.Text) > 90 And Asc(Textbit.Text) < 95) Then MsgBox "INPUT SALAH" O(1)

ElseIf Not IsNumeric(Textbit.Text) Then


bit (Asc(UCase(Textbit.Text)) - 13) Mod 26 O(1) End If

DESKRIPSI Input(bit_geser) Input(ciphertext) x Timer bit Val(Textbit.Text) O(1) O(1) O(1) O(1)

If Textbit.Text "" Then


MsgBox "BIT GESER BELUM DIINPUTKAN" ElseIf Mid(Textbit.Text, 1, 1) "-" Then If Not IsNumeric(Mid(Textbit.Text, 2, 2)) Then MsgBox "INPUT SALAH" Else bit 26 - (Mid(Textbit.Text, 2, 2)) End If ElseIf Asc(Textbit.Text) < 45 Or (Asc(Textbit.Text) > 45 And Asc(Textbit.Text) < 48) Or Asc(Textbit.Text) > 122 Or (Asc(Textbit.Text) > 57 And Asc(Textbit.Text) < 65) Or (Asc(Textbit.Text) > 90 And Asc(Textbit.Text) < 95) Then MsgBox "INPUT SALAH" ElseIf Not IsNumeric(Textbit.Text) Then bit (Asc(UCase(Textbit.Text)) + 13) Mod 26 O(1) End If O(1) O(1) O(1) O(1)

For i 1 To Len(text3.Text) k = Asc(Mid(text3.Text, i, i)) If ((k >= 65) And (k <= 90)) Then j k 65 m ((bit + j) Mod 26) - ((2 * bit) Mod 26) If m < 0 Then k 91 + m Else k65 + m End If ElseIf ((k >= 97) And (k <= 122)) Then j k 97 m ((j + bit) Mod 26) - ((2 * bit) Mod 26) If m < 0 Then k 123 + m Else k m + 97 End If End If C C & Chr(k) text4.Text C Label10.Caption = Len(text3.Text) & " karakter Next i y Timer z CDbl(y) - CDbl(x) Label8.Caption z If text1.Text "" Then MsgBox "CIPHERTEXT BELUM DIINPUTKAN text1.SetFocus End If Output(Plaintext)

O(n) O(n) O(n) O(n) O(n) O(n) O(n) O(n) O(n) O(n) O(n) O(n) O(1) O(1) O(1) O(1)

Kompleksitas Waktu T(n) pada enkripsi


T(n)= 10 O(n)+ 13 O(1) Big Oh 10 O(n)+ 13 O(1) 13 O(n)+ 13 O(1) 10 O(n)+ 13 O(1) 13 (O(n)+ O (1))

Kompleksitas Waktu T(n) pada Deskripsi


T(n)= 12 O(n)+ 13 O(1) Big Oh 12 O(n)+ 13 O(1) 13 O(n)+ 13 O(1) 12 O(n)+ 13 O(1) 13 (O(n)+ O (1)) 12 O(n)+ 13 O(1) O(n)+ O(1) Jadi Big Oh = O(n) Big Omega 12 O(n)+ 13 O(1) 13 O(n)+ 13 O(1) 12 O(n)+ 13 O(1) 13 (O(n)+ O (1)) 12 O(n)+ 13 O(1) O(n)+ O(1) Jadi Big Omega = O(n) Big Theta O(T(n))= (T(n))= O(n) maka (T(n)) = O(n)

10 O(n)+ 13 O(1) O(n)+ O(1)


Jadi Big Oh = O(n) Big Omega 10 O(n)+ 13 O(1) 13 O(n)+ 13 O(1) 10 O(n)+ 13 O(1) 13 (O(n)+ O (1)) 10 O(n)+ 13 O(1) O(n)+ O(1) Jadi Big Omega = O(n) Big Theta O(T(n))= (T(n))= O(n) maka (T(n)) = O(n)

Tabel Percobaan
Banyaknya Karakter

Waktu Ekseskusi Enkripsi (s) Waktu Eksekusi Deskripsi (s)

150 600 1000 2000 6000

0,015625 0,125 0,265625 0,75 4,171875

0,015625 0,125 0,265625 0,75 4,171875

GRAFIK

Kesimpulan
Berdasarkan analisis kompleksitas waktu pseudocode di atas menunjukan bahwa kompleksitas waktu program enkripsi dan deskripsi kelompok kami adalah O(n). Selain itu, grafik kompleksitas diatas juga menunjukan grafik lurus (y=x) namun mendekati grafik (y=x2). Dapat kita simpulkan bahwa kompleksitas waktu program di atas adalah O(n).