Implementasi Algoritma Rc4 Dan Metode Modified Lsb Untuk Pengamanan Text File

(1)

LISTING PROGRAM

Mainform.cs

using System;

using System.Collections.Generic; using System.Drawing;

using System.Drawing.Imaging; using System.Windows.Forms; using System.IO;

void BtCariTeksClick(object sender, EventArgs e) { OpenFileDialog openfile = new OpenFileDialog(); openfile.Filter = "Text Files | *.txt";

if (openfile.ShowDialog() == DialogResult.OK) {

tbPesan1.Text = File.ReadAllText(openfile.FileName); }

}

void BtCariCoverClick(object sender, EventArgs e) { if (tbPesan1.Text == "" | tbKunci1.Text =="") {

MessageBox.Show("Silahkan masukkan pesan dan kunci terlebih dahulu !", "Peringatan",

MessageBoxButtons.OK,MessageBoxIcon.Warning); return;

}

OpenFileDialog openfile = new OpenFileDialog(); openfile.Filter = "Bitmap Files | *.bmp";

if (openfile.ShowDialog() == DialogResult.OK) {

bmp = (Bitmap)Image.FromFile(openfile.FileName);

if (MLSB.capacityCheck(tbPesan1.Text,bmp)) { pbCover.Image = bmp;

tbPCover.Text = bmp.Height.ToString()+" px"; tbLCover.Text = bmp.Width.ToString()+" px";

} else

MessageBox.Show("Gambar yang Anda masukkan tidak dapat menampung pesan."+ "Silahkan pilih gambar yang lain","Peringatan"); }


(2)

void BtSimpanStegoClick(object sender, EventArgs e) { SaveFileDialog savefile = new SaveFileDialog(); savefile.Filter = "Bitmap Files | *.bmp";

if (savefile.ShowDialog() == DialogResult.OK) { bmp.Save(savefile.FileName, ImageFormat.Bmp);

MessageBox.Show("Gambar stego telah berhasil disimpan."); clearAll();

} }

void BtProsesEnkripsiClick(object sender, EventArgs e) { if (pbCover.Image == null) {

MessageBox.Show("Silahkan, masukkan gambar cover terlebih dahulu !", "Peringatan",MessageBoxButtons.OK,MessageBoxIcon.Warning) ;

return; }

plainteks = tbPesan1.Text; key = tbKunci1.Text;

bmp = (Bitmap)pbCover.Image; RC4 rc4 = new RC4();

rc4.KSA(key); int i = 0, j = 0;

for (int pos=0;pos<plainteks.Length;pos++){

cipherteks = cipherteks + (char)rc4.PRGA((byte)plainteks[pos],i,j); i = rc4.getValue("i");

j = rc4.getValue("j"); }

bmp = (Bitmap)MLSB.embedText(cipherteks,bmp); tbCipherteks1.Text = cipherteks

pbStego1.Image = bmp;

MessageBox.Show("Informasi telah berhasil disembunyikan."); }

void BtCariStegoClick(object sender, EventArgs e) { OpenFileDialog openfile = new OpenFileDialog(); openfile.Filter = "Bitmap Files | *.bmp";

if (openfile.ShowDialog() == DialogResult.OK) {

pbStego2.Image = Image.FromFile(openfile.FileName); tbPStego.Text = pbStego2.Image.Height.ToString()+" px"; tbLStego.Text = pbStego2.Image.Width.ToString()+" px"; }


(3)

void BtSimpanPesanClick(object sender, EventArgs e) { SaveFileDialog savefile = new SaveFileDialog(); savefile.Filter = "Text Files | *.txt";

if (savefile.ShowDialog() == DialogResult.OK) {

File.WriteAllText(savefile.FileName, tbPesan2.Text); MessageBox.Show("Pesan telah berhasil disimpan."); }

}

void BtProsesEkstrakClick(object sender, EventArgs e) { if (pbStego2.Image == null) {

MessageBox.Show("Silahkan, masukkan gambar stego terlebih dahulu",

"Peringatan",MessageBoxButtons.OK,MessageBoxIcon.Warning); return;

}

elseif (tbKunci2.Text == "") {

MessageBox.Show("Silahkan, masukkan kunci terlebih dahulu", "Peringatan", MessageBoxButtons.OK,MessageBoxIcon.Warning);

return; }

bmp = (Bitmap)pbStego2.Image; key = tbKunci2.Text;

cipherteks = MLSB.extractText(bmp);

if (cipherteks == "") {

MessageBox.Show("Maaf, gambar stego yang Anda masukkan tidakmengandung pesan","Peringatan",MessageBoxButtons.OK,MessageBoxIcon. Information);

return; }

RC4 rc4 = new RC4(); rc4.KSA(key);

int i = 0, j = 0;

for (int pos=0;pos<cipherteks.Length;pos++){

plainteks = plainteks + (char)rc4.PRGA((byte)cipherteks[pos],i,j); i = rc4.getValue("i");

j = rc4.getValue("j"); }

tbCipherteks2.Text = cipherteks; tbPesan2.Text = plainteks;

MessageBox.Show("Informasi telah berhasil ditampilkan."); }


(4)

RC4.cs

using System;

using System.Diagnostics; byte[] S = new byte[256]; byte[] T = new byte[256]; byte[] kunci = new byte[256]; byte[] pesan = new byte[10000]; byte t = (byte)0;

byte key = (byte)0;

public void KSA(string k){ for (int i=0;i<256;i++){ S[i]=(byte)i;

T[i]=(byte)k[(i % k.Length)]; //Debug.Write(T[i]+"\t");

}

int j=0;

for (int i=0;i<256;i++){ j=(j+S[i]+T[i])%256; t=S[i];

S[i]=S[j]; S[j]=t;

} }

int i, j;

public byte PRGA(byte pesan, int i, int j){ i=(i+1)%256;

j=(j+S[i]) % 256;

t=S[i]; S[i]=S[j]; S[j]=t;

t=((byte)((S[i]+S[j])%256)); key=S[t];

if (key == pesan) { key = 0;

}

this.i = i; this.j = j;

return (byte)(key^pesan); }


(5)

MLSB.cs

using System.Drawing; using System.Diagnostics; public enum State { Hiding,

Filling_With_Zeros };

public static bool capacityCheck(string text, Bitmap bmp) { int cap=0;

for (int i = 0; i < bmp.Height; i++){ for (int j = 0; j < bmp.Width; j++) { Color pixel = bmp.GetPixel(j, i); if (pixel.R < 100) cap++;

if (pixel.G < 122) cap++; if (pixel.B < 114) cap++; }

}

if (text.Length+1 <= cap/8) return true;

else return false;

}

public static int reverseBits(int n) { int result = 0;

for (int i = 0; i < 8; i++) { result = result * 2 + n % 2; n /= 2;

}

return result; }

public static Bitmap embedText(string text, Bitmap bmp) { State state = State.Hiding;

int charIndex = 0, charValue = 0, zeros = 0; long pixelElementIndex = 0;

int R = 0, G = 0, B = 0,embed = 0;

for (int i = 0; i < bmp.Height; i++) { for (int j = 0; j < bmp.Width; j++) { Color pixel = bmp.GetPixel(j, i); R = pixel.R - pixel.R % 2;

G = pixel.G - pixel.G % 2; B = pixel.B - pixel.B % 2;

for (int n = 0; n < 3; n++){ if (embed==0){

if (state==State.Filling_With_Zeros&&zeros == 8){

if ((pixelElementIndex - 1) % 3 < 2) { bmp.SetPixel(j,i,Color.FromArgb(R,G,B ));


(6)

}

return bmp; }

if (charIndex >= text.Length) {

state = State.Filling_With_Zeros; }

else {

charValue = text[charIndex++]; embed = 8;

} }

switch (n){ case 0: {

if (R < 100) {

if (state == State.Hiding) { R += charValue % 2; charValue /= 2; embed--;

} else

zeros++; }

} break; case 1: {

if (G < 122) {

if (state == State.Hiding) { G += charValue % 2; charValue /= 2; embed--;

} else

zeros++; }

} break; case 2: {

if (B < 114) {

if (state == State.Hiding) { B += charValue % 2; charValue /= 2; embed--;

} else

zeros++; }

bmp.SetPixel(j,i,Color.FromArgb(R,G,B)); } break;

}

pixelElementIndex++; }

} }


(7)

public static string extractText(Bitmap bmp) { int colorUnitIndex = 0;

int charValue = 0; int embed = 8;

for (int i = 0; i < bmp.Height; i++) {

for (int j = 0; j < bmp.Width; j++) {

Color pixel = bmp.GetPixel(j, i); for (int n = 0; n < 3; n++)

{

switch (colorUnitIndex % 3) {

case 0: {

if (pixel.R<100){

charValue = charValue *2+pixel.R % 2; embed--;

} } break; case 1: {

if (pixel.G<122){

charValue = charValue*2+ pixel.G % 2; embed--;

} } break; case 2: {

if (pixel.B<114){

charValue = charValue*2+ pixel.B % 2; embed--;

} } break; }

colorUnitIndex++; if (embed == 0) {

charValue = reverseBits(charValue); embed = 8;

if (charValue == 0) {

if (extractedText == "") return "";

return extractedText; }

extractedText+=((char)charValue).ToString(); }

} } }

return ""; }


(8)

(9)

Dokumen Pengujian

Kunci : wonderful

Cover Object :

Plainteks :

Asal mula nama Raja Ampat menurut mitos masyarakat setempat berasal dari seorang wanita yang menemukan tujuh telur. Empat butir di antaranya menetas menjadi empat orang pangeran yang berpisah dan masing-masing menjadi raja yang berkuasa di Waigeo, Salawati, Misool Timur dan Misool Barat. Sementara itu, tiga butir telur lainnya menjadi hantu, seorang wanita, dan sebuah batu.

Kepulauan Raja Ampat merupakan tempat yang sangat berpotensi untuk dijadikan sebagai objek wisata, terutama wisata penyelaman. Perairan Kepulauan Raja Ampat menurut berbagai sumber, merupakan salah satu dari 10 perairan terbaik untuk diving site di seluruh dunia. Bahkan, mungkin juga diakui sebagai nomor satu untuk kelengkapan flora dan fauna bawah air pada saat ini.

Tim ahli dari Conservation International, The Nature Conservancy, dan Lembaga Oseanografi Nasional (LON) Lembaga Ilmu Pengetahuan Indonesia (LIPI) pernah melakukan penilaian cepat pada 2001 dan 2002. Hasilnya, mereka mencatat di perairan ini terdapat lebih dari 540 jenis karang keras (75% dari total jenis di dunia), lebih dari 1.000 jenis ikan karang, 700 jenis moluska, dan catatan tertinggi bagi gonodactyloid stomatopod crustaceans. Ini menjadikan 75% spesies karang dunia berada di Raja Ampat. Tak satupun tempat dengan luas area yang sama memiliki jumlah spesies karang sebanyak ini.

Ada beberapa kawasan terumbu karang yang masih sangat baik kondisinya dengan persentase penutupan karang hidup hingga 90%, yaitu di selat Dampier (selat antara Pulau Waigeo dan Pulau Batanta), Kepulauan Kofiau, Kepualauan Misool Tenggara dan Kepulauan Wayang. Tipe dari terumbu karang di Raja Ampat umumnya adalah terumbu karang tepi dengan kontur landai hingga curam. Tetapi juga terdapat tipe atol dan gosong atau taka. Di beberapa tempat seperti di kampung Saondarek, ketika pasang surut terendah, bisa disaksikan hamparan terumbu karang tanpa menyelam, karang tersebut tetap bisa hidup walaupun berada di udara terbuka dan terkena sinar matahari langsung.


(10)

Cipherteks :

99 68 83 222 177 201 209 98 97 117 236 205 117 221 185 162 78 19 97 155 131 165 245 64 87 95 165 222 119 229 163 123 254 181 161 111 38 156 31 117 212 239 255 82 186 243 15 158 56 9 161 199 92 230 55 121 142 75 83 169 135 75 131 145 8 56 210 164 109 74 125 195 22 98 131 183 165 229 118 254 42 45 119 136 87 29 169 218 162 41 6 152 228 244 239 94 236 137 214 177 76 75 33 248 148 189 136 214 163 60 200 121 130 188 60 21 178 32 85 27 107 209 214 32 129 186 123 165 197 142 100 247 76 116 26 100 219 141 213 203 1 8 113 213 245 201 211 60 105 113 206 168 115 25 151 61 104 162 155 113 43 68 72 247 38 22 90 84 117 208 252 122 5 248 226 212 16 242 36 47 131 182 207 35 203 107 190 48 186 136 77 144 248 53 138 139 4 32 226 61 74 45 246 40 168 95 26 90 24 130 165 51 12 10 65 80 91 152 59 174 212 210 138 157 36 15 181 181 93 101 107 165 117 172 192 31 248 147 83 255 116 181 28 96 137 82 106 162 197 1 207 69 99 155 185 107 128 28 94 94 216 241 175 138 190 213 76 194 42 234 169 115 13 53 170 3 93 46 155 139 140 119 217 229 253 5 22 50 199 59 74 149 86 18 248 191 216 151 79 218 78 84 30 168 21 91 134 84 153 189 79 114 103 7 76 253 3 66 41 1 177 66 232 210 214 166 188 171 187 234 4 158 25 205 117 59 75 105 69 12 204 239 76 189 253 198 42 20 176 110 148 177 71 70 161 246 231 20 5 144 51 161 2 212 209 42 202 233 132 237 235 182 188 170 173 207 173 53 111 79 2 212 17 102 90 229 146 99 125 240 152 223 162 131 190 150 215 189 250 129 167 145 224 112 161 53 244 91 18 218 216 130 126 20 62 110 74 34 132 156 210 34 89 142 34 40 37 237 187 237 104 245 119 5 142 221 226 7 185 64 10 191 190 99 63 153 247 44 21 190 166 176 98 207 59 32 232 174 176 23 80 197 116 109 241 126 87 34 187 40 183 121 179 107 253 17 86 30 109 26 16 149 87 222 9 127 58 247 127 181 189 217 179 14 193 253 112 233 157 22 0 213 173 199 149 126 209 243 166 183 185 239 86 175 166 111 63 166 130 109 181 168 42 18 126 210 108 59 12 62 54 105 215 116 99 77 98 133 172 6 28 88 107 61 124 119 202 11 88 111 80 5 180 35 3 42 113 150 46 218 8 178 137 30 174 21 72 255 74 177 171 214 224 11 30 139 91 193 164 205 164 204 137 21 191 213 36 46 67 68 204 223 129 144 184 75 121 232 231 168 124 33 96 183 208 165 152 4 154 109 181 104 47 19 194 206 47 96 238 141 252 118 198 220 177 197 64 62 134 243 3 37 59 47 224 62 113 45 76 157 166 79 194 23 126 237 74 85 217 233 219 51 58 232 170 212 157 135 54 138 99 124 231 125 122 205 51 253 155 37 27 226 248 105 142 154 22 116 26 82 209 9 81 45 250 144 51 162 157 123 50 64 144 219 95 34 227 121 194 44 79 51 108 198 227 82 84 19 42 98 163 241 9 159 137 111 55 167 145 245 237 224 185 79 230 3 183 186 209 180 154 69 25 13 17 114 71 180 252 212 15 22 126 45 136 130 187 152 30 71 13 25 78 239 242 28 187 33 143 221 65 127 35 254 255 96 189 153 140 144 2 232 166 89 44 212 180 22 13 75 184 207 249 26 90 192 140 2 41 222 69 78 146 244 218 213 211 13 227 50 77 101 62 205 22 221 255 243 71 156 86 35 218 252 222 139 220 189 156 182 121 123 67 100 253 50 182 236 208 91 116 134 5 47 75 61 247 135 208 191 125 43 39 120 231 249 12 39 146 117 1 225 86 149 80 222 32 120 31 215 222 173 211 22 92 255 122 36 192 226 193 243 171 133 160 40 242 219 52 164 157 152 63 39 81 29 113 240 90 196 231 16 117 69 72 206 204 128 66 83 184 85 231 40 55 165 255 214 154 9 70 102 171 83 31 4 151 165 13 199 77 122 220 16 249 120 35 13 149 118 77 93 68 150 193 182 15 203 195 178 32 156 98 63 194 179 180 73 215 218 42 44 208 185 161 7 172 45 201 73 58 13 156 152 135 23 153 214 171 111 205 14 241 234 252 23 42 177 209 3 245 204 213 122 29 177 207 239 212 76 117 57 203 103 219 64 19 108 77 4 213 141 2 55 117 250 121 243 108 170 24 248 99 236 205 223 230 10 238 103 92 169 111 247 166 218 22 249 150 232 3 236 2 179 211 62 95 230 94 237 71 214 224 145 40 113 167 133 220 111 215 13 75 96 80 166 225 144 75 146 4 190 81 53 11 191 168 90 121 78 134 170 71 58 219 226 199 109 27 143 3 219 139 49 135 128 126 159 244 49 190 83 56 106 216 112 113 158 62 152 101 131 165 223 250 221 133 83 200 208 33 224 217 16 99 197 212 132 151 59 66 84 193 167 30 14 154 84 92 104 150 52 64 235 30 230 33 79 88 201 102 83 250 110 188 60 137 169 210 188 225 182 106 38 58 55 189 171 27 174 171 82 5 178 200 20 122 24 101 25 160


(11)

233 232 5 160 88 174 76 125 135 227 132 196 32 15 202 211 100 192 166 156 69 120 168 187 243 190 156 160 96 36 155 5 198 238 80 55 225 137 134 170 76 75 202 32 60 197 57 68 173 247 133 30 232 111 252 145 182 131 72 203 110 195 32 220 49 203 34 50 170 249 244 86 109 71 57 87 57 168 189 110 232 94 45 97 235 109 250 13 198 80 247 184 126 231 207 9 172 8 186 80 1 178 159 9 152 56 74 34 229 27 110 232 88 146 73 251 123 182 41 252 134 187 76 68 62 130 235 93 131 4 108 134 36 163 95 114 178 9 96 139 166 231 114 182 76 105 83 65 3 133 255 116 113 200 60 173 107 137 154 57 172 112 103 108 115 68 48 103 165 150 211 130 71 219 221 214 11 136 255 84 73 13 90 193 93 231 19 197 247 225 231 27 222 134 107 245 100 59 109 72 204 195 103 170 173 139 185 61 95 89 111 4 68 181 21 159 33 39 252 157 115 155 79 169 94 42 31 30 208 190 210 84 209 32 174 192 48 11 112 192 154 253 18 248 210 122 220 233 243 221 213 208 8 138 92 50 147 220 209 22 70 84 130 53 175 133 163 206 22 14 98 216 67 88 203 146 239 122 118 224 114 119 106 241 73 184 37 79 190 61 37 95 115 144 244 151 159 201 231 57 66 7 38 62 223 159 54 238 47 60 177 5 74 114 153 49 124 104 156 23 119 91 122 11 109 110 35 24 230 241 9 21 9 58 49 175 59 55 81 41 215 128 19 38 171 162 38 51 156 31 188 152 138 150 59 228 206 201 65 97 199 135 23 196 224 48 199 10 247 224 95 84 121 7 71 198 188 76 231 141 23 205 170 168 176 164 212 45 245 196 149 99 253 189 41 29 253 101 252 63 160 232 46 29 176 44 49 201 91 35 33 224 69 85 222 76 153 215 110 115 55 202 115 25 74 147 145 17 98 205 238 41 96 214 109 60 124 89 64 205 214 118 41 152 189 246 173 238 199 34 243 23 234 112 207 222 226 214 84 130 171 242 102 48 110 237 132 254 210 151 18 91 67 249 164 21 155 159 239 101 30 32 205 122 146 153 63 7 32 68 164 51 242 130 101 77 9 204 113 26 195 127 254 95 59 37 79 20 255 117 201 199 171 205 255 74 187 245 34 164 45 188 67 98 83 207 70 147 116 203 18 99 125 191 104 190 193 80 40 136 240 197 226 146 17 3 120 39 120 106 19 148 120 23 185 194 96 185 64 130 187 65 106 156 79 182 125 46 176 81 103 153 246 253 80 114 56 255 135 235 160 122 167 46 39 136 92 32 67 154 56 204 149 11 177 37 97 29 1 154 92 125 192 203 227 107 28 89 219 86 156 187 166 28 6 137 112 163 59 142 29 117 201 220 194 91 36 241 61 217 188 171 102 207 85 64 181 118 4 244 125 249 29 179 8 71 221 214 2 79 68 164 6 77 190 215 43 180 254 154 168 131 194 178 126 53 234 42 158 69 166 189 233 165 175 216 5 192 76 200 65 66 213 98 8 85 132 187 199 207 71 113 212 22 162 254 23 236 244 154 243 107 243 245 234 151 41 67 78 243 174 22 94 244 160 225 255 49 32 90 252 63 53 94 34 237 222 66 217 188 115 220 40 165 199 118 88 97 11 55 237 46 55 101 170 6 125 224 99 112 24 5 191 129 86 199 216 94 248 84 142 28 157 95 175 215 37 200 185 27 245 242 85 179 120 185 236 41 98 170 64 232 219 105 229 195 37 14 92 35 197 38 246 72 161 231 163 29 88 21 206 30 142 60 72 130 182 137 2 36 148 89 8 215 237 89 9 108 202 37 164 255 79 86 148 13 229 118 2 3 208 250 8 218


(12)

DAFTAR RIWAYAT HIDUP

CURRICULUM VITAE

I. DATA PRIBADI / Personal Identification

Nama Lengkap : Febri Aro Gea

Tempat / Tgl. Lahir : Binjai / 6 Februari 1993 Jenis Kelamin : Laki-laki

Agama : Kristen Protestan

Kebangsaaan : Indonesia

Alamat : Jalan Citra Anggrek No 15 Tj Sari Medan

Telepon : +6283197889520

Tinggi / Berat : 178 cm / 65 kg

Email : febriarogea@gmail.com

II. KESEHATAN / Health

Tidak memiliki cacat fisik maupun mental dan tidak meiliki penyakit bawaan. III. KEMAMPUAN / Capabilities

Bahasa Pemrograman : C++, Java, C#, VB

Database : MySQl

Lainnya : Adobe Flash, HTML, Photoshop

IV. PENDIDIKAN FORMAL / Formal Eduction

 [2011 – 2016]

S1 Ilmu Komputer, Fakultas Ilmu Komputer dan Teknologi Informasi Universitas Sumatera Utara

 [2008 – 2011]

SMA Swasta Sutomo 1 Medan

 [2005 – 2008] SMP Negeri 1 Binjai

 [1999 – 2005]

SD Negri 027950 Binjai

 [1998 – 1999]

TK Santo Petrus Binjai V. PRESTASI / Achievements

1. Juara II Kompetisi “Problem Solving” IMILKOM Contest [2012] VI. PENGALAMAN KERJA / Working Experience

1. Asisten Laboratorium di Ilmu Komputer Laboratory Center Fasilkom-TI USU [2013-2016]

VII. SEMINARS / Seminars

1. Peserta Seminar Nasional : “Inovasi Ilmuwan Muda dalam Industri Berbasis IPTEK Menyonsong Indonesia Emas 2045”, Ikatan Alumni Ilmuwan Indonesia, Medan [2016]


(13)

DAFTAR PUSTAKA

Ambler, S. W. 2005. The Elements of UMLTM 2.0 Style. Cambridge University Press : Cambridge.

Cole, E. 2003. Hiding in Plain Sight : Steganography and the art of covert

communication. Wiley Publishing, Inc : Indianapolis.

Fiansyah, E. 2008. Implementasi algoritma dasar RC4 stream cipher dan pengacakan

plaintext dengan teknik dynamic blocking pada aplikasi sistem informasi

kegiatan skripsi di departermen teknik elektro. Skripsi. Universitas Indonesia. Kipper, G. 2004. Investigator’s Guide to Steganography. CRC Press : Boca Raton.

Kromodimoeljo, S. 2009. Teori dan Aplikasi Kriptografi. SPK IT Consulting : Jakarta. Lubis, R.F.A., Analisis Kombinasi Algoritma Watermaking Modified Least

Significant Bit dengan Least Significant Bit +1. Tesis. Universitas Sumatera

Utara.

Menezes, J., Oorschot, P. & Vanstone, S. 1996. Handbook of Applied Cryptography. CRC Press : Boca Raton.

Mollin, R.A. 2007. An Introduction to Cryptography. 2nd Edition. Chapman&Hall : Boca Raton.

Munir, R. 2006. Kriptografi. Informatika : Bandung.

Sadikin, R. 2012. Kriptografi untuk Keamanan Jaringan. Andi : Yogyakarta.

Schneier, B. 1996. Applied Cryptography : Protocol, algorithms and source code in

C. 2nd Edition. Wiley and Sons, Inc : New York.

Simamora, H.I.T. 2013. Implementasi algoritma elgamal dengan pembangkit bilangan prima lehmann dan algoritma least significant bit (LSB) dengan cover image

bitmap untuk keamanan data text. Skripsi. Universitas Sumatera Utara.

Stallings, W. 2005. Cryptography and Network Security Principles and Practices. 4th Edition. Prentice Hall : Upper Saddle River.

Sutoyo, T., Mulyanto, E. & Wijanarto. 2009. Teori Pengolahan Citra Digital. Andi : Semarang.

Suryani, K.N. 2009. Algoritma RC4 sebagai metode enkripsi. (Online) http://informatika.stei.itb.ac.id/~rinaldi.munir/Matdis/2009-2010/Makalah0910 /MakalahStrukdis0910-058.pdf (diakses 20 Oktober 2015).

Whitten, J. L., Bentley L. D. 2007. Systems Analysis and Design Methods. McGraw-Hill : New York.


(14)

BAB 3

ANALISIS DAN PERANCANGAN

3.1 Analisis Sistem

Analisis sistem terdiri dari fase-fase berbeda yang mendeskripsikan pengembangan sistem. Dalam tugas akhir ini ada dua fase analisis yaitu analisis masalah dan analisis kebutuhan.

3.1.1. Analisis masalah

Analisis masalah yang dilakukan adalah memberikan perlindungan informasi dengan cara mengenkripsi pesan dengan menggunakan algoritma RC4, kemudian pesan yang telah dienkripsi tersebut disisipkan ke dalam suatu gambar dengan menggunakan metode LSB yang telah di modifikasi. Gambaran masalah secara umum dalam penelitian ini ditunjukkan pada gambar 3.1. menggunakan diagram Ishikawa.

Pengamanan file teks dengan RC4 dan Modified LSB mesin

Saluran komunikasi

tidak aman Ingin komunikasi aman Terbatas mendeteksi perubahan tdk signifikan

Citra yg berubah signifikan mengundang kecurigaan

Kriptografi menghasilkan kecurigaan Informasi dapat

diterima orang yg tdk berhak


(15)

3.1.2. Analisis kebutuhan

Analisis kebutuhan terbagi dua bagian, yaitu kebutuhan fungsional dan kebutuhan nonfungsional. Kebutuhan fungsional mendeskripsikan aktivitas yang disediakan dan harus dipenuhi suatu sistem, sedangkan kebutuhan nonfungsional mendeskripsikan fitur, karakteristik dan batasan lainnya.

a. Kebutuhan fungsional 1. Fungsi enkripsi

Melakukan pengenkripsian terhadap pesan dengan kunci tertentu untuk menghasilkan cipherteks. Pesan yang dienkripsi dapat di input langsung oleh pengguna melalui keyboard atau dapat juga diinput melalui pembacaan file teks.

2. Fungsi dekripsi

Melakukan pendekripsian terhadap cipherteks dengan kunci tertentu untuk menghasilkan plainteks.

3. Fungsi penyisipan

Melakukan penyisipan pesan rahasia ke dalam citra berformat BMP yang dipilih oleh pengguna.

4. Fungsi ekstrak

Melakukan pengekstrakan pesan rahasia dari citra berformat BMP yang didalamnya terdapat pesan rahasia.

b. Kebutuhan nonfungsional 1. Performa

Perangkat lunak yang dibangun dapat melakukan fungsi-fungsi kebutuhan dengan efektif dan efisien.

2. Mudah dipelajari dan digunakan

Perangkat lunak memiliki tampilan dan cara langkah kerja yang mudah untuk dipelajari.

3. Dokumentasi

Perangkat lunak memiliki panduan penggunaan perangkat lunak. 4. Kontrol

Perangkat lunak memiliki kontrol untuk hal-hal yang di luar dari mekanisme sistem, seperti input yang tidak sesuai, konfirmasi penyelesaian tugas dan lain-lain.


(16)

3.2 Perancangan Sistem

Perancangan sistem dilakukan untuk memberikan gambaran sistem yang akan dibangun sehingga mempermudah dalam melakukan implementasi ataupun evaluasi.

Sistem dirancang dalam bentuk flowchart, use case diagram, activity diagram,

sequence diagram dan perancangan antarmuka (interface).

3.2.1. Perancangan algoritma RC4

Algoritma RC4 dibagi menjadi dua tahapan, yaitu inisiasi vector S dan stream

generation (pembangkitan aliran kunci). Flowchart kedua tahapan tersebut

digambarkan pada Gambar 3.2.

Mulai

i = 0

i < 256

S[i] = i

S[j] = kunci [i mod panjang kunci] kunci

i = 0 j = 0

i < 256

j = (j + S[i] + T[i]) mod 256 Swap (S[i], S[j])

Selesai

Ya

Tidak

Ya

Tidak

A

Mulai

i = 0 j = 0 i = (i + 1) mod 256; j = (j + S[i]) mod 256;

Swap (S[i], S[j]); t = (S[i] + S[j]) mod 256;

k = S[t]; Array S[],

pesan

Selesai k

B


(17)

3.2.2. Perancangan enkripsi RC4

Proses enkripsi dilakukan dengan terlebih dahulu melakukan inisiasi vector S untuk mendapatkan vector S yang bersifat acak, kemudian dilakukan pembangkitan aliran kunci untuk mendapatkan kunci enkripsi. Kemudian cipherteks didapatkan dari hasil operasi XOR antara pesan dengan kunci. Flowchart proses enkripsi ditunjukkan pada gambar 3.3.

Mulai

pos,i,j = 0 KSA (Kunci)

pesan, kunci

Selesai

pos < length(pesan)

cipherteks = PRGA(pesan,i,j) pos = pos + 1

cipherteks Ya

Tidak

Gambar 3.3 Flowchart enkripsi

3.2.3. Perancangan dekripsi RC4

Proses dekripsi memiliki langkah yang sama dengan proses enkripsi oleh karena pada algoritma RC4 kunci yang digunakan untuk dekripsi sama dengan kunci yang digunakan untuk enkripsi. Flowchart proses dekripsi ditunjukkan pada gambar 3.4.


(18)

Mulai

pos,i,j = 0 KSA (Kunci) cipherteks, kunci

Selesai pos < length(cipherteks)

pesan = PRGA(cipherteks,i,j) pos = pos + 1

pesan Ya

Tidak

Gambar 3.4 Flowchart Dekripsi

3.2.4. Perancangan penyisipan modified LSB

Dalam penelitian ini dilakukan modifikasi mekanisme penyisipan pesan ke dalam gambar, jika pada metode LSB setiap komponen warna pada tiap-tiap pixel disisipkan pesan maka dalam penelitian ini penyisipan dilakukan dengan ketentuan berikut: - komponen warna merah akan disisipi pesan jika nilainya lebih kecil dari 100 - komponen warna hijau akan disisipi pesan jika nilainya lebih kecil dari 122 - komponen warna biru akan disisipi pesan jika nilainya lebih kecil dari 114


(19)

R < 100 State = Hiding

R = R + charValue % 2 charValue = charValue / 2

embed = embed - 1

zeros = zeros + 1

G < 122 State = Hiding

G = G + charValue % 2 charValue = charValue / 2

embed = embed - 1

zeros = zeros + 1

B < 114 State = Hiding

B = B + charValue % 2 charValue = charValue / 2

embed = embed - 1

zeros = zeros + 1

SetPixel(RGB)

state = filling zeros and zeros = 8

charIndex >= length (teks) state = Filling_With_Zeros

charValue = text[charIndex++] embed = 8

citra embed = 0

i = 0

i < height(bmp)

j = 0

j <width(bmp)

Color pixel = bmp.GetPixel(j, i); R = pixel.R - pixel.R % 2; G = pixel.G - pixel.G % 2; B = pixel.B - pixel.B % 2;

citra j = j + 1

i = i + 1 Pesan, citra Mulai selesai YA TIDAK YA YA YA TIDAK TIDAK TIDAK YA TIDAK YA TIDAK TIDAK YA YA TIDAK YA YA TIDAK YA YA TIDAK TIDAK


(20)

3.2.5. Perancangan ekstraksi modified LSB

Sama seperti pada penyisipan, ekstraksi dilakukan dengan aturan sebagai berikut, - komponen warna merah akan diekstrak jika nilainya lebih kecil dari 100 - komponen warna hijau akan diekstrak jika nilainya lebih kecil dari 122 - komponen warna biru akan diekstrak jika nilainya lebih kecil dari 114

Flowchart ekstrak pesan dari citra digambarkan pada Gambar 3.6.

R < 100 charValue = charValue * 2 + pixel.R % 2embed = embed - 1

G < 122 charValue = charValue * 2 + pixel.G % 2 embed = embed - 1

B < 114 charValue = charValue * 2 + pixel.B % 2 embed = embed - 1 i = 0

j < height(bmp)

j = 0

j <width(bmp)

Color pixel = bmp.GetPixel(j, i); R = pixel.R G = pixel.G B = pixel.B

text i = i + 1

citra Mulai

selesai

embed = 0 charValue =

reverseBits(charValue) charValue = 0

extractedText = extractedText + (char)charValue

text

j = j + 1 YA

YA

YA

YA

YA YA

YA

TIDAK TIDAK

TIDAK

TIDAK

TIDAK

TIDAK TIDAK


(21)

3.2.6. Use-case diagram

Use-case diagram merupakan pemodelan yang mengidentifikasi dan menjelaskan

fungsi-fungsi yang terdapat dalam sistem (Whitten, 2007). Gambar 3.7. berikut adalah

use case diagram dari sistem yang akan dibangun.

Pengguna

Sembunyikan Pesan

Tampilkan Pesan

Enkripsi pesan

Embed cipherteks

Ekstraksi gambar

Dekripsi cipherteks «extends»

«extends»

«extends»

«extends»

Gambar 3.7. Use-case Diagram Sistem

Use-case narrative merupakan penjelasan dari setiap use-case yang ada dalam

diagram use-case. Tabel 3.1 sampai tabel 3.6 berikut ini adalah use-case narrative dari diagram use-case diagram sistem yang dibangun.

Tabel 3.1. Use-case narrative Sembunyikan Pesan

Name Sembunyikan pesan

Actors User

Trigger User memilih menu sembunyikan pesan

Preconditions Pengguna menggunakan aplikasi sistem keamanan data Post Conditions User dapat melihat dan menyimpan hasil penyisipan pesan

Succes Scenario

1. User memilih menu sembunyikan pesan.

2. Sistem menampilkan halaman sembunyikan pesan. 3. User melakukan inputan teks, kunci dan cover-image. 4. Sistem melakukan proses enkripsi dan embeding.


(22)

Tabel 3.2. Use-case narrative Enkripsi Pesan

Name Enkripsi pesan

Actors Pengguna

Trigger Pengguna menekan tombol sembunyikan pesan. Preconditions Terdapat pesan dan kunci enkripsi dalam form. Post Conditions Sistem menampilkan cipherteks.

Succes Scenario

1. Form pesan dan kunci telah diisi.

2. Pengguna menekan tombol sembunyikan pesan. 3. Sistem melakukan enkripsi pesan.

4. Sistem menampilkan cipherteks.

Tabel 3.3. Use-case narrative Embed Cipherteks

Name Embed cipherteks

Actors Pengguna

Trigger Pengguna menekan tombol sembunyikan pesan Preconditions Terdapat cipherteks dan cover-image dalam form. Post Conditions Sistem menampilkan stego-image.

Succes Scenario

1. Form cipherteks dan cover-image telah diisi. 2. Pengguna menekan tombol sembunyikan pesan.

3. Sistem melakukan penyisipan cipherteks ke dalam citra. 4. Sistem menampilkan stego-image.

Tabel 3.4. Use-case narrative Tampilkan Pesan

Name Tampilkan pesan

Actors Pengguna

Trigger Pengguna menekan tombol tampilkan pesan

Preconditions Pengguna menggunakan aplikasi sistem keamanan data Post Conditions User dapat melihat dan menyimpan pesan hasil ekstrasi

stego-image.

Succes Scenario

1. User memilih menu tampilkan pesan.

2. Sistem menampilkan halaman Tampilkan pesan.

3. User melakukan inputan stego-image dan kunci enkripsi. 4. Sistem melakukan proses ekstraksi dan dekripsi.


(23)

Tabel 3.5. Use-case narrative Ekstraksi Pesan

Name Ekstraksi pesan

Actors Pengguna

Trigger Pengguna menekan tombol tampilkan pesan.

Preconditions Terdapat stego-image dan kunci enkripsi dalam form. Post Conditions Sistem menampilkan cipherteks.

Succes Scenario

1. Form pesan dan kunci telah diisi.

2. Pengguna menekan tombol sembunyikan pesan. 3. Sistem melakukan enkripsi pesan.

4. Sistem menampilkan cipherteks.

Tabel 3.6. Use-case narrative Dekripsi Cipherteks

Name Dekripsi cipherteks

Actors Pengguna

Trigger Pengguna menekan tombol sembunyikan pesan Preconditions Terdapat cipherteks dan kunci dalam form. Post Conditions Sistem menampilkan pesan.

Succes Scenario

1. Form cipherteks dan kunci telah diisi. 2. Pengguna menekan tombol tampilkan pesan. 3. Sistem melakukan dekripsi cipherteks. 4. Sistem menampilkan pesan.

3.2.7. Activity diagram

Activity diagram menggambarkan urutan aktifitas dalam sebuah sistem. Dalam sistem

terdapat dua buah activity diagram, yaitu activity diagram sembunyikan pesan dan

activity diagram tampilkan pesan.

a. Activity diagram sembunyikan pesan

Proses penyembunyian pesan dimulai dengan menginputkan pesan, kunci dan gambar cover. Kemudian sistem akan melakukan perhitungan untuk menentukan apakah pesan dapat disisipkan atau tidak. Jika pesan dapat disisip maka sistem akan melakukan enkripsi pesan kemudian menyisipkannya ke dalam gambar. Activity


(24)

User System Function Function P h a s e P h a s e memilih menu enkripsi-embed menampilkan form enkripsi-embed menginput pesan, kunci, gambar

Cek pesan apakah dapat disisip dalam

gambar

enkripsi pesan dan sisipkan dalam

gambar

menampilkan cipherteks dan stego

image menampilkan

peringatan pesan tidak dapat disisip konfirmasi melakukan perbaikan inputan [Tidak perbaiki] [perbaiki] [Tidak dapat] [dapat]

Gambar 3.8. Diagram Activity Sembunykan Pesan

b. Activity diagram tampilkan pesan

Proses penampilan pesan dimulai dengan menginputkan pesan dan gambar stego. Sistem akan melakukan ekstrak terhadap citra sehingga dihasilkan cipherteks kemudian cipherteks tersebut akan didekripsi sehingga didapatkan pesan yang semula. User System Function Function P h a s e P h a s e memilih menu ekstraksi dan dekripsi

menampilkan form ekstraksi dan dekripsi

menginput pesan, kunci, gambar

ekstrak gambar dan dekripsi

menampilkan pesan


(25)

3.2.8. Sequence diagram

Sequence diagram merupakan diagram yang menampilkan interaksi-interaksi yang

ada pada sistem secara berurutan. Pada sistem terdapat dua buah sequence diagram yaitu sequence diagram proses sembunyikan pesan yang ditunjukkan pada Gambar 3.10 dan sequence diagram proses tampilkan pesan yang ditunjukkan pada Gambar 3.11.

Pengguna Form Sembunyikan Pesan Enkripsi Embed

input(pesan, gambar, kunci)

Enkripsi (pesan, kunci)

Cipherteks

Embed (cipherteks,gambar)

stego image stego image

Gambar 3.10. Sequence Diagram Proses Sembunyikan Pesan

Pengguna Form Tampilkan Pesan Ekstrak Dekripsi

input(gambar, kunci)

Ekstrak (gambar)

Cipherteks

Dekripsi (cipherteks,kunci)

plainteks plainteks


(26)

3.2.9. Perancangan antarmuka (Interface)

Antarmuka merupakan sarana interaksi antara pengguna dengan sistem. Antarmuka dirancang sedemikian mungkin agar penguna dapat dengan mudah menggunakan sistem yang dibangun.

1. Halaman utama

Halaman utama merupakan tampilan awal sistem ketika sistem dijalankan. Pada halaman utama terdapat tiga buah pilihan menu yaitu menu sembunyikan pesan, menu tampilkan pesan dan menu keluar aplikasi. Perancangan halaman utama ditunjukkan pada gambar 3.12.

Gambar 3.12. Perancangan Antarmuka Halaman Utama

Berikut ini merupakan keterangan rancangan antarmuka halaman utama : 1. List Menu, merupakan kumpulan menu yang berisi fungsi-fungsi dari sistem. 2. Tombol sembunyikan pesan merupakan tombol yang akan mengarahkan

pengguna ke halaman sembunyikan pesan.

3. Tombol tampilkan pesan merupakan tombol yang akan mengarahkan pengguna ke halaman sembunyikan pesan.


(27)

2. Halaman sembunyikan pesan

Perancangan antar muka halaman sembunyikan pesan ditunjukkan pada gambar 3.13.

Gambar 3.13. Perancangan Antarmuka Halaman Sembunyikan Pesan

Berikut ini merupakan keterangan rancangan antarmuka halaman sembunyikan pesan :

1. Tombol cari teks merupakan tombol untuk mencari file teks yang sudah tersimpan di komputer pengguna.

2. Kotak kunci merupakan tempat memasukkan kunci enkripsi.

3. Kotak pesan merupakan tempat memasukkan pesan yang akan disembunyikan. 4. Tombol cari cover merupakan tombol untuk mencari cover-image.

5. Kotak gambar merupakan tempat untuk menampilkan cover-image yang telah dipilih pengguna.

6. Tombol proses merupakan tombol untuk melakukan proses penyembunyian pesan.

7. Kotak cipherteks merupakan tempat untuk menampilkan cipherteks hasil dekripsi pesan.


(28)

3. Halaman tampilkan pesan

Perancangan antarmuka halaman tampilkan pesan ditunjukkan pada gambar 3.14.

Gambar 3.14. Perancangan Antarmuka Halaman Tampilkan Pesan

Berikut ini merupakan keterangan rancangan antarmuka halaman tampilkan pesan :

1. Tombol cari stego merupakan tombol untuk mencari stego-image yang sudah tersimpan di komputer pengguna.

2. Kotak kunci merupakan tempat untuk memasukkan kunci dekripsi.

3. Kotak stego merupakan tempat untuk menampilkan stego-image yang di input pengguna.

4. Tombol proses merupakan tombol untuk melakukan proses penampilan pesan. 5. Kotak cipherteks merupakan kotak untuk menampilkan cipherteks hasil

ekstraksi stego-image.

6. Kotak pesan merupakan kotak untuk menampilkan pesan hasil dekripsi cipherteks.


(29)

4. Halaman petunjuk penggunaan

Perancangan antarmuka penggunaan aplikasi ditunjukkan pada gambar 3.15.

Gambar 3.15. Perancangan Antarmuka Petunjuk Penggunaan Perangkat Lunak

5. Form Tentang Aplikasi

Perancangan antarmuka tentang aplikasi ditunjukkan pada gambar 3.16.


(30)

BAB 4

IMPLEMENTASI DAN PENGUJIAN

4.1. Implementasi

Implementasi sistem merupakan lanjutan dari tahap analisis dan perancangan sistem. Pada tahap ini dilakukan implementasi dari segala yang dibahas dalam tahap analisis dan perancangan. Bahasa pemrograman yang digunakan adalah bahasa C# dan dibangun dengan menggunakan Integrated Development Environment (IDE) SharpDevelop versi 4.3.1.

4.1.1. Implementasi antarmuka (Interface)

1. Halaman utama

Halaman utama merupakan halaman yang pertama sekali akan ditampilkan ketika sistem dijalankan. Antarmuka halaman utama ditunjukkan pada Gambar 4.1.


(31)

2. Halaman sembunyikan pesan

Halaman sembunyikan pesan merupakan halaman untuk melakukan proses enkripsi dan penyisipan. Tampilan halaman sembunyikan pesan ditunjukkan pada gambar 4.2.

Gambar 4.2. Antarmuka Halaman Sembunyikan Pesan 3. Halaman tampilkan pesan

Halaman tampilan pesan merupakan halaman untuk melakukan proses ekstraksi dan proses dekripsi. Tampilan halaman tampilkan pesan ditunjukkan pada gambar 4.3.


(32)

4.1.4 Implementasi algoritma RC4

Implementasi inisiasi vector S dalam bahasa pemrograman ditunjukkan pada Gambar 4.4, sedangkan implementasi stream generation (pembangkitan aliran kunci) ditunjukkan pada Gambar 4.5.

Gambar 4.4. Implementasi Inisiasi Vector S

Gambar 4.5. Implementasi Pembangkitan Aliran Kunci

4.1.5 Implementasi metode modified LSB

Implementasi penyisipan pesan dengan metode modified LSB dalam bahasa pemrograman ditunjukkan pada gambar 4.6. sedangkan untuk ekstraksi stego-image ditunjukkan pada gambar 4.7.


(33)

Gambar 4.6. Implementasi Penyisipan Pesan


(34)

4.2. Pengujian

Pengujian merupakan tahap yang dilakukan untuk memastikan bahwa sistem yang telah dibangun dapat berjalan dengan baik dan sesuai dengan analisis dan perancangan sistem yang telah dibuat sebelumnya.

Dalam penelitian ini pengujian dilakukan dengan membuat skenario pengamanan suatu pesan teks. Skenario yang akan dibuat adalah sebagai berikut, pengirim pesan melakukan pengamanan pesan teks dengan cara melakukan enkripsi pesan kemudian menyisipkan hasil enkripsi ke dalam suatu citra sehingga dihasilkan gambar stego. Kemudian penerima pesan akan melakukan ekstrasi terhadap gambar stego yang akan menghasilakan cipherteks dan selanjutnya didekripsi untuk mendapatkan pesan yang ingin disampaikan oleh pengirim.

4.2.1.Pengujian penyembunyian pesan

Penyembunyian pesan dilakukan dengan memasukkan pesan, kunci enkripsi dan

cover-image. Pesan dapat dimasukkan dengan mencari file teks dengan mengklik

tombol cari pesan atau dapat juga dimasukkan dengan mengklik kotak pesan kemudian diinput dengan keyboard. Sedangkan cover-image diinputkan dengan menekan tombol cari cover. Kemudian sistem akan menampilkan isi dari pesan dan

cover-image seperti yang ditunjukkan pada gambar 4.8.


(35)

Jika cover-image yang dimasukkan tidak dapat menampung teks maka sistem akan menampilkan kotak pesan peringatan meminta user untuk memasukkan cover-image yang lain seperti pada gambar 4.9.

Gambar 4.9. Kotak Pesan Peringatan Pesan Tidak Dapat Disisip

Langkah selanjutnya adalah menekan tombol sembunyikan, dan sistem akan menampilkan hasil enkripsi pesan berupa cipherteks dan stego-image yang telah mengandung cipherteks didalamnya seperti ditunjukkan pada gambar 4.10.


(36)

Cipherteks hasil enkripsi dapat ditampilkan berupa karakter seperti pada gambar 4.10, dan dapat juga berupa angka ataupun berupa karakter sekaligus angka seperti pada gambar 4.11.

Gambar 4.11. Pengaturan Kotak Cipherteks (A) Hanya Angka (B) Angka dan Huruf

Pengguna dapat menyimpan stego-image dengan cara mengklik tombol simpan stego kemudian user akan menentukan tempat penyimpanan stego-image, sistem akan memberikan konfirmasi penyimpanan jika stego-image berhasil disimpan seperti yang ditunjukkan pada gambar 4.12.

Gambar 4.12. Kotak Pesan Pemberitahuan Penyimpanan Stego-Image

Dengan cara yang sama dilakukan pengujian penyembunyian pesan terhadap beberapa pesan dan citra uji yang bervariasi sehingga didapatlah rangkuman hasil pengujian penyembunyian pesan seperti yang ditunjukkan pada tabel 4.1.


(37)

Tabel 4.1. Pengujian Penyembunyian Pesan (I)

No Plainteks Cipherteks Cover-Image Stego-Image

1.

pengamanan teks

Panjang : 15 karakter

218 137 240 18 102 147 173 5 103 121 253 30 107 246 74

Panjang : 15 karakter

Ukuran (KB) : 0.376 KB Dimensi (px) : 5x20

Ukuran (KB) : 0.374 KB Dimensi (px) : 5x20

2. Koala (Phascolarctos cinereus) adalah salah satu binatang berkantung (marsupial) khas dari Australia dan merupakan wakil satu-satunya dari keluarga Phascolarctidae

Panjang : 163 karakter

36 14 101 58 150 118 236 106 249 16 210 231 87 220 123 33 219 225 196 62 220 150 130 85 209 88 206 144 167 182 162 57 46 138 50 122 237 128 123 149 90 204 3 18 23 74 231 42 202 213 83 237 194 227 54 192 158 16 33 202 89 127 137 66 128 45 140 247 82 216 246 81 44 72 111 77 99 149 202 20 166 114 22 138 77 222 244 245 48 5 55 80 252 83 34 31 16 88 39 104 182 53 65 192 192 122 133 228 16 241 123 243 193 241 49 38 8 120 137 103 123 248 112 5 158 116 132 110 71 87 97 242 50 252 94 134 208 68 246 208 90 60 117 82 231 2 34 106 90 251 254 182 128 190 108 39 5 207 164 161 140 250 204

Panjang : 163 karakter

Ukuran (KB) : 351 Dimensi (px) : 200x200

Ukuran (KB) : 351 Dimensi (px) : 200x200

3. Pada masa lampau, pemuda Nias akan mencoba untuk melompati batu setinggi lebih dari 2 meter, dan jika mereka berhasil mereka akan dinyatakan sebagai laki-laki dewasa dan dapat bergabung sebagai prajurit untuk berperang. Sejak usia 10 tahun, anak laki-laki di Pulau Nias akan bersiap untuk melakukan giliran "fahombo" mereka

Panjang : 323 karakter

96 47 166 40 253 213 26 115 222 128 138 48 39 233 44 143 117 12 146 84 154 180 198 17 172 145 221 235 85 81 2 50 46 78 226 134 170 21 86 233 190 182 2 122 253 110 123 122 210 50 214 247 111 226 99 149 212 93 66 46 63 20 89 202 87 18 8 17 124 234 184 82 127 250 255 44 48 3 228 3 2 154 158 209 174 202 232 177 158 159 219 188 238 76 132 210 14 18 53 85 44 162 245 175 74 72 72 180 56 206 131 236 165 54 46 190 2 63 122 61 119 142 73 248 195 233 78 165 71 245 108 8 67 96 107 240 124 208 41 108 32 200 229 72 149 133 245 20 160 27 27 79 208 83 130 174 253 12 180 218 201 108 131 145 162 87 234 113 136 49 157 118 144 167 104 60 223 17 234 105 48 19 183 193 21 24 220 197 1 234 141 35 178 218 79 122 71 110 206 69 94 1 59 168 175 182 16 1 35 155 221 210 37 109 118 82 117 36 99 185 201 48 190 6 102 253 49 143 85 40 219 177 205 138 54 39 39 20 167 18 194 244 239 74 66 86 246 243 46 48 45 206 206 242 105 234 15 248 147 247 124 79 144 91 189 87 8 132 63 151 103 118 56 76 190 12 240 141 40 135 95 51 218 244 85 121 123 89 64 72 88 75 205 37 221 123 67 217 194 30 74 29 3 90 126 27 165 75 246 226 33 91 236 217 227 19 226 5 200 214 245 139 141

Panjang : 323 karakter

Ukuran (KB) : 670 Dimensi (px) : 587x389

Ukuran (KB) : 670 Dimensi (px) : 587x389


(38)

Tabel 4.2. Pengujian Penyembunyian Pesan (II)

No Plainteks Cipherteks Cover-Image Stego-Image

4.

Asal mula nama Raja Ampat menurut mitos masyarakat setempat berasal dari seorang wanita yang menemukan tujuh telur. Empat butir di antaranya menetas menjadi empat orang pangeran yang berpisah dan masingmasing menjadi raja yang berkuasa di Waigeo, Salawati, Misool Timur dan Misool Barat. Sementara itu, tiga butir telur lainnya menjadi hantu, seorang wanita, dan sebuah batu. Kepulauan Raja Ampat merupakan tempat yang sangat berpotensi untuk dijadikan sebagai objek wisata, terutama wisata penyelaman. Perairan Kepulauan Raja Ampat menurut berbagai sumber, merupakan salah satu dari 10 perairan terbaik untuk diving site di seluruh dunia. Bahkan, mungkin juga diakui sebagai nomor satu untuk kelengkapan flora dan fauna bawah air pada . . . . . . di kampung Saondarek, ketika pasang surut terendah, bisa disaksikan hamparan terumbu karang tanpa menyelam dan dengan adaptasinya sendiri, karang tersebut tetap bisa hidup walaupun berada di udara terbuka dan terkena sinar matahari langsung.

Panjang : 2000 karakter

99 68 83 222 177 201 209 98 97 117 236 205 117 221 185 162 78 19 97 155 131 165 245 64 87 95 165 222 119 229 163 123 254 181 161 111 38 156 31 117 212 239 255 82 186 243 15 158 56 9 161 199 92 230 55 121 142 75 83 169 135 75 131 145 8 56 210 164 109 74 125 195 22 98 131 183 165 229 118 254 42 45 119 136 87 29 169 218 162 41 6 152 228 244 239 94 236 137 214 177 76 75 33 248 148 189 136 214 163 60 200 121 130 188 60 21 178 32 85 27 107 209 214 32 129 186 123 165 197 142 100 247 76 116 26 100 219 141 213 203 18 113 213 245 201 211 60 105 113 206 168 115 25 151 61 104 162 155 113 43 68 72 247 38 22 90 84 117 208 252 122 5 248 226 212 16 242 36 47 131 182 207 35 203 107 190 48 186 136 77 144 248 53 138 139 4 32 226 61 74 45 246 40 168 95 26 90 24 130 165 51 12 10 65 80 91 152 59 174 212 210 138 157 36 15 181 181 93 101 107 165 117 172 192 31 248 147 83 255 116 181 28 96 137 82 106 162 197 1 207 69 99 155 185 107 128 28 94 94 216 241 175 138 190 213 76 194 42 234 169 115 13 53 170 3 93 46 155 139 140 119 217 229 253 5 22 50 199 59 74 149 86 18 248 191 216 151 79 218 78 84 30 168 21 91 134 84 153 189 79 114 103 7 76 253 3 66 41 1 177 66 232 210 214 166 188 171 187 234 4 158 25 205 117 59 75 105 69 12 204 239 76 189 253 198 42 20 176 110 148 . . . . . . 126 248 167 251 159 37 81 15 246 239 5 91 251 183 181 234 35 39 68 228 126 120 72 41 250 223 71 202 184 115 220 40 165 199 118 88 97 11 55 237 46 55 101 170 6 125 224 99 112 24 5 191 129 86 199 216 94 248 84 142 28 157 95 175 215 37 200 185 27 245 242 85 179 120 185 236 41 98 170 64 232 219 105 229 195 37 14 92 35 197 38 246 72 161 231 163 29 88 21 206 30 142 60 72 130 182 137 2 36 148 89 8 215 237 89 9 108 202 37 164 255 79 86 148 13 229 118 2 3 208 250 8 218

Panjang : 2000 karakter

Ukuran (KB) : 2929 Dimensi (px) :

1000x1000

Ukuran (KB) : 2929 Dimensi (px) :

1000x1000

Berdasarkan hasil pengujian yang ditampilkan pada tabel 4.1 terlihat bahwa

stego-image yang dihasilkan sistem dengan cover-image secara kasat mata tidak

terlihat perbedaanya, bahkan dimensi pixel dari citra tidak berubah sama sekali sehingga tidak dapat dilihat perbedaanya. Maka dapat dinyatakan bahwa metode


(39)

4.2.2.Pengujian pengungkapan pesan

Pengungkapan pesan dilakukan dengan memasukkan gambar stego dan kunci dekripsi. Stego-image dimasukkan dengan cara mengklik tombol cari stego, kemudian sistem akan menampilkan stego-image pada kotak gambar stego seperti pada gambar 4.13.

Gambar 4.13. Penginputan Stego-Image

Kemudian pengguna menekan tombol tampilkan, dan sistem akan menampilkan cipherteks hasil ekstraksi stego-image dan plainteks hasil dekripsi cipherteks tersebut seperti ditunjukkan pada gambar 4.14.


(40)

Gambar 4.14. Tampilan Hasi Ekstraksi Stego-Image dan Dekripsi Cipherteks

Kemudian pesan dapat disimpan dengan mengklik tombol simpan pesan dan sistem akan memberikan konfirmasi penyimpanan pesan seperti pada gambar 4.15.

Gambar 4.15. Kotak Pesan Pemberitahuan Penyimpanan Pesan

Dengan cara yang sama dilakukan pengujian pengungkapan pesan terhadap

stego-image yang dihasilkan melalui pengujian penyembunyian pesan sehingga didapatlah

rangkuman hasil pengujian pengungkapan pesan seperti yang ditunjukkan pada tabel 4.2.


(41)

Tabel 4.3. Pengujian Pengungkapan Pesan

No. Stego-Image Cipherteks Plainteks

1.

218 137 240 18 102 147 173 5 103 121 253 30 107 246 74 pengamanan teks

===================== Panjang : 15 karakter

2.

36 14 101 58 150 118 236 106 249 16 210 231 87 220 123 33 219 225 196 62 220 150 130 85 209 88 206 144 167 182 162 57 46 138 50 122 237 128 123 149 90 204 3 18 23 74 231 42 202 213 83 237 194 227 54 192 158 16 33 202 89 127 137 66 128 45 140 247 82 216 246 81 44 72 111 77 99 149 202 20 166 114 22 138 77 222 244 245 48 5 55 80 252 83 34 31 16 88 39 104 182 53 65 192 192 122 133 228 16 241 123 243 193 241 49 38 8 120 137 103 123 248 112 5 158 116 132 110 71 87 97 242 50 252 94 134 208 68 246 208 90 60 117 82 231 2 34 106 90 251 254 182 128 190 108 39 5 207 164 161 140 250 204

Koala (Phascolarctos cinereus) adalah salah satu binatang berkantung (marsupial) khas dari Australia dan merupakan wakil satu-satunya dari keluarga Phascolarctidae

====================

Panjang : 163 karakter

3.

96 47 166 40 253 213 26 115 222 128 138 48 39 233 44 143 117 12 146 84 154 180 198 17 172 145 221 235 85 81 2 50 46 78 226 134 170 21 86 233 190 182 2 122 253 110 123 122 210 50 214 247 111 226 99 149 212 93 66 46 63 20 89 202 87 18 8 17 124 234 184 82 127 250 255 44 48 3 228 3 2 154 158 209 174 202 232 177 158 159 219 188 238 76 132 210 14 18 53 85 44 162 245 175 74 72 72 180 56 206 131 236 165 54 46 190 2 63 122 61 119 142 73 248 195 233 78 165 71 245 108 8 67 96 107 240 124 208 41 108 32 200 229 72 149 133 245 20 160 27 27 79 208 83 130 174 253 12 180 218 201 108 131 145 162 87 234 113 136 49 157 118 144 167 104 60 223 17 234 105 48 19 183 193 21 24 220 197 1 234 141 35 178 218 79 122 71 110 206 69 94 1 59 168 175 182 16 1 35 155 221 210 37 109 118 82 117 36 99 185 201 48 190 6 102 253 49 143 85 40 219 177 205 138 54 39 39 20 167 18 194 244 239 74 66 86 246 243 46 48 45 206 206 242 105 234 15 248 147 247 124 79 144 91 189 87 8 132 63 151 103 118 56 76 190 12 240 141 40 135 95 51 218 244 85 121 123 89 64 72 88 75 205 37 221 123 67 217 194 30 74 29 3 90 126 27 165 75 246 226 33 91 236 217 227 19 226 5 200 214 245 139 141

Pada masa lampau, pemuda Nias akan mencoba untuk melompati batu setinggi lebih dari 2 meter, dan jika mereka berhasil mereka akan dinyatakan sebagai laki-laki dewasa dan dapat bergabung sebagai prajurit untuk berperang. Sejak usia 10 tahun, anak laki-laki di Pulau Nias akan bersiap untuk melakukan giliran "fahombo" mereka

===================== Panjang : 323 karakter

4.

99 68 83 222 177 201 209 98 97 117 236 205 117 221 185 162 78 19 97 155 131 165 245 64 87 95 165 222 119 229 163 123 254 181 161 111 38 156 31 117 212 239 255 82 186 243 15 158 56 9 161 199 92 230 55 121 142 75 83 169 135 75 131 145 8 56 210 164 109 74 125 195 22 98 131 183 165 229 118 254 42 45 119 136 87 29 169 218 162 41 6 152 228 244 239 94 236 137 214 177 76 75 33 248 148 189 136 214 163 60 200 121 130 188 60 21 178 32 85 27 107 209 214 32 129 186 123 165 197 142 100 247 76 116 26 100 219 141 213 203 18 113 213 245 201 211 60 105 113 206 168 115 25 151 61 104 162 155 113 43 68 72 247 38 22 90 84 117 208 252 122 5 248 226 212 . . . . . . 101 170 6 125 224 99 112 24 5 191 129 86 199 216 94 248 84 142 28 157 95 175 215 37 200 185 27 245 242 85 179 120 185 236 41 98 170 64 232 219 105 229 195 37 14 92 35 197 38 246 72 161 231 163 29 88 21 206 30 142 60 72 130 182 137 2 36 148 89 8 215 237 89 9 108 202 37 164 255 79 86 148 13 229 118 2 3 208 250 8 218

Asal mula nama Raja Ampat menurut mitos masyarakat setempat berasal dari seorang wanita yang menemukan tujuh telur. Empat butir di antaranya menetas menjadi empat orang pangeran yang berpisah dan masing - masing . . . . . . hidup walaupun berada di udara terbuka dan terkena sinar matahari langsung.

===================== Panjang : 2000 karakter

Berdasarkan hasil pengujian pada tabel 4.12 terlihat bahwa stego-image dapat mengembalikan cipherteks sama seperti sebelum dilakukan penyisipan. Dengan demikian sistem dinyatakan memenuhi aspek recovery.


(42)

4.2.3.Pengujian proses enkripsi RC4

Pengujian hasil enkripsi dilaksanakan dengan cara melakukan perhitungan manual algoritma enkripsi RC4 kemudian membandingkannya dengan hasil enkripsi yang diberikan oleh sistem. Pesan dan kunci enkripsi yang digunakan sesuai yang telah digunakan sebelumnya pada bagian implementasi yaitu pada Gambar 4.11.

pesan = “pengamananteks” kunci = “rahasia”

Untuk dapat melakukan operasi perhitungan pada proses enkripsi maka terlebih dahulu pesan dan kunci yang kita gunakan kita ubah dalam bentuk bilangan dengan menggunakan pengkodean karakter ASCII.

pesan (char) = p e n g a m a n a n _ t e k s

pesan (dec) = 112 101 110 103 97 109 97 110 97 110 32 116 101 107 115

kunci (char) = r a h a s i a

kunci (dec) = 114 97 104 97 115 105 97

1. Inisiasi vector S

Tiap-tiap elemen dari vector S diberi nilai awal secara berurut mulai dari 0 hingga 255, sedangkan untuk vector T tiap-tiap elemennya diberi nilai berdasarkan nilai dari kunci. Inisiasi awal vector S dan vector T dijabarkan sebagai berikut.

 Iterasi ke – 1

i = 0 S[i] = i S[0] = 0

T[i] = Kunci[i mod panjangKunci] T[0] = Kunci[0 mod 7]

= Kunci[0] = 114

 Iterasi ke – 2

i = 1 S[i] = i S[1] = 1

T[i] = Kunci[i mod panjangKunci] T[1] = Kunci[1 mod 7]

= Kunci[1] = 97


(43)

Maka didapatlah nilai awal vector S yang ditunjukkan pada tabel 4.4 dan untuk vector T ditunjukkan pada tabel 4.5.

Tabel 4.4. Nilai Awal Vector S

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255

Array S [ ]

Tabel 4.5. Nilai Awal Vector T

114 97 104 97 115 105 97 114 97 104 97 115 105 97 114 97 104 97 115 105 97 114 97 104 97 115 105 97 114 97 104 97 115 105 97 114 97 104 97 115 105 97 114 97 104 97 115 105

97 114 97 104 97 115 105 97 114 97 104 97 115 105 97 114 97 104 97 115 105 97 114 97 104 97 115 105 97 114 97 104 97 115 105 97 114 97 104 97 115 105 97 114 97 104 97 115 105 97 114 97 104 97 115 105 97 114 97 104 97 115 105 97 114 97 104 97 115 105 97 114 97 104 97 115 105 97 114 97 104 97 115 105 97 114 97 104 97 115 105 97 114 97 104 97 115 105 97 114 97 104 97 115 105 97 114 97 104 97 115 105

97 114 97 104 97 115 105 97 114 97 104 97 115 105 97 114 97 104 97 115 105 97 114 97 104 97 115 105 97 114 97 104 97 115 105 97 114 97 104 97 115 105 97 114 97 104 97 115 105 97 114 97 104 97 115 105 97 114 97 104 97 115 105 97 114 97 104 97 115 105 97 114 97 104 97 115 105 97 114 97 104 97 115 105 97 114 97 104 97 115 105 97 114 97 104 97

Vector T [ ]

Kemudian dilakukan permutasi dalam vector S sebagai berikut :  iterasi ke – 1

i = 0 , j = 0

j = (j + S[i] + T[i]) mod 256 j = (0 + S[0] + T[0]) mod 256 j = (0 + 0 + 114) mod 256 j = 114


(44)

Hasil permutasi iterasi pertama vector S ditunjukkan pada tabel 4.6. Tabel 4.6. Hasil Permutasi Iterasi Pertama Vector S

114 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 0 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255

Vector S [ ]

 iterasi ke – 2

i = 1, j = 114

j = (j + S[i] + T[i]) mod 256 j = (114 + S[1] + T[1]) mod 256 j = (114 + 1 + 97) mod 256 j = 212

swap (S[1], S[212])

Hasil permutasi iterasi kedua vector S ditunjukkan pada Tabel 4.7. Tabel 4.7. Hasil Permutasi Iterasi Ke-2 Vector S

114 212 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 0 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 1 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255


(45)

Oleh karena permutasi vector S di pengaruhi oleh nilai dari i dan j maka akan ada kemungkinan sebuah elemen dari vector S mengalami permutasi lebih dari satu kali seperti pada iterasi ke 55 berikut ini.

 iterasi ke – 55

i = 54, j = 97

j = (j + S[i] + T[i]) mod 256 j = (97 + S[54]+ T[54] mod 256 j = (97 + 54 + 105) mod 256 j = 256 mod 256

j = 0

swap (S[54], S[0])

Hasil permutasi iterasi ke-55 vector S ditunjukkan pada tabel 4.8. Tabel 4.8. Hasil Permutasi Iterasi Ke-55 Vector S

54 212 62 162 25 135 238 103 208 65 172 42 159 13 141 253 35 231 108 232 93 228 91 218 83 202 77 201 87 213 22 219 110 248 37 117 51 123 169 67 1 94 46 7 251 137 31 194 24 246 45 149 185 97 114 55 56 57 58 59 60 61 2 63 64 9 66 39 68 69 70 71 72 73 74 75 76 26 78 79 80 81 82 48 84 85 86 28 88 89 90 30 92 20 41 95 96 53 98 99 100 101 102 43 104 105 106 107 18 109 32 111 112 113 0 115 116 16 118 119 120 121 122 34 124 125 126 127 128 129 130 131 132 133 134 5 136 50 138 139 140 14 142 143 144 145 146 147 148 36 150 151 152 153 154 155 156 157 158 12 160 161 3 163 164 165 166 167 168 38 170 171 10 173 174 175 176 177 178 179 180 181 182 183 184 52 186 187 188 189 190 191 192 193 47 195 196 197 198 199 200 27 4 203 204 205 206 207 8 209 210 211 40 29 214 215 216 217 23 11 220 221 222 223 224 225 226 227 21 229 230 17 19 233 234 235 236 237 6 239 240 241 242 243 244 245 49 247 33 249 250 44 252 15 254 255

Vector S [ ]

Pada Tabel 4.8 terlihat bahwa elemen vector S[0] yang telah mengalami permutasi kembali ditukar nilainya dengan elemen vector S yang lain.

 dan seterusnya hingga iterasi ke-256.


(46)

Tabel 4.9. Hasil Akhir Inisiasi Vector S

54 157 62 162 25 135 195 103 208 8 188 42 165 13 141 253 35 231 108 134 93 82 49 9 83 139 147 38 87 193 22 219 113 248 155 117 64 123 154 67 53 94 46 102 133 170 106 194 24 246 45 239 196 132 114 19 66 129 126 77 27 111 210 222 51 178 31 116 16 122 216 34 7 29 146 177 243 236 112 229 145 90 95 166 18 37 32 20 1 234 197 251 115 52 2 249 160 88 252 105 140 228 72 191 181 192 121 138 61 201 58 76

56 110 104 161 200 240 199 176 50 78 28 255 80 47 206 92 5 100 168 150 245 30 151 209 198 204 184 171 179 68 230 214 84 70 148 153 130 203 10 232 81 59 128 85 11 144 89 60 167 174 0 226 17 71 169 41 175 14 137 202 173 142 187 57 180 205 86 40 119 4 217 156 39 26 43 233 120 237 79 98 99 244 250 164 185 96 225 12 186 101 136 227 190 73 224 48 65 158 247 63 220 211 127 109 242 107 223 15 183 33 131 213 36 215 21 6 238 172 163 254 152 3 55 221 143 212 218 149 69 44 75 235 125 97 91 74 241 118 23 182 189 207 124 159

Vector S [ ]

2. Stream Generation (Pembangkitan Kunci)

Pembangkitan kunci dilakukan sebanyak panjang teks karena setiap karakter pesan dienkripsi oleh kunci yang berbeda. Pembangkitan kunci dijabarkan sebagai berikut.  iterasi ke – 1

i = 0, j=0

i = (i + 1) mod 256 = (0 + 1) mod 256 = 1

j = (j + S[i]) mod 256 = (0 + S[1]) mod 256 = (0 + 157) mod 256 = 157

Swap (S[i], S[j]) Swap (S[1], S[157])

t = (S[i] + S[j]) mod 256 = (S[1]+ S[157]) mod 256 = (144 + 157) mod 256 = 45

k = S[t] = S[45] = 170

 iterasi ke – 2

i = 1, j=157

i = (i + 1) mod 256 = (1 + 1) mod 256 = 2

j = (j + S[i]) mod 256 = (157 + S[2]) mod 256


(47)

= (157 + 62) mod 256 = 219

Swap (S[i], S[j]) Swap (S[2], S[219])

t = (S[i] + S[j]) mod 256 = (S[2] + S[219]) mod 256 = (15 + 62) mod 256 = 77

k = S[t] = S[77] = 236

 dan seterusnya hingga iterasi ke-15.

Maka didapatlah aliran kunci = 170 236 158 117 7 254 204 107 6 23 221 106 14 157 57

Setelah aliran kunci dihasilkan maka untuk menghasilkan cipherteks dilakukan operasi XOR antara plainteks dengan kunci sebagai berikut.

 iterasi ke – 1

i = 0

cipherteks[i] = pesan[i] XOR kunci[i] cipherteks[0] = pesan[0] XOR kunci[0] = 112 XOR 170 = 218

 iterasi ke – 2

i = 1

cipherteks[i] = pesan[i] XOR kunci[i] cipherteks[1] = pesan[1] XOR kunci[1] = 101 XOR 236 = 137

 dan seterusnya hingga iterasi ke-15.

Maka didapatkan cipherteks seperti pada tabel 4.10.

Tabel 4.10. Proses XOR Pesan dengan Kunci

pesan (char) p e n g a m a n a n _ t e k s

pesan (dec) 112 101 110 103 97 109 97 110 97 110 32 116 101 107 115 kunci 170 236 158 117 7 254 204 107 6 23 221 106 14 157 57 cipherteks 218 137 240 18 102 147 173 5 103 121 253 30 107 246 74

Dari tabel 4.10 terlihat bahwa hasil cipherteks dengan perhitungan manual sama dengan cipherteks yang dihasilkan oleh sistem sehingga dapat dinyatakan sistem berhasil melakukan enkripsi berdasarkan analisis algoritma RC4.


(48)

4.2.4.Pengujian proses dekripsi RC4

Lalu kita akan mendekripsi cipherteks yang dihasilkan pada proses pengujian enkripsi. Untuk dapat mendekripsi cipherteks tersebut kita harus menggunakan kunci yang sama dengan kunci proses enkripsi.

cipherteks = “218 137 240 18 102 147 173 5 103 121 253 30 107 246 74” kunci = “rahasia”

Sama seperti proses enkripsi untuk dapat melakukan operasi perhitungan pada proses dekripsi maka kunci terlebih dahulu diubah ke dalam bentuk bilangan dengan menggunakan pengkodean karakter ASCII.

kunci (char) = r a h a s i a

kunci (dec) = 114 97 104 97 115 105 97

Kemudian dilakukan inisiasi vector S dan pembangkitan kunci seperti pada proses enkripsi. Oleh karena kunci yang digunakan sama maka akan dihasilkan aliran kunci yang sama pula dengan aliran kunci pada proses enkripsi.

Aliran kunci = 170 236 158 117 7 254 204 107 6 23 221 106 14 157 57 Setelah aliran kunci didapatkan, untuk menghasilkan pesan yang semula maka dilakukan operasi XOR antara cipherteks dengan plainteks sebagai berikut.

 iterasi ke 1

i = 0

pesan[i] = cipherteks[i] XOR kunci[i] pesan[0] = cipherteks[0] XOR kunci[0] = 218 XOR 170

= 112 (ubah dalam karakter ASCII) = p

 iterasi ke 2

i = 1

pesan[i] = cipherteks[i] XOR kunci[i] pesan[1] = cipherteks[1] XOR kunci[1] = 137 XOR 236

= 101 (ubah dalam karakter ASCII) = e

 dan seterusnya hingga iterasi ke-20.

Maka didapatlah plainteks seperti pada tabel 4.11.

Tabel 4.11. Proses XOR Cipherteks dengan Kunci

cipherteks 218 137 240 18 102 147 173 5 103 121 253 30 107 246 74

kunci 170 236 158 117 7 254 204 107 6 23 221 106 14 157 57

pesan (dec) 112 101 110 103 97 109 97 110 97 110 32 116 101 107 115


(49)

4.2.5.Pengujian proses penyisipan modified LSB

Misalkan kita ingin menyisipkan cipherteks hasil enkripsi pesan ke dalam sebuah citra. Citra yang kita gunakan sebagai media penampung (cover-image) berjenis true

color dengan ukuran 5 x 20 pixel.

cipherteks = 218 137 240 18 102 147 173 5 103 121 253 30 107 246 74

cover-image =

Hal pertama yang dilakukan adalah mengambil nilai representasi biner dari

cover-image. Oleh karena citra yang digunakan berjenis true color maka setiap pixel dari cover-image direpresentasikan oleh tiga buah nilai, yaitu warna merah (R), hijau (G),

dan biru (B). Representasi biner dari cover-image ditunjukkan pada tabel 4.12. Tabel 4.12. Representasi Biner Cover-Image Sebelum Penyisipan

i

j R G B R G B R G B R G B R G B

0 137 2 23 105 2 28 74 2 34 46 2 38 23 5 42 1 141 2 22 109 2 27 79 2 32 52 2 37 31 3 41 2 150 2 20 120 2 25 92 2 30 69 2 34 53 2 37 3 164 2 18 137 2 23 113 2 27 93 2 30 79 2 33 4 181 2 15 158 2 19 138 2 23 121 2 25 109 2 27 5 200 2 11 181 2 16 163 2 18 149 2 20 140 2 22 6 218 2 8 203 2 11 189 2 13 178 2 15 172 2 17 7 235 2 5 224 2 7 213 2 10 205 2 11 200 2 12 8 247 2 3 240 2 4 234 2 6 228 2 7 223 2 7 9 250 8 2 250 2 2 247 2 2 244 2 3 242 2 4 10 250 26 2 250 17 2 250 11 2 250 8 2 250 5 2 11 249 47 2 250 38 2 250 31 2 250 26 2 250 23 2 12 240 73 2 244 63 2 246 54 2 248 50 2 249 46 2 13 227 101 2 232 90 2 235 83 2 238 77 2 239 74 2 14 213 131 2 218 121 2 221 113 2 224 108 2 226 105 2 15 197 160 4 202 151 3 206 145 2 209 140 2 211 136 2 16 183 189 5 187 181 5 191 175 4 192 171 4 194 167 4 17 168 215 6 172 208 5 175 203 5 177 199 4 178 197 5 18 157 237 6 160 231 6 162 227 7 163 224 6 165 222 6 19 150 252 7 151 249 7 152 246 7 154 244 7 154 243 6


(50)

Proses penyisipan dilakukan dengan cara mengambil satu demi satu karakter cipherteks. Kemudian dari setiap karakter cipherteks tersebut diambil satu bit demi satu bit kemudian ditukarkan dengan bit yang paling kecil dari setiap komponen warna cover-image mengikuti aturan penyisipan yang ditentukan.

Berikut adalah penjabaran proses penyisipan modified LSB Penyisipan pada pixel ke-1

cipherteks = 218 (11011010) - R = 137 (10001001)

R tidak lebih kecil dari 100 maka tidak dilakukan penyisipan.

- G = 2 (00000010)

G lebih kecil dari 122 maka ambil bit terakhir cipherteks (0) kemudian sisipkan ke dalam komponen warna G.

G = 2 (00000010) cipherteks = 109 (1101101 )

- B = 23 (00010101)

B lebih kecil dari 114 maka ambil bit terakhir cipherteks (1) kemudian sisipkan ke dalam komponen warna B.

B = 23 (00010101) cipherteks = 54 (110110 ) Maka nilai pixel ke-1 menjadi 137, 2, 23. Penyisipan pada pixel ke-2

cipherteks = 54 (110110) - R = 105 (01101001)

R tidak lebih kecil dari 100 maka tidak dilakukan penyisipan.

- G = 2 (00000010)

G lebih kecil dari 122 maka ambil bit terakhir cipherteks (0) kemudian sisipkan ke dalam komponen warna G.

G = 2 (00000010) cipherteks = 27 (11011 )

- B = 28 ( 00011100)

B lebih kecil dari 114 maka ambil bit terakhir cipherteks (1) kemudian sisipkan ke dalam komponen warna G.

B = 29 (00011101) cipherteks = 13 (1011 )

Maka nilai dari pixel ke-2 menjadi 105, 2, 29.


(51)

Maka didapatlah stego-image yang telah disisipkan cipherteks dengan nilai representasi biner seperti yang ditunjukkan pada tabel 4.13.

Tabel 4.13. Representasi Biner Stego-Image Setelah Penyisipan

i

j R G B R G B R G B R G B R G B

0 137 2 23 105 2 29 75 2 35 47 3 38 22 5 42 1 141 2 22 109 3 26 78 2 32 53 3 37 31 2 41 2 150 2 20 120 3 24 92 2 30 69 3 34 52 3 37 3 164 2 19 137 3 22 113 2 27 92 2 31 79 2 33 4 181 3 14 158 3 18 138 3 23 121 2 25 109 2 26 5 200 2 10 181 2 17 163 3 19 149 2 20 140 3 23 6 218 2 9 203 2 10 189 3 13 178 3 15 172 2 17 7 235 2 5 224 3 7 213 3 11 205 3 10 200 3 13 8 247 3 3 240 2 4 234 2 7 228 3 6 223 3 6 9 250 9 3 250 2 2 247 3 3 244 2 3 242 3 5 10 250 27 2 250 17 2 250 11 2 250 8 3 250 4 2 11 249 47 2 250 38 2 250 31 2 250 26 2 250 23 2 12 240 73 2 244 63 2 246 54 2 248 50 2 249 46 2 13 227 101 2 232 90 2 235 83 2 238 77 2 239 74 2 14 213 131 2 218 121 2 221 113 2 224 108 2 226 105 2 15 197 160 4 202 151 3 206 145 2 209 140 2 211 136 2 16 183 189 5 187 181 5 191 175 4 192 171 4 194 167 4 17 168 215 6 172 208 5 175 203 5 177 199 4 178 197 5 18 157 237 6 160 231 6 162 227 7 163 224 6 165 222 6 19 150 252 7 151 249 7 152 246 7 154 244 7 154 243 6

0 1 2 3 4

Berdasarkan representasi warna pada tabel 4.13, stego-image dapat pula dinyatakan dalam bentuk citra digital seperti pada gambar 4.16.


(52)

4.2.6.Pengujian proses ekstraksi modified LSB

Misalkan kita ingin mengekstrak sebuah stego-image,

stego-image =

Sama seperti proses penyisipan hal pertama yang dilakukan adalah mengambil nilai representasi biner dari stego-image, ditunjukkan pada tabel 4.14.

Tabel 4.14. Representasi Biner Stego-Image

i

j R G B R G B R G B R G B R G B

0 137 2 23 105 2 29 75 2 35 47 3 38 22 5 42

1 141 2 22 109 3 26 78 2 32 53 3 37 31 2 41

2 150 2 20 120 3 24 92 2 30 69 3 34 52 3 37

3 164 2 19 137 3 22 113 2 27 92 2 31 79 2 33

4 181 3 14 158 3 18 138 3 23 121 2 25 109 2 26

5 200 2 10 181 2 17 163 3 19 149 2 20 140 3 23

6 218 2 9 203 2 10 189 3 13 178 3 15 172 2 17

7 235 2 5 224 3 7 213 3 11 205 3 10 200 3 13

8 247 3 3 240 2 4 234 2 7 228 3 6 223 3 6

9 250 9 3 250 2 2 247 3 3 244 2 3 242 3 5

10 250 27 2 250 17 2 250 11 2 250 8 3 250 4 2

11 249 47 2 250 38 2 250 31 2 250 26 2 250 23 2

12 240 73 2 244 63 2 246 54 2 248 50 2 249 46 2

13 227 101 2 232 90 2 235 83 2 238 77 2 239 74 2

14 213 131 2 218 121 2 221 113 2 224 108 2 226 105 2 15 197 160 4 202 151 3 206 145 2 209 140 2 211 136 2 16 183 189 5 187 181 5 191 175 4 192 171 4 194 167 4 17 168 215 6 172 208 5 175 203 5 177 199 4 178 197 5 18 157 237 6 160 231 6 162 227 7 163 224 6 165 222 6 19 150 252 7 151 249 7 152 246 7 154 244 7 154 243 6

0 1 2 3 4

Proses ekstraksi dilakukan dengan mengambil pixel demi pixel dari stego-image kemudian memeriksa nilai dari tiap komponen warna dari pixel tersebut. Jika memenuhi aturan ekstraksi maka diambil bit paling kecil dari warna tersebut lalu ditambahkan ke dalam variabel penampung temp. Setiap kali variabel temp telah menampung 8 bit data, maka bit-bit data dalam variabel temp dibalik urutannya dari awal ke akhir sehingga didapatkan hasil ekstraksi.


(53)

Berikut adalah penjabaran proses penyisipan modified LSB, Ekstraksi pada pixel ke-1

temp = -

- R = 137 (10001001)

R tidak lebih kecil dari 100 maka tidak dilakukan ekstraksi.

- G = 2 (00000010)

G lebih kecil dari 122 maka bit terakhir dari G yaitu 0 ditambahkan ke dalam variabel temp.

temp = 0

- B = 23 (00010101)

B lebih kecil dari 114 maka bit terakhir dari B yaitu 1 ditambahkan ke dalam variabel temp.

temp = 01  Ekstraksi pada pixel ke-2

temp = 01

- R = 105 (01101001)

R tidak lebih kecil dari 100 maka tidak dilakukan ekstraksi.

- G = 2 (00000010)

G lebih kecil dari 122 maka bit terakhir dari G yaitu 0 ditambahkan ke dalam variabel temp.

temp = 010

- B = 29 (00011101)

B lebih kecil dari 114 maka bit terakhir dari B yaitu 1 ditambahkan ke dalam variabel temp.

temp = 0101  Ekstraksi pada pixel ke-3

temp = 0101

- R = 75 (01001011)

R lebih kecil dari 100 maka bit terakhir dari R yaitu 1 ditambahkan ke dalam variabel temp.

temp = 01011

- G = 2 (00000010)

G lebih kecil dari 122 maka bit terakhir dari G yaitu 0 ditambahkan ke dalam variabel temp.

temp = 010110

- B = 35 (00100011)

B lebih kecil dari 114 maka bit terakhir dari B yaitu 1 ditambahkan ke dalam variabel temp.


(54)

Ekstraksi pada pixel ke-4 temp = 0101101

- R = 47 (00101111)

R lebih kecil dari 100 maka bit terakhir dari R yaitu 1 ditambahkan ke dalam variabel temp.

temp = 01011011

cipherteks = balikBit(temp) = 11011010

= 218

- G = 3 (00000011)

G lebih kecil dari 122 maka bit terakhir dari G yaitu 1 ditambahkan ke dalam variabel temp.

temp = 1

- B = 38 (00100110)

B lebih kecil dari 114 maka bit terakhir dari B yaitu 0 ditambahkan ke dalam variabel temp.

temp = 10  dan seterusnya.

Maka didapatlah cipherteks sebagai berikut,

cipherteks = 218 137 240 18 102 147 173 5 103 121 253 30 107 246 74

Terlihat bahwa proses ekstraksi modified LSB menghasilkan cipherteks yang sama seperti cipherteks sebelum dilakukan penyisipan.


(1)

DAFTAR ISI

Halaman

Persetujuan ii

Pernyataan iii

Penghargaan iv

Abstrak vi

Abstract vii

Daftar Isi viii

Daftar Tabel x

Daftar Gambar xi

Daftar Lampiran xiii

Bab 1 Pendahuluan

1.1. Latar Belakang 1

1.2. Rumusan Masalah 2

1.3. Batasan Masalah 2

1.4. Tujuan Penelitian 2

1.5. Manfaat Penelitian 3

1.6. Metodologi Penelitian 3

1.7. Sistematikan Penulisan 4

Bab 2 Landasan Teori

2.1. Kriptografi 5

2.2. Tujuan Kriptografi 6

2.3. Jenis Algoritma Kriptografi 7

2.3.1. Kriptografi kunci simetri 7

2.3.2. Kriptografi kunci asimetri 9

2.4. RC4 10

2.4.1. Algoritma RC4 10

2.4.2. Contoh enkripsi RC4 11

2.5. Citra Digital 14

2.5.1. Jenis-jenis citra digital 15

2.5.2. Format file citra digital 16

2.6. Steganografi 16

2.6.1. Kriteria steganografi yang baik 17

2.6.2. Teknik steganografi 18

2.6.3. Metode LSB 18


(2)

Bab 3 Analisis dan Perancangan

3.1. Analisis Sistem 20

3.1.1. Analisis masalah 20

3.1.2. Analisis kebutuhan 21

3.2. Perancangan Sistem 22

3.2.1. Perancangan algoritma RC4 22

3.2.2. Perancangan enkripsi RC4 23

3.2.3. Perancangan dekripsi RC4 23

3.2.4. Perancangan penyisipan modified LSB 24 3.2.5. Perancangan ekstraksi modified LSB 26

3.2.6. Use-case diagram 27

3.2.7. Activity diagram 29

3.2.8. Sequence diagram 31

3.2.9. Perancangan antar muka (inteface) 32 Bab 4 Implementasi dan Pengujian

4.1. Implementasi 36

4.1.1. Implementasi antarmuka (Interface) 36

4.1.2. Implementasi algoritma RC4 38

4.1.3. Implementasi metode modified LSB 38

4.2. Pengujian 40

4.2.1. Pengujian penyembunyian pesan 40

4.2.2. Pengujian pengungkapan pesan 45

4.2.3. Pengujian proses enkripsi RC4 48

4.2.4. Pengujian proses dekripsi RC4 54

4.2.5. Pengujian proses penyisipan modified LSB 55 4.2.6. Pengujian proses ekstraksi modified LSB 58 Bab 5 Kesimpulan dan Saran

5.1. Kesimpulan 61

5.2. Saran 61


(3)

DAFTAR TABEL

Halaman

Tabel 2.1. Contoh Tabel Pemetaan Karakter 7

Tabel 2.2. Contoh Tabel Permutasi Karakter 8

Tabel 2.3. ASCII untuk Karakter yang Digunakan 14

Tabel 2.4. Proses XOR Plainteks dengan Kunci 14

Tabel 2.5. Proses XOR Cipherteks dengan Kunci 14

Tabel 3.1. Use-case Narrative Sembunyikan Pesan 27

Tabel 3.2. Use-case Narrative Enkripsi Pesan 28

Tabel 3.3. Use-case Narrative Embed Cipherteks 28

Tabel 3.4. Use-case Narrative Tampilkan Pesan 28

Tabel 3.5. Use-case narrative Ekstraksi Pesan 39 Tabel 3.6. Use-case narrative Dekripsi Cipherteks 39

Tabel 4.1. Pengujian Penyisipan Pesan 43

Tabel 4.3. Pengujian Pengungkapan Pesan 47

Tabel 4.4. Nilai Awal Vector S 49

Tabel 4.5. Nilai Awal Vector T 49

Tabel 4.6. Hasil Permutasi Iterasi Pertama Vector S 50 Tabel 4.7. Hasil Permutasi Iterasi Kedua Vector S 50 Tabel 4.8. Hasil Permutasi Iterasi Ke-55 Vector S 51

Tabel 4.9. Hasil Akhir Inisiasi Vector S 52

Tabel 4.10. Aliran Kunci Enkripsi 53

Tabel 4.11. Proses XOR Pesan dengan Kunci 54

Tabel 4.12. Representasi Biner Cover-Image Sebelum Penyisipan 55 Tabel 4.13. Representasi Biner Stego-Image Setelah Penyisipan 57


(4)

DAFTAR GAMBAR

Halaman

Gambar 2.1. Skema Enkripsi dan Dekripsi 6

Gambar 2.2. Skema Kriptografi Kunci Simetri 7

Gambar 2.3. Skema Kriptografi Kunci Asimetri 9

Gambar 2.4. Contoh Citra Biner 15

Gambar 2.5. Contoh Citra Grayscale 15

Gambar 2.6. Contoh Citra Warna 16

Gambar 2.7. Skema Penyisipan dan Ekstraksi Steganografi 17

Gambar 3.1. Diagram Ishikawa 20

Gambar 3.2. Flowchart (A) Inisiasi Vector A dan (B) Pembangkitan Aliran 22 Kunci

Gambar 3.3. Flowchart Enkripsi 23

Gambar 3.4. Flowchart Dekripsi 24

Gambar 3.5. Flowchart Penyisipan 25

Gambar 3.6. Flowchart Ekstrak 26

Gambar 3.7. Use-case Diagram Sistem 27

Gambar 3.8. Diagram Activity Sembunykan Pesan 30

Gambar 3.9. Activity Diagram Proses Menampilkan Informasi 30 Gambar 3.10. Sequence Diagram Proses Sembunyikan Pesan 31 Gambar 3.11. Sequence Diagram Proses Tampilkan Pesan 31 Gambar 3.12. Perancangan Antarmuka Halaman Utama 32 Gambar 3.13. Perancangan Antarmuka Halaman Sembunyikan Pesan 33 Gambar 3.14. Perancangan Antarmuka Halaman Tampilkan Pesan 34 Gambar 3.15. Perancangan Antarmuka Petunjuk Penggunaan Perangkat Lunak 35 Gambar 3.16. Perancangan Antarmuka Tentang Perangkat Lunak 35

Gambar 4.1. Antarmuka Halaman Utama 36

Gambar 4.2. Antarmuka Halaman Sembunyikan Pesan 37

Gambar 4.3. Antarmuka Halaman Tampilkan Pesan 37

Gambar 4.4. Implementasi Inisiasi Vector S 38

Gambar 4.5. Implementasi Pembangkitan Aliran Kunci 38

Gambar 4.6. Implementasi Penyisipan Pesan 39

Gambar 4.7. Implementasi Ekstraksi Stego-image 39

Gambar 4.8. Penginputan Teks dan Stego-image 40

Gambar 4.9. Kotak Pesan Peringatan Pesan Tidak Dapat Disisip 41 Gambar 4.10. Hasil Enkripsi dan Penyisipan Sistem 41


(5)

Gambar 4.11. Pengaturan Tampilan Kotak Cipherteks 42 Gambar 4.12. Kotak Pesan Pemberitahuan Penyimpanan Stego-Image 43 Gambar 4.13. Penginputan Stego-Image ke dalam Sistem 45 Gambar 4.14. Tampilan Hasi Ekstraksi Stego-Image dan Dekripsi Cipherteks 46 Gambar 4.15. Kotak Pesan Pemberitahuan Penyimpanan Pesan 46


(6)

DAFTAR LAMPIRAN

Halaman

Lampiran 1 Listing Program 63

Lampiran 2 Tabel Pengkodean ASCII 70

Lampiran 3 Dokumen Pengujian 71