Implementasi Algoritma Kriptografi RC5 dan Metode Steganografi Least Significant Bit (LSB) Dalam Pengamanan File Teks

(1)

LISTING PROGRAM

1. Form1.vb

Imports System.Runtime.InteropServices Imports Microsoft.Office.Interop.Word Imports System.Text Imports System.IO Imports System Imports System.Xml Imports Microsoft.Office.Interop Imports System.Numerics

Public Class Form1

Dim w As Integer = 32 'block size dalam bit

Dim Pw As BigInteger = hextodec("B7E15163"), Qw As BigInteger = hextodec("9E3779B9") 'nilai magic untuk block size 32 bit

Dim round As Integer = 12 'jumlah round

Dim b_kecil As Integer = 16 'panjang password dalam byte/16 karakter Dim u As Integer = w / 8

Dim c As Integer = b_kecil / u Dim t As Integer = 2 * round + 2

Dim S As BigInteger() = New BigInteger(t) {} Dim L As BigInteger() = New BigInteger(c) {} Function bit_to_string(ByVal a As String) As String Dim total As Integer = 0

Dim sb, sb1 As New StringBuilder Dim temp As String = ""

For i As Integer = 1 To Len(a) sb.Append(Mid(a, i, 1))

If (Len(sb.ToString) = 8) Then

temp += Chr(Bin_To_Dec(sb.ToString)) sb.Clear()

End If Next Return temp End Function

Function string_to_bit(ByVal input As String) As String Dim Result As String = ""

For Each C As Char In input

Dim s As String = System.Convert.ToString(AscW(C), 2).PadLeft(8, "0")

Result &= s Next

Return Result End Function

Function desimal2biner(ByVal input As Long, ByVal bit As Integer) As String Dim biner_1 As String = ""

Dim tempbits As Long = Math.Pow(2, bit - 1) Dim inputcopy As Long = input

For i As Integer = 0 To bit - 1 If (inputcopy >= tempbits) Then inputcopy -= tempbits biner_1 = biner_1 + "1" Else

biner_1 = biner_1 + "0" End If

If (tempbits > 1) Then tempbits = tempbits / 2 End If

Next

Return biner_1 End Function

Function biner2desimal(ByVal input As String, ByVal bit As Integer) As Integer

Return Convert.ToInt16(input, 2) End Function


(2)

Function rotasikiri(ByVal input As Long, ByVal count As Integer, ByVal bit As Integer) As Long

Dim biner As String = desimal2biner(input, bit)

Dim binerrotasikiri As String = biner.Substring(count, biner.Length - count) + biner.Substring(0, count)

Return Convert.ToUInt64(binerrotasikiri, 2) End Function

Function rotasikanan(ByVal input As Long, ByVal count As Integer, ByVal bit As Integer) As Long

Dim biner As String = desimal2biner(input, bit)

Dim binerrotasikanan As String = biner.Substring(biner.Length - count, count) + biner.Substring(0, biner.Length - count)

Return Convert.ToUInt64(binerrotasikanan, 2) End Function

Function dectohex(ByVal dec As Long) As String Dim sHexValue As String = Hex$(dec) If (sHexValue.Length < 8) Then

For i As Integer = 1 To 8 - sHexValue.Length sHexValue = "0" + sHexValue

Next End If

Return sHexValue End Function

Function hextodec(ByVal hex As String) As BigInteger Return Convert.ToInt64(hex, 16)

End Function

Function hextostring(ByVal hex As String) As String Dim sb As New StringBuilder

For x = 0 To hex.Length - 1 Step 2 Dim k As String = hex.Substring(x, 2)

sb.Append(System.Convert.ToChar(System.Convert.ToUInt32(k, 16))) Next

Return sb.ToString End Function

Function stringtohex(ByVal input As String) As String Dim a As String = input

Dim temp As String = "" Dim temp2 As String = "" Dim sb As New StringBuilder Dim hex_string As String = "" For x As Integer = 1 To Len(a) temp = Mid(a, x, 1)

temp2 = System.Convert.ToString(Asc(temp), 2) 'mengkonversi string langsung ke bitnya

hex_string = Hex(Convert.ToInt32(temp2, 2)) If (hex_string.Length < 2) Then

hex_string = "0" + hex_string End If

sb.Append(hex_string) Next

Return sb.ToString End Function

Function Bin_To_Dec(ByVal Bin As String) As String 'function to convert a binary number to decimal

Dim dec As Double = Nothing Dim length As Integer = Len(Bin) Dim temp As Integer = Nothing Dim x As Integer = Nothing For x = 1 To length

temp = Val(Mid(Bin, length, 1)) length = length - 1

If temp <> "0" Then dec += (2 ^ (x - 1)) End If

Next Return dec End Function

Function index2x(ByVal index As BigInteger, ByVal width As BigInteger) 'mencari pixel x

Return index Mod width End Function


(3)

Function index2y(ByVal index As BigInteger, ByVal width As BigInteger) 'mencari pixel y

Return (index - (index Mod width)) / width End Function

Function dec_to_bin(ByVal dec As Integer) As String ' function to convert decimal to binary

Dim temp As String = Convert.ToString(dec, 2)

If (Len(temp) < 8) Then ' jika pjng bitnya kurang dari 8

While (Len(temp) < 8) ' selama pnjg bit kurang dr 8 tambahkan 0 ex: 1010 -> 00001010

temp = "0" + temp End While

End If Return temp End Function

'tab encrypt and embed

'==================================================

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

OpenFileDialog1.Filter = "Text Files (*.txt,*.docx,*.doc,*.rtf)|*.txt;*.docx;*.doc;*.rtf"

If OpenFileDialog1.ShowDialog() = DialogResult.OK Then

If Not String.IsNullOrEmpty(OpenFileDialog1.FileName) Then Dim pathfile, ext, filename As String

pathfile =

System.IO.Path.GetDirectoryName(OpenFileDialog1.FileName)

filename = System.IO.Path.GetFileName(OpenFileDialog1.FileName) ext = System.IO.Path.GetExtension(OpenFileDialog1.FileName) If (ext = ".docx" Or ext = ".doc" Or ext = ".rtf") Then Dim wdApp As New Word.Application

Dim wdDoc As New Word.Document

wdDoc = wdApp.Documents.Open(OpenFileDialog1.FileName) Dim myText As String = wdDoc.Range.Text

RichTextBox1.Text = myText

Label13.Text = RichTextBox1.Text.Length wdApp.Quit()

Else

RichTextBox1.Text =

System.IO.File.ReadAllText(OpenFileDialog1.FileName) End If

End If End If End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

OpenFileDialog1.Filter = "Image Files (*.jpeg,*.bmp,*.png,*.jpg)|*.jpeg;*.bmp;*.png;*.jpg"

OpenFileDialog1.FilterIndex = 1 Dim filepath, filename As String

filepath = System.IO.Path.GetDirectoryName(OpenFileDialog1.FileName) filename = System.IO.Path.GetFileName(OpenFileDialog1.FileName) If OpenFileDialog1.ShowDialog() = DialogResult.OK Then

If Not String.IsNullOrEmpty(OpenFileDialog1.FileName) Then PictureBox1.Image = Image.FromFile(OpenFileDialog1.FileName) Dim data As Bitmap = New Bitmap(PictureBox1.Image)

panjang_gambar.Text = data.Width tinggi_gambar.Text = data.Height Else

End If End If End Sub

Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click


(4)

If PictureBox1.Image IsNot Nothing Then

SaveFileDialog1.Filter = "Image Files (*.jpeg)|*.jpeg"

If SaveFileDialog1.ShowDialog =

System.Windows.Forms.DialogResult.OK Then

PictureBox1.Image.Save(SaveFileDialog1.FileName) End If

End If

' save the image to the desktop End Sub

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click

If String.IsNullOrEmpty(password.Text) Then MsgBox("Password Harus Diisi!")

ElseIf PictureBox1.Image Is Nothing Or RichTextBox1.Text = "" Then MsgBox("teks atau gambar belum ada")

Else Try

' RC5 32/12/16

Dim plaintext As String = stringtohex(RichTextBox1.Text) Dim pass As String = stringtohex(password.Text)

Dim x As Integer

Dim watch As Stopwatch = Stopwatch.StartNew() 'Padding Time

'================================================== 'Padding password

If (pass.Length Mod 32 <> 0) Then Dim sisa = 32 - pass.Length For x = 0 To sisa - 1 pass = pass + "0" Next

End If

'================================================== 'Padding plaintext

'================================================== If (plaintext.Length < 16) Then

Dim sisa = 16 - plaintext.Length For x = 0 To sisa - 1

plaintext = plaintext + "0" Next

Else

If (plaintext.Length Mod 8 <> 0) Then Dim sisa = 8 - plaintext.Length Mod 8 For x = 0 To sisa - 1

plaintext = plaintext + "0" Next

End If End If

'Pembuatan Array S

'================================================== S(0) = Pw

Dim i As Integer For i = 1 To t - 1

S(i) = (S(i - 1) + Qw) And 4294967295 Next

'================================================== 'Pembuatan array L

'================================================== Dim j As Integer

For i = 0 To 3 Step 1

Dim backward As String = "" For j = 0 To 3 Step 1

backward &= pass.Substring((i * 8) + (6 - (j * 2)), 2) Next

L(i) = hextodec(backward) Next


(5)

'================================================== j = 0

i = 0

Dim A As BigInteger = 0 Dim B As BigInteger = 0

For y As Integer = 1 To 3 * Math.Max(t, c)

S(i) = rotasikiri((S(i) + A + B) And 4294967295, 3, 32) A = S(i)

L(j) = rotasikiri((L(j) + A + B) And 4294967295, (A + B) Mod 32, 32)

B = L(j)

i = (i + 1) Mod t j = (j + 1) Mod c Next

'================================================== 'ENCRYPTION

'================================================== Dim ciphertext As String = ""

A = (hextodec(plaintext.Substring(0, 8)) + S(0)) And 4294967295 B = (hextodec(plaintext.Substring(8, 8)) + S(1)) And 4294967295 For i = 1 To round

A = (rotasikiri((A Xor B), B Mod 32, 32) + S(2 * i)) And 4294967295

B = (rotasikiri((B Xor A), A Mod 32, 32) + S(2 * i + 1)) And 4294967295

Next

ciphertext += dectohex(A) 'jika lebih dari 32 bit If plaintext.Length > 16 Then

For y As Integer = 1 To (plaintext.Length / 8 - 2) A = (B + S(0)) And 4294967295

B = (hextodec(plaintext.Substring(16 + (8 * (y - 1)), 8)) + S(1)) And 4294967295

For i = 1 To round

A = (rotasikiri((A Xor B), B Mod 32, 32) + S(2 * i)) And 4294967295

B = (rotasikiri((B Xor A), A Mod 32, 32) + S(2 * i + 1)) And 4294967295

Next

ciphertext += dectohex(A) Next

End If

ciphertext += dectohex(B)

'================================================== ' Embedding Time

'================================================== Dim plainbit As String = string_to_bit(ciphertext) Dim img As Bitmap = New Bitmap(PictureBox1.Image) Dim Color As Color

Dim panjang, lebar, pixelx, pixely As BigInteger Dim temp As String = ""

panjang = Val(panjang_gambar.Text) lebar = Val(tinggi_gambar.Text) Dim listAwal As New ArrayList Dim listRandom As New ArrayList

For i = 0 To plainbit.Length - 1 '(panjang * (lebar - 1)) - 1 ' merandom sebanyak pixel kemudian dimasukkan ke array

listAwal.Add(i) Next

Dim z1 As BigInteger = 1

Dim m1 As BigInteger = Math.Pow(2, 32) Dim a1 As BigInteger = 1664525

Dim c1 As BigInteger = 1013904223

For i = 0 To ((plainbit.Length - (plainbit.Length Mod 3) + 3) / 3) - 1 'Ini sudah N layer(plainbit.length) -> M pixel

z1 = (a1 * z1 + c1) Mod m1

Dim indexnow As Integer = Math.Floor((Double.Parse(z1.ToString()) / Double.Parse(m1.ToString())) * listAwal.Count)

listRandom.Add(listAwal(indexnow)) listAwal.RemoveAt(indexnow)


(6)

Next

Dim RGB(3) As Byte

For i = 0 To ((plainbit.Length - (plainbit.Length Mod 3) + (Math.Min(1, (plainbit.Length Mod 3)) * 3)) / 3) - 1

pixelx =

index2x(BigInteger.Parse(listRandom(i).ToString()), panjang)

pixely =

index2y(BigInteger.Parse(listRandom(i).ToString()), panjang) Color = img.GetPixel(pixelx, pixely) Dim LayerValue As Byte

Dim posisi_layer As Byte = 0 RGB(0) = Color.R

RGB(1) = Color.G RGB(2) = Color.B

While posisi_layer + i * 3 < plainbit.Length And posisi_layer < 3

temp = Integer.Parse(plainbit.Substring(i * 3 + posisi_layer, 1))

If (posisi_layer = 0) Then 'R LayerValue = Color.R

ElseIf (posisi_layer = 1) Then 'G LayerValue = Color.G

ElseIf (posisi_layer = 2) Then 'B LayerValue = Color.B

End If 'LSB

If (LayerValue Mod 2 = 1) Then '1

If (temp = 1) Then '1

Else '0

LayerValue = LayerValue - 1 End If

Else '0

If (temp = 1) Then '1

LayerValue = LayerValue + 1 Else

'0 End If End If

RGB(posisi_layer) = LayerValue posisi_layer = posisi_layer + 1 End While

img.SetPixel(pixelx, pixely, Color.FromArgb(RGB(0), RGB(1), RGB(2)))

Next

'Memasukkan Panjang ciphertext ke dalam pixel-pixel di layer B '==================================================

x = 0

Dim penanda As String = dec_to_bin(ciphertext.Length) + "0" Do

penanda = penanda + "1" x += 1

Loop Until x = Len(dec_to_bin(ciphertext.Length)) For i = 1 To Len(penanda)

Color = img.GetPixel(panjang - i, lebar - 1) Dim pixbit4 As String = dec_to_bin(Val(Color.B))

Dim change4 As String = pixbit4.Substring(0, pixbit4.Length - 1) & penanda.Substring(penanda.Length - i, 1)

img.SetPixel(panjang - i, lebar - 1, Color.FromArgb(Color.R, Color.G, Bin_To_Dec(change4)))

Next

PictureBox1.Image = img Button4.Visible = True


(7)

Label9.Text = watch.Elapsed.TotalMilliseconds MsgBox("Proses Selesai")

Catch ex As Exception

MsgBox("Cover Image Kurang Besar") End Try

End If End Sub

Private Sub Button8_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button8.Click

If RichTextBox3.Text = RichTextBox5.Text Then MsgBox("sama")

Else

Dim s1 As String Dim s2 As String Dim s3 As String s1 = RichTextBox3.Text s2 = RichTextBox5.Text s3 = ""

For i As Integer = 0 To s1.Length - 1

If (s1.Substring(i, 1) <> s2.Substring(i, 1)) Then

s3 = s3 & s1.Substring(i, 1) & " " & string_to_bit(s1.Substring(i, 1)) & "->" & s2.Substring(i, 1) & " " & string_to_bit(s2.Substring(i, 1)) & vbNewLine

End If Next

RichTextBox5.Text = "" RichTextBox5.Text = s3 End If

End Sub

'================================================== 'tab extract and decrypt

'==================================================

Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click

OpenFileDialog1.Filter = "Image Files (*.jpeg,*.bmp,*.png,*.jpg)|*.jpeg;*.bmp;*.png;*.jpg"

OpenFileDialog1.FilterIndex = 1 Dim filepath, filename As String

filepath = System.IO.Path.GetDirectoryName(OpenFileDialog1.FileName) filename = System.IO.Path.GetFileName(OpenFileDialog1.FileName) If OpenFileDialog1.ShowDialog() = DialogResult.OK Then

If Not String.IsNullOrEmpty(OpenFileDialog1.FileName) Then PictureBox2.Image = Image.FromFile(OpenFileDialog1.FileName) Dim data As Bitmap = New Bitmap(PictureBox2.Image)

Else End If End If End Sub

Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click

If RichTextBox1.Text IsNot Nothing Then SaveFileDialog1.DefaultExt = "*.txt"

SaveFileDialog1.Filter = "Text Files (*.txt)|*.txt"

If SaveFileDialog1.ShowDialog() =

System.Windows.Forms.DialogResult.OK And (SaveFileDialog1.FileName.Length) > 0 Then RichTextBox2.SaveFile(SaveFileDialog1.FileName, RichTextBoxStreamType.UnicodePlainText) End If End If End Sub

Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button7.Click

Dim ciphertext As String = ""

If String.IsNullOrEmpty(password2.Text) Then MsgBox("Password Belum Diisi")

ElseIf PictureBox2.Image Is Nothing Then MsgBox("stego image belum ada") Else


(8)

'================================================== Dim img As Bitmap = New Bitmap(PictureBox2.Image) Dim pixbit5 As String

Dim batas As Integer Dim penanda As String = "" Dim Color As Color

Dim panjang, lebar As BigInteger panjang = img.Width

lebar = img.Height

Dim watch As Stopwatch = Stopwatch.StartNew()

'Pengambilan Panjang ciphertext dari pixel2 di layer B '================================================== Dim r = 0

Do

r += 1

Color = img.GetPixel(panjang - r, lebar - 1) pixbit5 = dec_to_bin(Val(Color.B))

Loop While pixbit5.Substring(pixbit5.Length - 1, 1) <> 0 Dim y = 0

batas = r Do

r += 1

Color = img.GetPixel(panjang - r, lebar - 1) pixbit5 = dec_to_bin(Val(Color.B))

penanda = pixbit5.Substring(pixbit5.Length - 1, 1) + penanda y += 1

Loop Until y = batas - 1

'================================================== Dim len_in_bit As Integer = Val(Bin_To_Dec(penanda)) * 8 Dim pixelx, pixely As BigInteger

Dim i As Integer

Dim listAwal As New ArrayList Dim listRandom As New ArrayList

For i = 0 To len_in_bit - 1 ' merandom sebanyak pixel kemudian dimasukkan ke array

listAwal.Add(i) Next

Dim z1 As BigInteger = 1

Dim m1 As BigInteger = Math.Pow(2, 32) Dim a1 As BigInteger = 1664525

Dim c1 As BigInteger = 1013904223

For i = 0 To ((len_in_bit - (len_in_bit Mod 3) + 3) / 3) - 1 'Ini sudah N layer(plainbit.length) -> M pixel

z1 = (a1 * z1 + c1) Mod m1

Dim indexnow As Integer =

Math.Floor((Double.Parse(z1.ToString()) / Double.Parse(m1.ToString())) * listAwal.Count)

listRandom.Add(listAwal(indexnow)) listAwal.RemoveAt(indexnow) Next

Dim RGB(3) As Byte

Dim kumpulanBit As String = ""

For i = 0 To ((len_in_bit - (len_in_bit Mod 3) + 3) / 3) - 1

pixelx = index2x(BigInteger.Parse(listRandom(i).ToString()), panjang)

pixely = index2y(BigInteger.Parse(listRandom(i).ToString()), panjang)

Color = img.GetPixel(pixelx, pixely) Dim posisi_layer As Byte = 0

RGB(0) = Color.R RGB(1) = Color.G RGB(2) = Color.B


(9)

posisi_layer = posisi_layer + 1 End While

Next

ciphertext &= bit_to_string(kumpulanBit)

'================================================== 'Pembuatan Array S

'================================================== Dim pass As String = stringtohex(password2.Text) S(0) = Pw

For i = 1 To t - 1

S(i) = (S(i - 1) + Qw) And 4294967295 Next

'Padding Time

'================================================== 'Padding password

If (pass.Length Mod 32 <> 0) Then Dim sisa = 32 - pass.Length For x = 0 To sisa - 1 pass = pass + "0" Next

End If

'================================================== 'Pembuatan array L

'================================================== Dim j As Integer

For i = 0 To 3 Step 1

Dim backward As String = "" For j = 0 To 3 Step 1

backward &= pass.Substring((i * 8) + (6 - (j * 2)), 2) Next

L(i) = hextodec(backward) Next

' MsgBox("lewat")

'================================================== 'Pencampuran Array L dan S

'================================================== j = 0

i = 0

Dim A As BigInteger = 0 Dim B As BigInteger = 0

For y = 1 To 3 * Math.Max(t, c)

S(i) = rotasikiri((S(i) + A + B) And 4294967295, 3, 32) A = S(i)

L(j) = rotasikiri((L(j) + A + B) And 4294967295, (A + B) Mod 32, 32)

B = L(j)

i = (i + 1) Mod t j = (j + 1) Mod c Next

'================================================== 'Proses Dekripsi ciphertext menjadi plaintext '================================================== Dim plaintext As String = ""

B = hextodec(ciphertext.Substring(ciphertext.Length - 8, 8)) And 4294967295

A = hextodec(ciphertext.Substring(ciphertext.Length - 16, 8)) And 4294967295

For i = round To 1 Step -1

' RichTextBox1.Text &= dectohex((2 * i + 1)) & vbNewLine

B = (rotasikanan((B - S(2 * i + 1) And 4294967295), A Mod 32, 32) Xor A)

A = (rotasikanan((A - S(2 * i) And 4294967295), B Mod 32, 32) Xor B)

' RichTextBox1.Text &= "A : " & dectohex(A) & " B : " & dectohex(B) & vbNewLine

Next


(10)

A = (A - S(0)) And 4294967295 plaintext += dectohex(B) 'jika ciphertext > 16

If ciphertext.Length > 16 Then Dim z = 24

For y = 1 To (ciphertext.Length / 8 - 2) B = A

A = hextodec(ciphertext.Substring(ciphertext.Length - z, 8))

For i = round To 1 Step -1

B = (rotasikanan((B - S(2 * i + 1) And 4294967295), A Mod 32, 32) Xor A)

A = (rotasikanan((A - S(2 * i) And 4294967295), B Mod 32, 32) Xor B)

Next

B = B - S(1) And 4294967295 A = A - S(0) And 4294967295 z += 8

plaintext = dectohex(B) + plaintext Next

End If

plaintext = dectohex(A) + plaintext

RichTextBox2.Text &= hextostring(plaintext) Button5.Visible = True

watch.Stop()

Label20.Text = watch.Elapsed.TotalMilliseconds MsgBox("Proses Selesai") '================================================== End If End Sub '================================================== 'tab compare '==================================================

Private Sub Button9_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button9.Click

OpenFileDialog1.Filter = "Image Files (*.jpeg,*.bmp,*.png,*.jpg)|*.jpeg;*.bmp;*.png;*.jpg"

OpenFileDialog1.FilterIndex = 1 Dim filepath, filename As String

filepath = System.IO.Path.GetDirectoryName(OpenFileDialog1.FileName) filename = System.IO.Path.GetFileName(OpenFileDialog1.FileName) If OpenFileDialog1.ShowDialog() = DialogResult.OK Then

If Not String.IsNullOrEmpty(OpenFileDialog1.FileName) Then PictureBox4.Image = Image.FromFile(OpenFileDialog1.FileName) Dim data As Bitmap = New Bitmap(PictureBox4.Image)

width1.Text = "Width : " & data.Width height1.Text = "Height : " & data.Height Else

End If End If End Sub

Private Sub Button10_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button10.Click

OpenFileDialog1.Filter = "Image Files (*.jpeg,*.bmp,*.png,*.jpg)|*.jpeg;*.bmp;*.png;*.jpg"

OpenFileDialog1.FilterIndex = 1 Dim filepath, filename As String

filepath = System.IO.Path.GetDirectoryName(OpenFileDialog1.FileName) filename = System.IO.Path.GetFileName(OpenFileDialog1.FileName) If OpenFileDialog1.ShowDialog() = DialogResult.OK Then

If Not String.IsNullOrEmpty(OpenFileDialog1.FileName) Then PictureBox5.Image = Image.FromFile(OpenFileDialog1.FileName) Dim data As Bitmap = New Bitmap(PictureBox5.Image)

width2.Text = "Width : " & data.Width height2.Text = "Height : " & data.Height Else

End If End If


(11)

Private Sub Button11_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button11.Click

If PictureBox4.Image Is Nothing Or PictureBox5.Image Is Nothing Then MsgBox("Cover Image atau Stego Image Kosong")

Else

Dim nilaimse As Double = 0

Dim img As Bitmap = New Bitmap(PictureBox4.Image) Dim img2 As Bitmap = New Bitmap(PictureBox5.Image) Dim Color As Color

Dim color2 As Color

If img.Width = img2.Width And img.Height = img2.Height Then For i As Integer = 0 To img.Width - 1

For j As Integer = 0 To img.Height - 1 Color = img.GetPixel(i, j)

color2 = img2.GetPixel(i, j)

nilaimse += Math.Pow(Integer.Parse(Color.R) - Integer.Parse(color2.R), 2) _

+ Math.Pow(Integer.Parse(Color.G) - Integer.Parse(color2.G), 2) _

+ Math.Pow(Integer.Parse(Color.B) - Integer.Parse(color2.B), 2)

Next Next

nilaimse = nilaimse / (img.Width * img.Height * 3) mse.Text = nilaimse.ToString

Dim nilaipsnr As Double = 10 * Math.Log10(255 * 255 / nilaimse) psnr.Text = (nilaipsnr & " dB")

If nilaipsnr < 30 Then ' quality.Text = "Low" Else

' quality.Text = "High" End If

Else

MsgBox("Ukuran Kedua Gambar Tidak Sama") End If

End If End Sub

'==================================================

Private Sub RichTextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RichTextBox1.TextChanged

Label13.Text = RichTextBox1.Text.Length End Sub


(12)

CURRICULUM VITAE

DATA PRIBADI

PENDIDIKAN FORMAL

1999 – 2000 Taman Kanak-kanak Budi Utomo

2000 – 2006 SD Budi Utomo

2006 – 2009 SMP Budi Utomo

2009 – 2012 SMA Sutomo 1

2012 – sedang berlangsung Universitas Sumatera Utara

Program Studi : S-1 Ilmu Komputer

KEMAMPUAN

Programming Visual Basic, Javascript, HTML

Database MySQL

Bahasa Indonesia, Inggris, Mandarin

Nama Lengkap Boris Mario

Jenis Kelamin 121401066

Tempat, Tanggal Lahir Medan, 20 Desember 1994

Agama Buddha

Alamat Jl. Pukat VIII No.47 Medan

No.HP 087868883989

E-mail [email protected]

Alamat Orang Tua Jl. Pukat VIII No.47 Medan


(13)

Alatas, P. 2009. Implementasi Teknik Steganografi Dengan Metode LSB Pada CitraDigital. (Online) http://www.gunadarma.ac.id/library/articles/graduate/ computer-science/2009/Artikel_11104284.pdf (06 November 2015).

Cheddad, A, Condell. J, Curran. K, Kevitt. P.Mc, 2010. Digital Image Steganography : Survey and Analysis of Current Methods. Signal Processing 90(3):727-752.

Fairuzabadi, M & Rakhmat, B. 2010. Steganografi Menggunakan Metode Least Significant Bit Dengan Kombinasi Algoritma Kriptografi Vigenere dan RC4.

Jurnal Dinamika Informatika 5(2): 1-17.

Hastuti, K & Hidayat, E.Y. 2013. Analisis Steganografi Metode Least Significant Bit (LSB) dengan Penyisipan Sekuensial dan Acak Secara Kuantitatif dan Visual. Techno.COM 12(3): 157-167.

Handrizal & Zarlis, M. 2008 . Algortima & Pemrograman : Teori dan Praktik

dalam Pascal. Edisi Kedua. USU PRESS: Medan.

Hemachandran, K & Laskar , S.A. 2013. Steganography Based On Random Pixel Selection For Efficient Data Hiding. International Journal of Computer

Engineering and Technology (IJCET) 4(2): 31-44.

Kadir, A. & Susanto, A. 2013. Teori dan Aplikasi Pengolahan Citra. ANDI: Yogyakarta.

Kromodimoeljo, S. 2010. Teori dan Aplikasi Kriptografi. SPK IT Consulting: Jakarta.

Mahmudy, W.F & Setiana. 2006. Steganografi Pada File Citra Bitmap 24 Bit Untuk Pengamanan Data Menggunakan Metode Least Significant Bit (LSB) Insertion. Kursor 2(2): 38-44.

Mollin, R.A. 2007. An Introduction to Cryptography. 2nd Edition. Taylor & Francis Group, LLC : United State of America.


(14)

Rhee, M.Y. 2003. Internet Security: Cryptographic Principles, Algorithms and

Protocols. Wiley : New York.

Saputra, A & Tinaliah, R. 2009. Perbandingan Enkripsi dan Dekripsi Password Menggunakan Metode Serpent dan RC5 Pada Aplikasi Perpustakaan Universitas Muhammadiyah Palembang. (Online) http://eprints.mdp.ac.id/ 794/1/JURNAL%202009250506%20ARIANSYAH%20SAPUTRA.pdf (13 November 2015).

Sari, S.P.,Sudirman, D.Z. & Winarmo. 2012,. Implementasi Steganografi Menggunakan Metode Least Significant Bit dan Kriptografi Advanced Encryption Standard. ULTIMATICS 4(1): 25-32.

Whitten, J.L., Bentley, L.D. & Dittman, K.C. 2004. Metode Desain & Analisis


(15)

3.1 Analisis Sistem

Analisis sistem adalah sebuah teknik pemecahan masalah yang menguraikan sebuah sistem menjadi bagian-bagian komponen dengan tujuan mempelajari apakah komponen-komponen tersebut bekerja dan berinteraksi sesuai dengan tujuan mereka. Ada tiga fase analisis sistem yaitu : analisis masalah, analisis persyaratan dan analisis proses. Analisis masalah bertujuan untuk memahami kelayakan masalah. Analisis persyaratan dilakukan untuk menjelaskan fungsi-fungsi yang ditawarkan dan mampu dikerjakan sistem. Sedangkan analisis proses untuk memodelkan tingkah laku sistem.

3.1.1 Analisis Masalah

Permasalahan yang akan diselesaikan pada sistem ini adalah mengamankan file teks dari pihak-pihak yang tidak berkepentingan dengan cara mengenkripsi file teks terlebih dahulu kemudian disisipkan ke dalam suatu gambar. Pada penelitian ini, akan diimplementasikan pengamanan file teks dengan menggunakan algoritma kriptografi klasik RC5 dan metode steganografi Least Significant Bit (LSB).

Untuk mengidentifikasi masalah tersebut digunakan diagram Ishikawa (fishbone diagram). Diagram Ishikawa merupakan suatu alat visual untuk mengidentifikasi, mengeksplorasi, dan secara diagram menggambarkan semua penyebab yang berhubungan dengan suatu permasalahan. Diagram ini menunjukkan sebuah akibat dari permasalahan dengan berbagai penyebabnya (Whitten et al, 2004).


(16)

Gambar 3.1 Diagram Ishikawa Masalah Penelitian

Berdasarkan Gambar 3.1, ada dua hal yang paling utama, yaitu bagian permasalahan utama dan penyebabnya. Permasalahan yang dihadapi adalah untuk meningkatkan keamanan file teks dengan kriptografi dan steganografi , dan penyebab munculnya permasalahan adalah kecurigaan yang timbul terhadap ciphertext sebagai hasil dari enkripsi. Solusi yang ditawarkan adalah menyisipkan ciphertext kedalam gambar untuk menghilangkan kecurigaan tersebut.

3.1.2 Analisis Persyaratan

Analisis persyaratan terbagi atas dua bagian, yaitu persyaratan fungsional dan persyaratan non fungsional. Persyaratan fungsional mendeskripsikan aktivitas yang disediakan suatu sistem. Sedangkan kebutuhan nonfungsional mendeskripsikan fitur, karakteristik dan batasan lainnya (Whitten et al, 2004).

Manusia Metode

Material Sistem

Meningkatkan kemanan file teks dengan kriptografi dan steganografi

Pengirim dan penerima

File teks

(*.txt,*rtf, *docx, dan *doc)

Cover image

(*.bmp, *.jpeg,*. jpg dan *.png)

RC5 & LSB

Enkripsi & Sisip

Ciphertext

menimbulkan kecurigaan

Pihak ketiga

Data bersifat rahasia


(17)

3.1.2.1 Persyaratan Fungsional

Kebutuhan fungsional adalah menjelaskan proses-proses aktifitas yang dapat dilakukan oleh sistem dalam melakukan pelayanan yang dilakukan sistem dan kebutuhan yang harus dipenuhi oleh sistem, yaitu:

1. Fungsi Enkripsi dan Sisip

Pengguna dapat melakukan proses enkripsi file teks dari plaintext menjadi

ciphertext dengan memasukkan kunci enkripsi terlebih dahulu kemudian

menyisipkan ciphertext tersebut ke dalam cover image yang telah dipilih. 2. Fungsi Ekstrasi dan Dekripsi

Pengguna dapat melakukan proses ekstraksi stego image menjadi ciphertext dan proses dekripsi ciphertext ke plaintext dengan memasukkan stego image dan kunci dekripsi terlebih dahulu.

3.1.2.2 Persyaratan Non-fungsional

Persyaratan non-fungsional meliputi karakteristik berikut ini :

1. Performa

Sistem yang akan dibangun dapat menyembunyikan file teks dan menampilkannya dalam bentuk stego image dan sistem juga dapat mendapatkan kembali file teks awal dari stego image yang dimasukkan.

2. Mudah dipelajari dan digunakan

Sistem yang akan dibangun memiliki tampilan yang user friendly sehingga mudah dipahami dan digunakan oleh pengguna (user).

3. Hemat Biaya

Sistem yang akan dibangun tidak memerlukan perangkat tambahan atau perangkat pendukung lainnya yang dapat mengeluarkan biaya yang besar.

4. Dokumentasi

Sistem yang akan dibangun dapat menyimpan citra digital hasil penyisipan dan teks hasil dekripsi. Sistem juga dapat menampilkan waktu dari setiap proses yang dijalankan.


(18)

5. Kontrol

Sistem akan menampilkan pesan error untuk setiap input yang tidak sesuai serta memiliki kontrol berupa enable dan disable, yaitu ketika citra atau file teks belum diinput maka tombol fungsi pada sistem dalam keadaan tidak aktif atau disable, dan setelah citra atau file teks sudah diinput maka tombol fungsi tertentu akan aktif.

3.1.3 Analisis Proses

Sistem yang dibangun menggunakan bahasa pemrograman Visual Basic 2010. Algoritma kriptografi yang digunakan untuk mengamankan file teks adalah RC5 yang kemudian dikombinasikan dengan metode steganografi Least Significant Bit (LSB). Kunci enkripsi ditentukan oleh pengguna sendiri. Kunci enkripsi berfungsi sebagai kunci rahasia dalam melakukan proses enkripsi. Setelah dilalukan proses enkripsi maka dilakukan proses penyisipan dengan mengacak pixel-pixel sesuai dengan panjang ciphertext hasil enkripsi.

Dalam mendapatkan file teks awal dilakukan kebalikan dari proses sebelumnya yaitu melakukan proses ektraksi citra terlebih dahulu kemudian dilakukan proses dekripsi dengan kunci dekripsi yang sama seperti kunci enkripsi.

3.2 Perancangan Sistem

Pemodelan sistem dilakukan untuk menunjukkan dan mendeskripsikan gambaran dari sistem yang akan dibangun. Pada penelitian ini dilakukan pemodelan dengan menggunakan UML untuk mendesain serta merancang sistem.UML adalah bahasa yang digunakan untuk memberikan penjelasan mengenai komponen-komponen untuk membangun sistem dan interaksi antar komponen sistem. Model UML yang digunakan dalam penelitian ini antara lain adalah use case diagram, activity diagram serta sequence diagram.


(19)

3.2.1 Use Case Diagram

Use case merupakan gambaran dari interaksi antara sistem dan aktor yang berisi requirement yang terdapat pada sistem tersebut. Adapun use case dari sistem yang

akan dibangun pada penelitian ini dapat dilihat pada Gambar 3.2.

Gambar 3.2 Use Case Diagram

3.2.2 Activity Diagram

Activity diagram merupakan salah satu jenis diagram pada UML yang memodelkan

proses-proses apa saja yang terjadi di dalam sistem. Berikut beberapa activity diagram dari sistem yang akan dirancang :


(20)

Gambar 3.3 Activity Diagram Pengamanan

Gambar 3.3 menggambarkan aktivitas pada sistem saat user melakukan proses pengamanan. User memasukkan file teks, cover image, dan kunci rahasia, kemudian,

user menekan tombol mulai. Sistem akan melanjutkan dengan membaca kunci rahasia

yang telah diinputkan sebelumnya. Selanjutnya, sistem akan melakukan proses enkripsi terhadap teks yang dimasukkan dengan algoritma RC5. Selanjutnya, sistem melakukan proses penyisipan ciphertext hasil dari enkripsi RC5 ke dalam cover image

cover image yang telah dipilih oleh user dan sistem akan menampilkan tombol simpan

Sistem User

Cari File Teks OpenDialog dan Membaca File Teks ke Richtextbox

Cari Cover Image OpenDialog dan Membaca Cover Image ke Picturebox

Input Kunci Rahasia

Klik Mulai

Sistem Mengenkripsi Teks dengan Algoritma RC5

Sistem Menyisipkan Ciphertext ke Cover Image dengan LSB

Sistem Menampilkan Stego Image ke Picturebox

Klik Simpan Stego Image Sistem Menampilkan Lama Eksekusi dan Tombol Simpan Stego Image

Sistem Menyimpan Stego Image Sistem Membaca Kunci Rahasia


(21)

stego image setelah proses selesai. Selanjutnya, stego image akan disimpan oleh

sistem jika user menekan tombol simpan stego image.

Gambar 3.4 Activity Diagram Pengungkapan

Gambar 3.4 menggambarkan aktivitas pada sistem saat user melakukan proses pengungkapan. User memasukkan stego image dan kunci rahasia. Selanjutnya, Sistem membaca kunci rahasia tersebut kemudian dilakukan proses ekstrasi dan proses dekripsi secara berturut. Selanjutnya, sistem akan menampilkan tombol simpan teks dan sistem akan menyimpan teks jika user menekan tombol simpan teks tersebut.

Sistem User

Cari Stego Image

Sistem Melakukan Dekripsi Ciphertext Hasil Ekstrasi dengan RC5 Sistem Membaca Kunci Rahasia

OpenDialog dan Membaca Stego Image ke PictureBox

Input Kunci Rahasia

Klik Mulai

Sistem Menampilkan teks hasil dekripsi ke Richtextbox Sistem Melakukan Ekstrasi Citra Dengan Metode LSB

Sistem Menampilkan Lama Eksekusi dan Tombol Simpan Teks Klik Simpan Teks


(22)

Gambar 3.5 Activity Diagram Hitung MSE dan PSNR

Gambar 3.5 menggambarkan aktivitas pada sistem saat user melakukan proses perhitungan MSE dan PSNR. User memasukkan cover image dan stego image. Kemudian, sistem akan melakukan pengecekan terhadap tinggi dan lebar kedua gambar tersebut. Jika tinggi ataupun lebar kedua gambar tidak sama, maka user harus memasukkan kembali gambar yang memliki tinggi dan lebar yang sama. Setelah syarat tersebut terpenuhi, maka sistem akan menghitung nilai MSE dan PSNR dari kedua gambar tersebut dan menampilkan kedua nilai tersebut.

3.2.3 Sequence Diagram

Sequence diagram merupakan salah satu jenis diagram pada UML yang

menggambarkan interaksi antar objek berdasarkan urutan waktu. Sequence diagram dari sistem yang akan dibangun dapat dilihat pada Gambar 3.6.

Sistem User

Cari Cover Image

Klik Bandingkan Cari Stego Image

OpenDialog dan Menampilkan Cover Image ke Picturebox

Sistem Menghitung MSE dan PSNR Sistem Mengecek Tinggi dan Lebar Kedua Citra

Sistem Menampilkan Nilai MSE dan PSNR OpenDialog dan Menampilkan Stego Image ke Picturebox


(23)

Gambar 3.6 Sequence Diagram Sistem

Gambar 3.6 menunjukkan diagram sequence dari sistem yang akan dibangun. Pertama sistem akan melakukan proses pengamanan. Pada proses pengamanan terdapat

beberapa hal yang harus diinput oleh user diantaranya adalah file teks, cover image, dan kunci rahasia . Kemudian, user menekan tombol mulai untuk melakukan proses enkripsi dan embedding dan sistem akan menampilkan stego image yang telah terisi

ciphertext didalamnya. Setelah user melakukan penyimpanan stego image dilanjutkan

ke proses pengungkapan. Pada proes pengungkapan, user harus memasukkan stego

image dan kunci rahasia. Setelah itu, user menekan tombol mulai dan sistem akan

melakukan proses ekstraksi dan dekripsi sehingga sistem akan menampilkan hasil berupa teks awal dan user dapat melakukan penyimpanan teks tersebut. Pada proses

Hitung MSE dan PSNR Pengamanan Pengungkapan

Cari File Teks

Cari Cover Image Tampil Teks

Tampil Stego Image

Input Kunci Rahasia

Klik Mulai

Tampil Lama Eksekusi, Stego Image dan Button Simpan Stego image

Cari Stego Image Tampil Cover Image

Tampil Lama Eksekusi, Teks Awal dan Button Simpan Teks Input Kunci Rahasia

Klik Mulai

Input Cover Image Tampil Cover Image

Input Stego Image

Tampil Stego Image

Klik Bandingkan

Tampil Nilai MSE dan PSNR Klik Simpan Stego Image

Simpan Stego Image

Klik Simpan Teks


(24)

perhitungan MSE dan PSNR, user harus terlebih dahulu memasukkan cover image dan stego image dengan lebar dan tinggi yang sama. Selanjutnya, sistem akan melakukan proses perhitungan MSE dan PSNR. Selanjutnya, sistem akan menampilkan nilai MSE dan PSNR kepada user.

3.2.4 Flowchart

Flowchart merupakan suatu bagan yang menggambarkan urutan suatu proses secara

rinci menggunakan simbol-simbol tertentu dan menggambarkan hubungan antara satu proses dengan proses lainnya dengan menggunakan tanda panah. Selain itu, flowchart juga memiliki fungsi memudahkan proses pengecekan terhadap sistem yang akan dibuat.

3.2.4.1 Flowchart Sistem

Berikut merupakan flowchart dari sistem yang dibangun dapat dilihat pada Gambar 3.7.

Gambar 3.7 Flowchart Sistem

Input File Teks, Input Cover Image, Input Kunci Rahasia Proses Enkripsi Proses Embedding Stego Image, Lama Eksekusi Input Stego Image, Input Kunci Rahasia Proses Ekstrasi Proses Dekripsi Plain Teks, Lama Eksekusi Selesai Input Cover Image, Input Stego Image Proses Perhitungan MSE dan PSNR Nilai MSE dan PSNR Mulai A A B B


(25)

Pada gambar 3.7 terdapat tiga pilihan halaman yang dapat dipilih oleh user yaitu : Halaman Pengamanan, Pengungkapan dan Hitungan MSE dan PSNR. Halaman Pengamanan berfungsi untuk menenkripsikan dan menyisipkan file teks ke dalam

cover image. Halaman pengungkapan berfungsi untuk mendapatkan kembali teks awal

dengan mengekstraksi stego image dan mendekripsikan hasil ekstrasi tersebut. Halaman perhitungan MSE dan PSNR berfungsi untuk melakukan pengecekan terhadap kualitas citra sebelum dan sesudah disisipkan.

3.2.4.2 Flowchart Enkripsi RC5

Berikut merupakan flowchart enkripsi RC5 dari sistem yang dibangun dapat dilihat pada Gambar 3.8.

Gambar 3.8 Flowchart Enkripsi RC5

Mulai

Inisialisasi w,r,b u = w/8 c = b/u

Simpan kunci rahasia ke dalam array K[b]

Lakukan pengembangan kunci rahasia yang tersimpan di K[b] ke dalam

array L[0..c-1] Inisialisasi tabel kunci S[1..2r+1] Input kunci rahasia, Input plain teks

Campurkan array L dan array S

bagi plain teks ke dalam dua register A dan B sebanyak

32-bit

Inisialisasi register A = A + S[0] B = B + S[1]

i = 1

Lakukan operasi X-OR – rotasi kiri – penjumlahan A = ((A ⊕ B)<<B)+ S[2*i], B = ((B ⊕ A)<<A)+ S[2*i + 1]

i += 1

i = r ?

Akhir plain teks? selesai A A Cipher teks tidak tidak ya ya


(26)

3.2.4.3 Flowchart Dekripsi RC5

Berikut merupakan flowchart Dekripsi RC5 dari sistem yang dibangun dapat dilihat pada Gambar 3.9.

Gambar 3.9 Flowchart Dekripsi RC5

Mulai

Inisialisasi w,r,b u = w/8

c = b/u

Simpan kunci rahasia ke dalam array K[b]

Lakukan pengembangan kunci rahasia yang tersimpan di K[b] ke dalam

array L[0..c-1]

Inisialisasi tabel kunci S[1..2r+1]

Input kunci rahasia, Input cipher

teks

Campurkan array L dan array S

bagi cipher teks ke dalam dua register A dan B sebanyak

32-bit

i = r

B = ((B − S[2i + 1]) >>> A) ⊕ A A = ((A − S[2i]) >>> B) ⊕ B

i -=1

i = 1 ?

Akhir cipher teks?

selesai A

A

Plain teks tidak

tidak ya

ya

A = A - S[0] B = B - S[1]


(27)

3.2.4.4 Flowchart Embedding Teks ke Cover Image

Berikut merupakan flowchart Embedding Teks ke Cover Image dari sistem yang dibangun dapat dilihat pada Gambar 3.10.

Gambar 3.10 Flowchart Embedding Teks Ke Cover Image

mulai

Input plain teks, Input cover

image

Ubah setiap karakter plain teks ke dalam susunan

bit

Bangkitkan Algoritma Random

Sisipkan setiap bit dari plain teks ke bit terakhir

pixel yang terpilih

Ubah kembali nilai pixel ke dalam warna RGB

Stego image


(28)

3.2.4.5 Flowchart Exctracting Teks dari Stego Image

Berikut merupakan flowchart Exctracting Teks dari Stego Image dari sistem yang dibangun dapat dilihat pada Gambar 3.11.

Gambar 3.11 Flowchart Exctracting Teks Dari Stego Image

mulai

Input stego image

Ambil bit terakhir dari pixel yang

terpilih

Susun bit tersebut menjadi stream bit

Ubah stream bit menjadi karakter

selesai Bangkitkan algoritma random untuk memilih

pixel


(29)

3.2.4.6 Flowchart Perhitungan MSE dan PSNR

Berikut merupakan flowchart Perhitungan MSE dan PSNR dari sistem yang dibangun dapat dilihat pada Gambar 3.12.

Gambar 3.12 Flowchart Perhitungan MSE dan PSNR

3.2.5 Pseudocode

Pseudocode merupakan kode yang mirip dengan instruksi kode program yang

sebenarnya. Pseudocode bertujuan untuk memudahkan manusia dalam pemahaman dibandingkan menggunakan bahasa pemrograman yang umum digunakan. Pada penelitian ini terdapat pseudocode yang mewakili fungsi pada sistem.

Mulai

Citra1, Citra2

If citra1.width= citra2.width and

citra1.height=citra2.height

Tidak

Hitung MSE dan PSNR

Nilai MSE dan PSNR


(30)

3.2.5.1 Pseudocode Enkripsi RC5

Gambar 3.13 Pseudocode Enkripsi RC5

3.2.5.2 Pseudocode Dekripsi RC5

Gambar 3.14 Pseudocode Dekripsi RC5

3.2.5.3 Pseudocode Hitung MSE dan PSNR

Gambar 3.15 Pseudocode Hitung MSE dan PSNR

3.3 Perancangan Antarmuka (Interface)

Perancangan antarmuka (interface) suatu sistem merupakan salah satu bagian yang penting dalam membangun sebuah sistem. Antarmuka yang dirancang sebaiknya memperhatikan faktor pengguna agar pengguna mudah dan nyaman saat

A  A + S[0] B  B + S[1] for i = 1 to r do:

A  ((A ⊕B) <<< B) + S[2 * i] B  ((B ⊕A) <<< A) + S[2 * i + 1] return A, B

for i = r down to 1 do:

B  ((B - S[2 * i + 1]) >>> A) ⊕ A A  ((A - S[2 * i]) >>> B) ⊕ B B  B - S[1]

A  A - S[0] return A, B

sum  0.0 mse  0.0

for x = 0 to picture1.width-1

for(y = 0; y < picture1.height; ++y){ color = picture1.GetPixel(i, j) color2 = picture2.GetPixel(i, j)

sum  sum + Math.pow(color.R - color2.R, 2) _ + Math.pow(color.G - color2.G, 2) _ + Math.pow(Color.B - color2.B, 2)

mse  sum /(picture1.width*picture1.height*3) psnr 10 * Math.Log10(255 * 255 / mse)


(31)

menggunakan sistem tersebut. Adapun antarmuka yang akan dirancang pada sistem ini adalah halaman Pengamanan, Pengungkapan, dan Hitung MSE dan PSNR.

3.3.1 Halaman Pengamanan

Halaman Pengamanan merupakan halaman yang pertama kali ditampilkan saat sistem dijalankan. Pada halaman Pengamanan terdapat beberapa menu untuk mengakses halaman lain. Rancangan halaman Pengamanan dapat dilihat pada Gambar 3.16

Gambar 3.16 Rancangan Interface Halaman Pengamanan

Tabel 3.1 Keterangan Gambar Rancangan Interface Halaman Pengamanan

No Keterangan

1 Menu “Pengamanan” untuk menampilkan halaman proses enkripsi dan

embedding

2 Menu “Pengungkapan” untuk menampilkan halaman proses extracting dan dekripsi

3 Menu “Hitung MSE dan PSNR” untuk menampilkan halaman perhitungan MSE dan PSNR

4 Button “Browse Teks” untuk membuka direktori dan memilih file teks yang akan dienkripsikan

5 Button “Browse Cover Image” untuk membuka direktori dan memilih citra yang

Pengamanan Pengungkapan Hitung MSE dan PSNR

Browse Teks Browse Cover

Image

Simpan Stego Image

Password :

RC5 32/12/16, Steganografi LSB

Lama Eksekusi :

Panjang : Lebar :

Mulai

Boris Mario 121401066

1 2

3

7 4

8

9

10

12

11

13

14

5 6

Panjang Teks :


(32)

akan disisipi

6 Button “Save Stego Image” untuk memilih direktori tempat menyimpan citra hasil penyisipan

7 Textbox untuk memasukkan password atau kunci rahasia

8 Richtextbox untuk menampilkan isi dari file teks yang telah dipilih

9 Label untuk menampilkan lamanya proses enkripsi dan embedding

10 Label untuk menampilkan panjang teks

11 Button “Mulai” untuk melakukan proses enkripsi dan embedding

12 Picturebox untuk menampilkan citra yang telah dipilih 13 Label untuk panjang dari citra yang telah dipilih 14 Label untuk lebar dari citra yang telah dipilih

3.3.2 Halaman Pengungkapan

Halaman Pengungkapan merupakan halaman yang berfungsi untuk melakukan proses pengungkapan teks awal dari citra yang telah disisipi. Pada halaman Pengungkapan terdapat beberapa menu untuk mengakses halaman lain. Rancangan halaman Pengungkapan dapat dilihat pada Gambar 3.17

Gambar 3.17 Rancangan Interface Halaman Pengungkapan Pengamanan Pengungkapan Hitung MSE dan PSNR

Browse Stego Image Simpan Teks

Password :

RC5 32/12/16, Steganografi LSB

Lama Eksekusi :

Mulai

Boris Mario 121401066

1 3

4

7 10

6

5

8

9 2


(33)

Tabel 3.2 Keterangan Gambar Rancangan Interface Halaman Pengungkapan

No Keterangan

1 Menu “Pengamanan” untuk menampilkan halaman proses enkripsi dan

embedding

2 Menu “Pengungkapan” untuk menampilkan halaman proses extracting dan dekripsi

3 Menu “Hitung MSE dan PSNR” untuk menampilkan halaman perhitungan MSE dan PSNR

4 Button “Browse Stego Image” untuk membuka direktori dan memilih citra yang akan diekstraksi dan didekripsikan

5 Button “Simpan Teks” untuk memilih direktori tempat penyimpanan teks

6 Textbox untuk memasukkan password atau kunci rahasia

7 Picturebox untuk menampilkan citra yang telah dipilih

8 Label untuk menampilkan lamanya proses ekstrasi dan dekripsi

9 Button “Mulai” untuk melakukan proses ekstrasi dan dekripsi

10 Richtextbox untuk menampilkan hasil proses dekripsi/teks awal

3.3.3 Halaman Hitung MSE dan PSNR

Halaman Hitung MSE dan PSNR merupakan halaman yang berfungsi untuk melakukan perhitungan nilai MSE dan PSNR. Nilai MSE dan PSNR berfungsi untuk menunjukkan kualitas atau perbedaan dari dua buah citra. Rancangan halaman Hitung MSE dan PSNR dapat dilihat pada Gambar 3.18


(34)

Gambar 3.18 Rancangan Interface Halaman Hitung MSE dan PSNR Tabel 3.3 Keterangan Gambar Rancangan Interface Halaman Hitung MSE dan

PSNR

No Keterangan

1 Menu “Pengamanan” untuk menampilkan halaman proses enkripsi dan

embedding

2 Menu “Pengungkapan” untuk menampilkan halaman proses extracting dan dekripsi

3 Menu “Hitung MSE dan PSNR” untuk menampilkan halaman perhitungan MSE dan PSNR

4 Button “Browse Image” untuk membuka direktori dan memilih citra yang akan dibandingkan

5 Button “Hitung” untuk memulai proses perhitungan nilai MSE dan PSNR

6 Button “Browse Image” untuk membuka direktori dan memilih citra yang akan

7 Label untuk menampilkan nilai MSE

8 Picturebox untuk menampilkan citra yang telah dipilih

9 Label untuk menampilkan nilai PSNR

10 Picturebox untuk menampilkan citra yang telah dipilih

Pengamanan Pengungkapan Hitung MSE dan PSNR

Browse Image Browse Image

MSE : PSNR :

Boris Mario 121401066

1 3

4

8

7

6

9

10 2

Hitung


(35)

BAB 4

IMPLEMENTASI DAN PENGUJIAN

4.1. Implementasi

Setelah sistem dianalisis dan dirancang seperti yang telah diuraikan pada bab sebelumnya, tahap selanjutnya adalah mengimplementasikan sistem tersebut ke dalam bahasa pemrograman. Sistem ini dibangun dengan menggunakan Microsoft Visual Basic 2010. Pada sistem ini terdapat tiga halaman, yaitu : halaman Pengamanan, halaman Pengungkapan, halaman Hitung MSE dan PSNR.

4.1.1. Halaman Pengamanan

Halaman Pengamanan merupakan halaman yang pertama kali tampil pada saat sistem dijalankan. Tampilan halaman Pengamanan ini dapat dilihat pada Gambar 4.1.


(36)

Pada Gambar 4.1 terdapat 2 menu yang dapat memanggil halaman yang lain, yaitu: menu Pengungkapan, menu Hitung MSE dan PSNR. Pada halaman Pengamanan ini juga terdapat informasi tentang algoritma dan metode yang digunakan, serta terdapat juga nama dan nim dari penulis sendiri. Pada halaman ini user dapat melakukan proses enkripsi dan embedding dengan terlebih dahulu memasukkan file teks, cover

image, dan kunci rahasia. Kemudian, user harus menekan tombol “Mulai” untuk

melakukan proses enkripsi dan embedding. Hasil dari proses embedding dapat dilihat pada Picturebox di sebelah kanan.

4.1.2 Halaman Pengungkapan

Halaman Pengungkapan merupakan halaman yang ditampilkan jika user memilih menu “Pengungkapan”. Tampilan dari halaman Pengungkapan ini dapat dilihat pada Gambar 4.2.

Gambar 4.2 Halaman Pengungkapan

Gambar 4.1 menunjukkan bahwa user dapat melakukan proses ekstrasi dan dekripsi dengan terlebih dahulu memasukkan stego image, dan kunci rahasia. Kemudian, user


(37)

Universitas Sumatera Utara

dari proses dapat dilihat pada Richtextbox di sebelah kanan. Pada halaman ini juga akan ditampilkan lama eksekusi dari program.

4.1.3 Halaman Hitung MSE dan PSNR

Halaman Hitung MSE dan PSNR merupakan halaman yang ditampilkan jika

pengguna memilih menu “Hitung MSE dan PSNR”. Adapun tampilan dari halaman Hitung MSE dan PSNR ini dapat dilihat pada Gambar 4.3.

Gambar 4.3 Halaman Hitung MSE dan PSNR

Pada Gambar 4.3 user dapat melakukan pengecekan terhadap kualitas citra dengan melakukan proses perhitungan MSE dan PSNR. User harus terlebih dahulu

memasukkan citra – citra yang akan dibandingkan. Kemudian sistem akan

menampilkan hasilnya setelah tombol “Hitung” ditekan.

4.1.4 Implementasi Algoritma RC5

Pada bagian ini akan dijelaskan proses-proses yang terjadi dalam

mengimplementasikan algoritma RC5 pada proses enkripsi dan dekripsi. Sebelum melakukan enkripsi dan dekripsi harus terlebih dahulu dilakukan perluasan kunci (key


(38)

expanding) yang meliputi : pembentukan array L, pembentukan array S, dan

pencampuran array L dan S.

4.1.4.1. Proses Perluasan Kunci (Key Expanding)

Parameter yang digunakan pada penelitian adalah RC5 32/12/16 dengan plaintext

“Kripto Stegano” dan kunci rahasia “Kriptografi”. Berikut adalah proses perluasan kunci dari algoritma RC5 :

Plaintext : “Kripto Stegano“

Kunci rahasia : “Kriptografi” w (block size) = 32

r (round) = 12

b (key length) = 16 Keterangan :

w : ukuran blok enkripsi

r : jumlah putaran

b : panjang kunci rahasia

Plaintext dan kunci rahasia harus diubah ke dalam bentuk hexadecimal sehingga

bentuknya menjadi berikut ini :

Plaintext : 4B726970 746F2053 74656761 6E6F Kunci rahasia : 4B726970 746F6772 616669

Dikarenakan algoritma yang digunakan penulis menggunakan nilai w sebesar 32 bit dan nilai b sebesar 16 byte / 16 karakter maka plaintext dan kunci rahasia harus

di-padding agar sesuai dengan nilai yang telah ditetapkan. Berikut adalah bentuk plaintext dan kunci rahasia sesudah di-padding :

Plaintext : 4B726970 746F2053 74656761 6E6F0000 Kunci rahasia : 4B726970 746F6772 61666900 00000000


(39)

Universitas Sumatera Utara 4.1.4.1.1. Proses Pembentukan Array L

Pembentukan Array L merupakan tahap pertama dalam perluasan kunci RC5. Dengan menggunakan kunci rahasia yang telah di-padding maka berikutnya dilakukan proses perhitungan untuk mendapatkan array L[0,1..c-1] dengan algoritma :

Berikut adalah hasil perhitungan untuk mencari array L[0,1..c-1] : Dimana : b = 16, u = w/8 = 4 , c = b/u = 4.

L[i/4] = L[3] untuk i = 15, 14, 13 and 12. L[3] = (L[3] <<< 8) + K[15] = 00 + 00 = 00 L[3] = (L[3] <<< 8) + K[14] = 0000 + 00 = 0000 L[3] = (L[3] <<< 8) + K[13] = 000000 + 00 = 000000

L[3] = (L[3] <<< 8) + K[12] = 00000000 + 00 = 00000000

L[i/4] = L[2] untuk i = 11, 10, 9 and 8. L[2] = (L[2] <<< 8) + K[11] = 00 + 00 = 00 L[2] = (L[2] <<< 8) + K[10] = 0100 + 69 = 0069 L[2] = (L[2] <<< 8) + K[9] = 006900 + 66= 006966

L[2] = (L[2] <<< 8) + K[8] = 00696600 + 61 = 00696661

L[i/4] = L[1] untuk i = 7, 6, 5 and 4. L[1] = (L[1] <<< 8) + K[7] = 00 + 72= 72 L[1] = (L[1] <<< 8) + K[6] = 7200 + 67 = 7267 L[1] = (L[1] <<< 8) + K[5] = 726700 + 6F = 72676F

L[1] = (L[1] <<< 8) + K[4] = 72676F00 + 74 = 72676F74

L[i/4] = L[0] for i = 3, 2, 1 and 0.

L[0] = (L[0] <<< 8) + K[3] = 00 + 70 = 70 L[0] = (L[0] <<< 8) + K[2] = 7000 + 69 = 7069 L[0] = (L[0] <<< 8) + K[1] = 706900 + 72 = 706972

L[0] = (L[0] <<< 8) + K[0] = 70697200 + 4B = 7069724B

c = b/u;

for i = b – 1 downto 0 do


(40)

Tabel 4.1 Hasil Perhitungan Manual Array L[0,1..c-1]

L[0] L[1] L[2] L[3]

7069724B 72676F74 00696661 00000000

4.1.4.1.2. Proses Pembentukan Array S

Setelah proses pembentukan array L, maka proses selanjutnya adalah proses pembuatan array S. array S dibentuk dengan menggunakan algoritma sebagai berikut:

Dimana : t = 2*(r + 1) = 2 * (12+1) = 26, P32 = B7E15163, dan Q32 = 9E3779B9.

Nilai array S dapat dilihat pada tabel 4.2.

Tabel 4.2 Hasil Perhitungan Manual Array S[0,1..t-1]

n S[n]

1 B7E15163 + 9E3779B9 = 5618CB1C

2 5618CB1C + 9E3779B9 = F45044D5

3 F45044D5 + 9E3779B9 = 9287BE8E

4 9287BE8E + 9E3779B9 = 30BF3847

5 30BF3847 + 9E3779B9 = CEF6B200

6 CEF6B200 + 9E3779B9 = 6D2E2BB9

7 6D2E2BB9 + 9E3779B9 = 0B65A572

. . .

. . .

23 50A5C749 + 9E3779B9 = EEDD4102

24 EEDD4102 + 9E3779B9 = 8D14BABB

25 8D14BABB + 9E3779B9 = 2B4C3474

S[0] = P32;

For i = 1 to t-1 do


(41)

Universitas Sumatera Utara 4.1.4.1.3. Proses Pencampuran Array L dan S

Setelah dilakukan proses pembentukan array L dan array S, maka proses selanjutnya adalah mencampurkan kedua array tersebut dengan algoritma sebagai berikut :

Hasil pencampuran array L dengan array S dapat dilihat pada tabel 4.3.

Tabel 4.3 Hasil Pencampuran Array L Dengan Array S

A = S(0) = B7E15163 + 00000000 + 00000000 <<< 3 = BF0A8B1D

B = L(0) = 7069724B + BF0A8B1D + 00000000 <<< BF0A8B1D = 05EE7FAD A = S(1) = 5618CB1C + BF0A8B1D + 05EE7FAD <<< 3 = D88EAF30

B = L(1) = 72676F74 + D88EAF30 + 05EE7FAD <<< DE7D2EDD = 2A1C93CA A = S(2) = F45044D5 + D88EAF30 + 2A1C93CA <<< 3 = B7DC3E7F

B = L(2) = 00696661 + B7DC3E7F + 2A1C93CA <<< E1F8D249 = C47155C4 A = S(3) = 9287BE8E + B7DC3E7F + C47155C4 <<< 3 = 76AA9688

B = L(3) = 00000000 + 76AA9688 + C47155C4 <<< 13B1BEC4C = BEC4C3B1 A = S(4) = 30BF3847 + 76AA9688 + BEC4C3B1 <<< 3 = 31749403

B = L(0) = 05EE7FAD + 31749403 + BEC4C3B1 <<< F03957B4 = 761F627D A = S(5) = CEF6B200 + 31749403 + 761F627D <<< 3 = B4554403

. . .

A = S(24) = 8C4706A2 + DF020659 + 95223DAC <<< 3 = 035A5538

B = L(0) = F268D47E + 035A5538 + 95223DAC <<< 987C92E4 = AE567628 A = S(25) = F0735579 + 035A5538 + AE567628 <<< 3 = 112106CD

B = L(1) = 4239B824 + 112106CD + AE567628 <<< BF777CF5 = A3203626

4.1.4.2. Proses Enkripsi

Setelah tahap perluasan kunci selesai dilakukan, maka tahap selanjutnya adalah proses enkripsi. Proses enkripsi RC5 menggunakan algoritma sebagai berikut :

I =j = 0; A = B = 0;

do 3∗ max (t, c) times:

A = S[i] = (S[i] + A + B) <<< 3 B = L[j] = (L[j] + A + B) <<< (A + B); i = (i + 1) (mod t);


(42)

Plaintext : 4B726970 746F2053 74656761 6E6F0000

A B

Hasil dari enkripsi tahap 1 dapat dilihat pada tabel 4.4 berikut ini.

Tabel 4.4 Hasil Enkripsi Tahap 1

Round A B

0 DA679BFB D9198A23

1 9637A9A8 7E949194

2 4EC0DDA1 299ED426

3 9480BA56 A5AE1F76

4 85D3C225 693A5CD1

5 87E6EA1D 3F68CD4D

6 EE8E4741 71102837

7 B97D10EB AF86E0E9

8 FCDD5AC2 B8D000B5

9 27B29DB1 624CED95

10 E47A42C0 BEDA25AE

11 BEE07C1D 3F09518F

12 9A23962C BD9B411F

Plaintext : 4B726970 746F2053 74656761 6E6F0000

9A23962C BD9B411F A B

A = A + S[0]; B = B + S[1]; for i = 1 to r do

A = ((A ⊕ B) <<< B) + S[2i]; B = ((B ⊕ A) <<< A) + S[2i + 1];


(43)

Universitas Sumatera Utara

Hasil dari enkripsi tahap 2 dapat dilihat pada tabel 4.5 berikut ini.

Tabel 4.5 Hasil Enkripsi Tahap 2

Round A B

0 4C9073AA D90FD131

1 BF7E4627 893C9178

2 2A289645 2B772370

3 723359DC CF131F85

4 E1D041B3 4B302887

5 BA31AA9F 1A0DF780

6 C9E08D4F 8AAAFE14

7 33E1765B C38A56E8

8 701E0A85 DDECA5BE

9 C446C7D4 4EE54976

10 88942BD5 8D1C4485

11 5612CF75 5D1D682A

12 41F7D164 DFCC9BAE

Plaintext : 4B726970 746F2053 74656761 6E6F0000

9A23962C BD9B411F

41F7D164 DFCC9BAE A B

Hasil dari enkripsi tahap 3 dapat dilihat pada tabel 4.6 berikut ini.

Tabel 4.6 Hasil Enkripsi Tahap 3

Round A B

0 6EC1CE39 D31969D0

1 2230D8C0 419AB755


(44)

3 C4E89D35 5B4F5FB3

4 51FC73BA 7DA97F1D

5 2F87B1DE 7618EA24

6 C399EFD5 8B79C43E

7 D0654CAE 67E4116D

8 30B5CD85 559CB512

9 BB27B0AB 00717E45

10 4ACB60C9 ACE08EEE

11 A08EDEFF 65392E61

12 8ECA3675 13BE8530

Plaintext : 4B726970 746F2053 74656761 6E6F0000

9A23962C BD9B411F

41F7D164 DFCC9BAE 8ECA3675 13BE8530

Ciphertext : 9A23962C 41F7D164 8ECA3675 13BE8530

4.1.4.3. Proses Dekripsi

Proses Dekripsi adalah proses untuk mengembalikan ciphertext menjadi plaintext. Proses dekripsi RC5 menggunakan algoritma sebagai berikut :

Ciphertext : 9A23962C 41F7D164 8ECA3675 13BE8530 A B

For i = r down to 1 do

B = B − S i + >>> A ⊕ A; A = A − S i >>> B ⊕ B; B = B − S ;


(45)

Universitas Sumatera Utara

Hasil dari dekripsi tahap 1 dapat dilihat pada tabel 4.7 berikut ini.

Tabel 4.7 Hasil Dekripsi Tahap 1

Round A B

12 A08EDEFF 65392E61

11 4ACB60C9 ACE08EEE

10 BB27B0AB 00717E45

9 30B5CD85 559CB512

8 D0654CAE 67E4116D

7 C399EFD5 8B79C43E

6 2F87B1DE 7618EA24

5 51FC73BA 7DA97F1D

4 C4E89D35 5B4F5FB3

3 BD9EC8BB 40D65FBB

2 2230D8C0 419AB755

1 6EC1CE39 D31969D0

0 DFCC9BAE 6E6F0000

Ciphertext : 9A23962C 41F7D164 8ECA3675 13BE8530 DFCC9BAE 6E6F0000

A B

Hasil dari dekripsi tahap 2 dapat dilihat pada tabel 4.8 berikut ini.

Tabel 4.8 Hasil Dekripsi Tahap 2

Round A B

12 5612CF75 5D1D682A

11 88942BD5 8D1C4485


(46)

9 701E0A85 DDECA5BE

8 33E1765B C38A56E8

7 C9E08D4F 8AAAFE14

6 BA31AA9F 1A0DF780

5 E1D041B3 4B302887

4 723359DC CF131F85

3 2A289645 2B772370

2 BF7E4627 893C9178

1 4C9073AA D90FD131

0 BD9B411F 74656761

Ciphertext : 9A23962C 41F7D164 8ECA3675 13BE8530 DFCC9BAE 6E6F0000

BD9B411F 74656761

A B

Hasil dari dekripsi tahap 3 dapat dilihat pada tabel 4.9 berikut ini.

Tabel 4.9 Hasil Dekripsi Tahap 3

Round A B

12 BEE07C1D 3F09518F

11 E47A42C0 BEDA25AE

10 27B29DB1 624CED95

9 FCDD5AC2 B8D000B5

8 B97D10EB AF86E0E9

7 EE8E4741 71102837

6 87E6EA1D 3F68CD4D

5 85D3C225 693A5CD1


(47)

Universitas Sumatera Utara

3 4EC0DDA1 299ED426

2 9637A9A8 7E949194

1 DA679BFB D9198A23

0 4B726970 746F2053

Ciphertext : 9A23962C 41F7D164 8ECA3675 13BE8530 DFCC9BAE 6E6F0000

BD9B411F 74656761

4B726970 746F2053

Plaintext : 4B726970 746F2053 74656761 6E6F0000

Dengan mengubah hexadecimal menjadi karakter maka didapatkan kembali teks awal yaitu,

Plaintext : “Kripto Stegano”

4.1.5. Implementasi Metode LSB

Pada bagian ini akan dijelaskan proses menyisipkan ciphertext ke dalam cover image kemudian proses mengungkapkan kembali ciphertext tersebut dari stego image. Cover

image yang akan digunakan berukuran 100 x 100 pixel. Berikut adalah cover image

yang akan digunakan.

Gambar 4.4 Cover Image 100 x 100 Pixel

4.1.5.1. Proses Penyisipan

Proses Penyisipan adalah proses menyisipkan ciphertext hasil dari enkripsi RC5 ke dalam cover image dengan cara mengacak terlebih dahulu pixel yang akan disisipi dengan algoritma random Linear Congruential Generator (LCG). Dengan mengubah

ciphertext yang telah didapatkan sebelumnya menjadi stream bit maka ciphertext


(48)

Ciphertext : 00111001 01000001 00110010 00110011 00111001 00110110

00110010 01000011 00110100 00110001 01000110 00110111 01000100 00110001 00110110 00110100 00111000 01000101 01000011 01000001 00110011 00110110 00110111 00110101 00110001 00110011 01000010 01000101 00111000 00110101 00110011 00110000

Setelah mengubah ciphertext menjadi stream bit, maka proses selanjutnya adalah

menyisipkan masing-masing bit tersebut ke dalam pixel yang telah diacak

menggunakan algoritma LCG ke dalam cover image. Hasil penyisipan ciphertext ke dalam cover image dapat dilihat pada tabel 4.10.

Tabel 4.10 Hasil Penyisipan Ciphertext ke dalam Cover image Posisi

pixel

Sebelum Disisipkan Bit yang disisipkan

Sesudah Disisipkan

R G B R G B

(60,0) 63 63 63 001 62 62 63

(95,0) 0 0 0 110 1 1 0

(30,1) 64 64 64 010 64 65 64

(81,1) 64 64 64 100 65 64 64

(12,0) 0 0 0 000 0 0 0

(94,0) 0 0 0 100 1 0 0

(99,1) 0 0 0 110 1 1 0

(43,1) 64 64 64 010 64 65 64

. . . . . . . . . . . . . . . . . . . . . . . .

(16,0) 52 52 52 011 52 53 53

(11,1) 12 12 12 000 12 12 12

(45,1) 64 64 64 0 64 64 64

Untuk mengetahui berapa panjang bit yang harus diektraksi, maka dilakukan penanda dengan memasukkan panjang ciphertext ke dalam pixel terakhir di layer B cover

image. Pada kasus ini, maka panjang ciphertext yang harus dimasukkan sebagai


(49)

Universitas Sumatera Utara Ciphertext : 9A23962C41F7D1648ECA367513BE8530

Panjang ciphertext : 32

Panjang ciphertext dalam bit : 00100000

Untuk mengetahui berapa panjang ciphertext dalam bit yang harus diambil maka

harus dipadding dengan nilai “0” sebagai pembatas dan nilai “1” sepanjang panjang ciphertext dalam bit, sehingga penandanya menjadi seperti berikut :

Penanda : 00100000011111111

Proses penyisipan penanda kedalam cover image layer B dapat dilihat pada tabel 4.11.

Tabel 4.11 Proses Penyisipan Penanda ke dalam Cover image Posisi

pixel

Sebelum Disisipkan Bit yang disisipkan

Sesudah Disisipkan

B B

(83,99) 0 0 0

(84,99) 0 0 0

(85,99) 0 1 1

(86,99) 0 0 0

(87,99) 0 0 0

(88,99) 0 0 0

(89,99) 0 0 0

(90,99) 0 0 0

(91,99) 0 0 0

(92,99) 0 1 1

(93,99) 0 1 1

(94,99) 0 1 1

(95,99) 0 1 1

(96,99) 0 1 1

(97,99) 0 1 1

(98,99) 0 1 1


(50)

4.1.5.2. Proses Ekstraksi

Proses Ekstraksi adalah proses pengambilan kembali nilai-nilai bit yang telah disisipkan dan disatukan kembali menjadi suatu ciphertext. Terlebih dahulu, sistem harus mengekstraksi penanda untuk mengetahui panjang ciphertext yang akan diekstraksi nantinya. Kemudian, sistem dapat mengambil kembali ciphertext yang telah disisipkan.. Berikut proses pengambilan penandanya :

1. Sistem membaca dari pixel terakhir layer B secara berurutan dan mengambil

bit terakhir dari pixel tersebut hingga sistem menemukan nilai “0”.

Contoh :

(99,99) mempunyai bit terakhir “1” (98,99) mempunyai bit terakhir “1” (97,99) mempunyai bit terakhir “1” (96,99) mempunyai bit terakhir “1” (95,99) mempunyai bit terakhir “1” (94,99) mempunyai bit terakhir “1” (93,99) mempunyai bit terakhir “1” (92,99) mempunyai bit terakhir “1” (91,99) mempunyai bit terakhir “0

2. Ketika sistem sudah menemukan nilai “0” maka sistem dapat mengetahui

berapa panjang yang harus diambil selanjutnya sesuai dengan banyaknya nilai

1” yang terambil . Pada contoh diatas sistem harus mengambil 8 bit lagi. (90,99) mempunyai bit terakhir “0”

(89,99) mempunyai bit terakhir “0” (88,99) mempunyai bit terakhir “0” (87,99) mempunyai bit terakhir “0” (86,99) mempunyai bit terakhir “0” (85,99) mempunyai bit terakhir “1” (84,99) mempunyai bit terakhir “0” (83,99) mempunyai bit terakhir “0”

3. Nilai-nilai tersebut akan digabung sehingga menjadi “00100000” sehingga didapatkan lah panjang ciphertext = 32.


(51)

Universitas Sumatera Utara

Setelah dilakukan pengambilan penanda langkah selanjutnya adalah membangkitkan algoritma random LCG untuk mendapatkan posisi pixel yang akan diekstraksi. Proses ekstraksi ciphertext dapat pada tabel 4.12.

Tabel 4.12 Proses Ekstraksi Ciphertext Posisi

pixel

Bit yang disisipkan

R G B

(60,0) 62 62 63 001

(95,0) 1 1 0 110

(30,1) 64 65 64 010

(81,1) 65 64 64 100

(12,0) 0 0 0 000

(94,0) 0 0 0 100

(99,1) 1 0 0 110

(43,1) 64 65 64 010

. . .

. . .

. . .

. . .

. . .

(16,0) 52 53 53 011

(11,1) 12 12 12 000

(45,1) 64 64 64 0

Pada tabel 4.12, didapatkan ciphertext sebagai berikut :

Ciphertext : 00111001 01000001 00110010 00110011 00111001 00110110

00110010 01000011 00110100 00110001 01000110 00110111 01000100 00110001 00110110 00110100 00111000 01000101 01000011 01000001 00110011 00110110 00110111 00110101 00110001 00110011 01000010 01000101 00111000 00110101 00110011 00110000

Selanjutnya ciphertext tersebut diubah kedalam bentuk karakter sehingga menjadi seperti berikut :


(52)

4.2. Pengujian

Pengujian ini bertujuan untuk menguji komponen sistem yang telah dirancang sebelumnya dan untuk memastikan bahwa setiap elemen dari sistem telah berfungsi sesuai dengan yang diharapkan. Dalam pengujian perangkat lunak ini menggunakan metode Black Box yaitu yang berfokus pada persyaratan atau kebutuhan fungsional perangkat lunak yang dibuat.

4.2.1. Pengujian Black Box

Pengujian black box berfokus pada persyaratan fungsional aplikasi. Pengujian ini memungkinkan analisis sistem memperoleh kumpulan kondisi input yang akan mengerjakan seluruh keperluan fungsional aplikasi. Pengujian Black Box akan dilakukan pada masing-masing halaman yaitu pada halaman Pengamanan, halaman Pengungkapan, dan halaman Hitung MSE dan PSNR.

4.2.1.1. Pengujian Halaman Pengamanan

Pengujian black box pada halaman pengamanan berguna untuk mengetahui apakah aplikasi telah mampu mengamankan teks dan mampu mengatasi error-error akibat kotak isian yang kosong dan lain sebagainya. Hasil pengujian black box pada halaman pengamanan dapat dilihat pada tabel 4.13.

Tabel 4.13 Pengujian Halaman Pengamanan

No Skenario Pengujian

Hasil Yang Diharapkan

Hasil Pengujian Kesimpulan

1 Input file teks berformat *.docx, *.doc, *.txt, dan *.rtf.

Sistem menampilkan isi file teks ke Richtextbox dan Panjang Teks


(53)

Universitas Sumatera Utara 2 Input citra

berformat *.bmp, *.jpeg, *.jpg dan *.png. Sistem menampilkan citra ke dalam PictureBox dengan panjang dan lebar citra

Diterima

3 Password

Tidak Diinput Sistem menampilkan kotak pesan Pass ord Harus Diisi Diterima

4 Teks atau Citra belum diinput pada halaman pengaman an Sistem menampilkan Kotak pesan teks atau gambar belu ada

Diterima

5 Cover

Image tidak mampu menampu ng teks yang disisipkan Sistem akan menampilkan kotak pesan

Co er I age kura g besar


(54)

6 User menekan tombol

Mulai

Sistem akan menampilkan kotak pesan

Proses selesai , Lama Eksekusi dan Stego image

Diterima

4.2.1.2. Pengujian Halaman Pengungkapan

Pengujian black box pada halaman pengungkapan berguna untuk mengetahui apakah aplikasi telah mampu mengungkapkan dan mengembalikan ke teks awal, serta mampu mengatasi error-error akibat kotak isian yang kosong dan lain sebagainya. Hasil pengujian black box pada halaman Pengungkapan dapat dilihat pada tabel 4.14.

Tabel 4.14 Pengujian Halaman Pengungkapan

No Skenario Pengujian

Hasil Yang Diharapkan

Hasil Pengujian Kesimpulan

1 User menekan tombol

Mulai

Sistem akan menampilkan kotak pesan

Proses selesai , Lama eksekusi dan Teks awal

Diterima

2 Password

tidak diisi

Sistem akan menampilkan kotak pesan

Password Belum Diisi


(1)

vi

ABSTRAK

Keamanan data sudah menjadi hal yang sangat penting pada era teknologi ini. Hal tersebut diperlukan untuk mengatasi interupsi, penyadapan ataupun modifikasi pesan yang dilakukan oleh pihak-pihak yang tidak bertanggung jawab. Tanpa adanya jaminan keamanan data dan kerahasiaan data, orang lain dapat dengan mudah mendapatkan pesan/informasi melalui jaringan internet. Pada penelitian ini, masalah yang akan diangkat adalah pengamanan file teks dengan menggabungkan algoritma kriptografi RC5 dan metode steganografi Least Significant Bit (LSB). Aplikasi dibangun menggunakan bahasa pemrograman Visual Basic. Hasil penelitian menunjukkan bahwa RC5 dan LSB dapat dikombinasikan dengan baik sehingga dapat memberikan pengamanan terhadap file teks yang dimasukkan. Hasil penelitian juga menunjukkan bahwa metode LSB tidak menurunkan kualitas citra sama sekali karena mempunyai nilai PSNR lebih dari 30 dB


(2)

vii

IMPLEMENTATION OF RC5 CRYPTOGRAPHY ALGORITHM AND LEAST SIGNIFICANT BIT (LSB) STEGANOGRAPHY

METHOD IN SECURING TEXT FILE

ABSTRACT

Data security has been the most important thing in this technology era. It is needed to overcome interruption, tapping or any kind of message modification that is done by unresponsible parties. Without any data security guarantee and data confidentiality, other party can easily acquire message/information through internet network. In this research, the issues studied is securing text file by combining RC5 cryptography algorithm and Least Significant Bit (LSB) steganography method. The system will be built using Visual Basic programming language. Result of the test shows that RC5 and LSB can be combined very well in securing text file. Result of the test also shows that LSB method does not degrade the quality of the image at all because the PSNR value is over 30 dB.

Keywords : Cryptography, Steganography, RC5, Least Significant Bit, LSB.


(3)

viii

DAFTAR ISI

Hal.

Persetujuan ii

Pernyataan iii

Penghargaan iv

Abstrak vi

Abstract vii

Daftar Isi viii

Daftar Tabel x

Daftar Gambar xi

Bab 1 Pendahuluan

1.1 Latar Belakang 1

1.2 Rumusan Masalah 2

1.3 Batasan Masalah 2

1.4 Tujuan Penelitian 3

1.5 Manfaat Penelitian 3

1.6 Metodologi Penelitian 4

1.7 Sistematika Penulisan 5

Bab 2 Landasan Teori

2.1 Algoritma 6

2.2 Kriptografi 6

2.2.1 Algoritma RC5 7

2.2.1.1 Key Expansion Algorithm 7

2.2.1.2 Encryption Algorithm 9

2.2.1.3 Decryption Algorithm 9

2.3 Steganografi 10

2.3.1 Metode Least Significant Bit (LSB) 10

2.4 Citra 11

2.5 Penelitian yang Relevan 11

Bab 3 Analisis dan Perancangan

3.1 Analisis Sistem 13

3.1.1 Analisis Masalah 13

3.1.2 Analisis Persyaratan 14

3.1.2.1 Persyaratan Fungsional 15 3.1.2.2 Persyaratan Non-fungsional 15

3.1.3 Analisis Proses 16

3.2 Perancangan Sistem 16

3.2.1 Use Case Diagram 17

3.2.2 Activity Diagram 17


(4)

ix

3.2.4.1 Flowchart Sistem 22 3.2.4.2 Flowchart Enkripsi RC5 23 3.2.4.3 Flowchart Dekripsi RC5 24 3.2.4.4 Flowchart Embedding Teks ke Cover Image 25 3.2.4.5 Flowchart Extracting Teks dari Stego Image 26 3.2.4.6 Flowchart Perhitungan MSE dan PSNR 27

3.2.5 Pseudocode 27

3.2.5.1 Pseudocode Enkripsi RC5 28 3.2.5.2 Pseudocode Dekripsi RC5 28 3.2.5.3 Pseudocode Hitung MSE dan PSNR 28 3.3 Perancangan Antarmuka (Interface) 28

3.3.1 Halaman Pengamanan 29

3.3.2 Halaman Pengungkapan 30

3.3.3 Halaman Hitung MSE dan PSNR 31

Bab 4 Implementasi dan Pengujian

4.1 Implementasi 33

4.1.1 Halaman Pengamanan 33

4.1.2 Halaman Pengungkapan 34

4.1.3 Halaman Hitung MSE dan PSNR 35

4.1.4 Implementasi Algoritma RC5 35

4.1.4.1 Proses Perluasan Kunci (Key Expanding) 36 4.1.4.1.1 Proses Pembentukan Array L 37 4.1.4.1.2 Proses Pembentukan Array S 38 4.1.4.1.3 Proses Pencampuran Array L dan S 39

4.1.4.2 Proses Enkripsi 39

4.1.4.3 Proses Dekripsi 42

4.1.5 Implementasi Metode LSB 45

4.1.5.1 Proses Penyisipan 45

4.1.5.2 Proses Ekstraksi 48

4.2 Pengujian 50

4.2.1 Pengujian Black Box 50 4.2.1.1 Pengujian Halaman Pengamanan 50 4.2.1.2 Pengujian Halaman Pengungkapan 52 4.2.1.3 Pengujian Halaman Hitung MSE dan PSNR 53 Bab 5 Kesimpulan dan Saran

5.1 Kesimpulan 55

5.2 Saran 55

Daftar Pustaka 56

Listing Program A-1

Curriculum Vitae B-1


(5)

x

DAFTAR TABEL

Hal.

TABEL 2.1. Nilai Pw dan Qw 8

TABEL 3.1. Keterangan Gambar Rancangan Interface Halaman Pengamanan 29 TABEL 3.2. Keterangan Gambar Rancangan Interface Halaman Pengungkapan 31

TABEL 3.3. Keterangan Gambar Rancangan Interface Halaman Hitung

MSE dan PSNR 32

TABEL 4.1. Hasil Perhitungan Manual Array L[0,1..c-1] 38 TABEL 4.2. Hasil Perhitungan Manual Array S[0,1..t-1] 38 TABEL 4.3. Hasil Pencampuran Array L dengan Array S 39

TABEL 4.4. Hasil Enkripsi Tahap 1 40

TABEL 4.5. Hasil Enkripsi Tahap 2 41

TABEL 4.6. Hasil Enkripsi Tahap 3 41

TABEL 4.7. Hasil Dekripsi Tahap 1 43

TABEL 4.8. Hasil Dekripsi Tahap 2 43

TABEL 4.9. Hasil Dekripsi Tahap 3 44

TABEL 4.10. Hasil Penyisipan Ciphertext ke dalam Cover image 46 TABEL 4.11. Proses Penyisipan Penanda ke dalam Cover image 47

TABEL 4.12. Proses Ekstraksi Ciphertext 49

TABEL 4.13. Pengujian Halaman Pengamanan 50

TABEL 4.14. Pengujian Halaman Pengungkapan 52


(6)

xi

DAFTAR GAMBAR

Hal. GAMBAR 2.1. Skema Proses Enkripsi dan Dekripsi 7 GAMBAR 3.1. Diagram Ishikawa Masalah Penelitian 14

GAMBAR 3.2. Use Case Diagram 17

GAMBAR 3.3. Activity Diagram Pengamanan 18

GAMBAR 3.4. Activity Diagram Pengungkapan 19

GAMBAR 3.5. Activity Diagram Hitung MSE dan PSNR 20

GAMBAR 3.6. Sequence Diagram Sistem 21

GAMBAR 3.7. Flowchart Sistem 22

GAMBAR 3.8. Flowchart Enkripsi RC5 23

GAMBAR 3.9. Flowchart Dekripsi RC5 24

GAMBAR 3.10. Flowchart Embedding Teks Ke Cover Image 25 GAMBAR 3.11. Flowchart Exctracting Teks Dari Stego Image 26 GAMBAR 3.12. Flowchart Perhitungan MSE dan PSNR 27

GAMBAR 3.13. Pseudocode Enkripsi RC5 28

GAMBAR 3.14. Pseudocode Dekripsi RC5 28

GAMBAR 3.15. Pseudocode Hitung MSE dan PSNR 28 GAMBAR 3.16. Rancangan Interface Halaman Pengamanan 29 GAMBAR 3.17. Rancangan Interface Halaman Pengungkapan 30 GAMBAR 3.18. Rancangan Interface Halaman Hitung MSE dan PSNR 32

GAMBAR 4.1. Halaman Pengamanan 33

GAMBAR 4.2. Halaman Pengungkapan 34

GAMBAR 4.3. Halaman Hitung MSE dan PSNR 35

GAMBAR 4.4. Cover Image 100 x 100 Pixel 45