Pseudocode Implementasi Algoritma Kriptografi Massey Omura Dengan Teknik Steganografi Kombinasi End Of File (EOF) Dan First Of File (FOF) Untuk Keamanan Data

Gambar 3.15 Activity Diagram untuk Decryption2

3.1.4 Pseudocode

Pseudocode adalah kode atau bentuk penulisan algoritma dengan struktur pemrograman yang sederhana dan dapat dimengerti manusia sehingga memudahkan dalam memahami suatu algoritma.

3.1.4.1 Pseudocode Proses Generate Prime

Berikut adalah Pseudocode untuk proses Generate Prime ulang: Random rndp = new Random p ← rndp.Next257, 1000 if Fermatp prima.Text ← Convert.ToStringp else goto ulang end if Proses Generate Prime dilakukan dengan cara melakukan random nilai bilangan prima p mulai dari 257 hingga 1000 dan selanjutnya nilai p yang dirandom diperiksa sesuai proses Fermat. Jika nilai p sesuai dengan proses Fermat maka nilai p akan didapatkan.

3.1.4.2 Pseudocode Proses Fermat

Berikut adalah Pseudocode Proses Fermat BigInteger a = 0; for int i = 0; i = p.ToString.Length; i++ Random rnda = new Random; a = rnda.Next2, intp; if BigInteger.ModPowa, p - 1, p.IsOne return false end if end for return true Universitas Sumatera Utara Proses Fermat dilakukan untuk mencari bilangan prima yang akan digunakan untuk membangkitkan nilai kunci. Bilangan prima didapatkan dengan melakukan random nilai bilangan bulat a dengan bilangan prima p dalam rentang 1 � � dan selanjutnya mengikuti Fermat Little’s Theorem yaitu � �−1 ≡ ��� �.

3.1.4.3 Pseudocode Proses Euclidean GCD

Berikut adalah Pseudocode untuk proses Euclidean GCD BigInteger r ← m n if r = 0 return n return cariGCDn, r Pada proses Euclidean GCD digunakan pada saaat mencari nilai kunci enkripsi. Untuk memeriksa apakah nilai kunci enkripsi relatif prima dengan p-1 dimana p adalah bilangan prima.

3.1.4.4 Pseudocode Proses Generate Key

Berikut adalah Pseudocode untuk proses Generate Key ulange: Random rnde = new Random e ← rnde.Next2, intp - 1 if cariGCDe, p = 1 nilaie.Text ← Convert.ToStringe BigInteger hasil = 0; d = 0; while hasil = 1 dA++ hasil ← d e p - 1; if d 100000 goto ulange end if nilaid.Text ← d.ToString else goto ulange end if Universitas Sumatera Utara Pada proses Generate Key dilakukan random nilai kunci enkripsi e dalam rentang 1 � � − 1 dan dilakukan pengecekan berdasarkan algoritma Euclidean GCD. Jika sesuai, maka didapatkan nilai e yang selanjutnya digunakan untuk mencari nilai kunci dekripsi dengan cara melakukan modulo invers terhadap kunci e atau � � � ≡ 1 ��� � − 1. Selanjutnya nilai d dibatasi sampai nilai 100000 untuk mengurangi proses yang terlalu lama pada generate key. Jika nilai d yang didapatkan lebih besar dari 100000 maka akan mengulangi proses random nilai kunci enkripsi.

3.1.4.5 Pseudocode Proses Enkripsi

Berikut adalah Pseudocode untuk proses Enkripsi string plaintext = plain.Text cipher1enkrip1.Text = string pA = foreach char c in plaintext pA += System.Convert.ToInt32c.ToString + end foreach string[] temp = pA.Split Cipher ← new BigInteger[temp.Length] for int i = 0; i Cipher.Length - 1; i++ Cipher[i] ← BigInteger.PowBigInteger.Parsetemp[i], inteA intp cipher1enkrip1.Text += Cipher[i].ToString + end for SCipher ← new int[temp.Length 2 - 2] string mb = string cip for int i = 0, j = 0; i Cipher.Length - 1; i++, j+=2 cip ← Cipher[i].ToString if cip.Length = 1 cip ← 000 + cip else if cip.Length = 2 cip ← 00 + cip else if cip.Length = 3 cip ← 0 + cip SCipher[j] ← Convert.ToInt32cip.Substring0, 2 SCipher[j + 1] ←Convert.ToInt32cip.Substring2,2 mb += SCipher[j].ToString + + SCipher[j +1].ToString + end for Universitas Sumatera Utara Proses enkripsi dilakukan setelah memiliki nilai bilangan prima dan nilai kunci enkripsi melalui perhitungan � = � � ��� � dengan M adalah nilai karakter berdasarkan Tabel ASCII. Kemudian setelah didapatkan nilai C Ciphertext dalam bentuk angka, dilakukan pengecekan jumlah digit angka yang dihasilkan per karakter. Jika kurang dari 4 digit, maka akan ditambah digitnya sampai memenuhi syarat 4 digit. Kemudian dilakukan pemisahan split setiap 2 digit untuk mendapatkan nilai pesan yang akan disisip pada citra.

3.1.4.6 Peseudocode Proses Embedding

Berikut adalah Pseudocode untuk proses Embedding int limit ← plain.TextLength Bitmap image ← new BitmappictureBox1.Image int x ← image.Width int y ← image.Height if x 3 - 2 limit MessageBox.ShowMessage is over limit of image pixel\r\nPlease choose another image,, Warning, MessageBoxButtons.OK, MessageBoxIcon.Warning else Bitmap output ← new Bitmapimage.Width, 1 Bitmap output2 ← new Bitmapimage.Width, 1 for int i = 0; i 1; i++ for int j = 0; j x; j++ output.SetPixelj, i, Color.FromArgb255, 0, 0, 0 output2.SetPixelj, i, Color.FromArgb255, 0, 0, 0 end for end for int x1 = 0, x2 = 0, index = 0, count = 0 for int i = 0; i y; i++ for int j = 0; j x 2; j++ if index = SCipher.Length goto habis if count 2 = 0 if index + 2 = SCipher.Length Universitas Sumatera Utara output.SetPixelx1, i,Color.FromArgb 255, intSCipher[index], intSCipher[index + 1], 0 index += 2 x1++ count++ else if index + 1 = SCipher.Length output.SetPixelx1, i, Color.FromArgb 255, intSCipher[index], 0, 0 index++ x1++ count++ else output.SetPixelx1, i, Color.FromArgb 255, intSCipher[index], intSCipher[index + 1], intSCipher[index + 2] index += 3 x1++ count++ end if end if else if index + 2 = SCipher.Length output2.SetPixelx2, i,Color.FromArgb 255, intSCipher[index], intSCipher[index + 1], 0 index += 2 x2++ count++ else if index + 1 = SCipher.Length output2.SetPixelx2, i,Color.FromArgb 255, intSCipher[index], 0, 0 index++ x2++ count++ else output2.SetPixelx2, i,Color.FromArgb 255, intSCipher[index], intSCipher[index + 1], intSCipher[index + 2] index += 3 x2++ count++ end if end for end for end if habis: Universitas Sumatera Utara for int i = 0; i 1; i++ for int j = 0; j x; j++ int r ← output.GetPixelj, i.R int g ← output.GetPixelj, i.G int b ← output.GetPixelj, i.B int r2 ← output2.GetPixelj, i.R int g2 ← output2.GetPixelj, i.G int b2 ← output2.GetPixelj, i.B end for end for Pada proses Embedding dilakukan penyisipan dengan cara membuat baris baru Set Pixel pada bagian atas dan bawah matriks pixel citra dengan nilai 0 untuk setiap layer kemudian nilai pesan disisipkan. Jika citra yang digunakan memiliki lebar pixel x yang jika dikalikan dengan 3 banyaknya layer R-G-B, dan dikurangi 2 bit penanda pesan menghasilkan nilai lebih kecil dari panjang pesan limit maka sistem akan menampilkan pesan error untuk memberikan peringatan agar memilih citra dengan ukuran lebih besar.

3.1.4.7 Pseudocode Proses Extracting

Berikut adalah Pseudocode untuk proses Extracting int x ← image.Width int y ← image.Height string px = int r, g, b string strR, strG, strB for int i = 0; i x; i++ for int j = 0; j y; j++ if j = 0 || j = y - 1 r ← image.GetPixeli, j.R; if r.ToString.Length = 1 strR ← 0 + r; else strR ← r.ToString; g ← image.GetPixeli, j.G; if g.ToString.Length = 1 strG ← 0 + g; else Universitas Sumatera Utara strG ← g.ToString; b ← image.GetPixeli, j.B; if b.ToString.Length = 1 strB ← 0 + b; else strB ← b.ToString; px += strR + + strG + + strB + ; end if end for end for int count = 1 for int i = 0; i px.Length; i++ if px[i] = if count 2 = 0 px = px.Removei, 1; count++; end if end for int index ← px.IndexOf 0000 0000; if index 0 DialogResult dialognohidden = MessageBox.Showno hidden message\rplease input another image, Info, MessageBoxButtons.OK, MessageBoxIcon.Warning; else px = px.Substring0, index; string[] temp ← px.Split ; px = ; for int i = 0; i temp.Length; i++ px += Convert.ToInt32temp[i] + ; end for cipher1enkrip2.Text = px; end if Pada proses ekstraksi, sistem membaca nilai pixel matriks citra mulai dari baris pertama sampai menemukan 2 bit berurutan bernilai 0000 0000 dan jika pada awal baris citra langsung ditemukan bit berurutan 0000 0000 maka akan ditampilkan pesan error bahwa tidak terdapat pesan tersembunyi pada citra. Universitas Sumatera Utara

3.1.4.8 Pseudocode Proses Dekripsi

Berikut adalah Pseudocode untuk proses Dekripsi string plaintext ← cipher2dekrip1.Text cipher3dekrip1.Text = string[] temp ← plaintext.Split Cipher ← new BigInteger[temp.Length] for int i = 0; i Cipher.Length - 1; i++ Cipher[i] ← BigInteger.PowBigInteger.Parsetemp[i], intConvert.ToInt32textBox3.Text intConvert.ToInt32prima3.Text cipher3dekrip1.Text += Cipher[i].ToString + ascii =char.ConvertFromUtf32Convert.ToInt32 Cipher[i].ToString plainawal.Text += ascii end for Proses dekripsi dilakukan dengan cara yang sama seperti enkripsi hanya berbeda pada penggunaan nilai kunci yaitu menggunakan kunci d sehingga setelah memiliki nilai kunci dekripsi melalui perhitungan � = � � ��� � akan di dapatkan angka-angka sebagai nilai desimal dari pesan dan selanjutnya dikonversi dengan Tabel ASCII sehingga mendapatkan pesan awal.

3.1.5 Flowchart sistem

Dokumen yang terkait

Implementasi Kriptografi Algoritma Elgamal Dengan Kombinasi Steganografi Teknik End Of File (Eof) Untuk Keamanan File Text Dan File Citra

23 143 153

Implementasi Kriptografi Algoritma Elgamal Dengan Kombinasi Steganografi Teknik End Of File (Eof) Untuk Keamanan File Text Dan File Citra

0 0 14

Implementasi Kriptografi Algoritma Elgamal Dengan Kombinasi Steganografi Teknik End Of File (Eof) Untuk Keamanan File Text Dan File Citra

0 0 2

Implementasi Kriptografi Algoritma Elgamal Dengan Kombinasi Steganografi Teknik End Of File (Eof) Untuk Keamanan File Text Dan File Citra

0 0 4

Implementasi Kriptografi Algoritma Elgamal Dengan Kombinasi Steganografi Teknik End Of File (Eof) Untuk Keamanan File Text Dan File Citra

0 0 15

Implementasi Kriptografi Algoritma Elgamal Dengan Kombinasi Steganografi Teknik End Of File (Eof) Untuk Keamanan File Text Dan File Citra

0 0 2

Implementasi Kriptografi Algoritma Elgamal Dengan Kombinasi Steganografi Teknik End Of File (Eof) Untuk Keamanan File Text Dan File Citra

0 2 31

Implementasi Algoritma Kriptografi Massey Omura Dengan Teknik Steganografi Kombinasi End Of File (EOF) Dan First Of File (FOF) Untuk Keamanan Data

0 0 28

BAB 2 LANDASAN TEORI 2.1 Kriptografi 2.1.1 Definisi Kriptografi - Implementasi Algoritma Kriptografi Massey Omura Dengan Teknik Steganografi Kombinasi End Of File (EOF) Dan First Of File (FOF) Untuk Keamanan Data

0 0 15

Implementasi Algoritma Kriptografi Massey Omura Dengan Teknik Steganografi Kombinasi End Of File (EOF) Dan First Of File (FOF) Untuk Keamanan Data

0 0 15