A-1 LISTING PROGRAM mainform.vb Imports System.IO Public Class mainform Private Sub mainform_load(byval sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load enkripsirb.checked = True browsebtn.enabled = False targettxt.enabled = False Private Sub enkripsirb_checkedchanged(byval sender As System.Object, ByVal e As System.EventArgs) Handles enkripsirb.checkedchanged If enkripsirb.checked Then ekeytxt.enabled = True dkeytxt.enabled = False generatersabtn.enabled = True ykeytxt.enabled = True xkeytxt.enabled = False gkeytxt.enabled = True pkeytxt.enabled = True generateelgamalbtn.enabled = True If sourcetxt.text <> "" Then Dim fdir, fname, fext As String fdir = Path.GetDirectoryName(sourceTxt.Text) fname = Path.GetFileNameWithoutExtension(sourceTxt.Text) fext = Path.GetExtension(sourceTxt.Text) targettxt.text = fdir & "\" & fname & "-encrypt" & Date.Now.ToString("dd-MMM-yyyy, hh mm ss") Private Sub dekripsirb_checkedchanged(byval sender As System.Object, ByVal e As System.EventArgs) Handles dekripsirb.checkedchanged If dekripsirb.checked Then ekeytxt.enabled = False dkeytxt.enabled = True generatersabtn.enabled = False ykeytxt.enabled = False xkeytxt.enabled = True gkeytxt.enabled = False pkeytxt.enabled = True generateelgamalbtn.enabled = False If sourcetxt.text <> "" Then Dim fdir, fname, fext As String fdir = Path.GetDirectoryName(sourceTxt.Text) fname = Path.GetFileNameWithoutExtension(sourceTxt.Text) fext = Path.GetExtension(sourceTxt.Text) targettxt.text = fdir & "\" & fname & "-encrypt" & Date.Now.ToString("dd-MMM-yyyy, hh mm ss") & fext
A-2 Private Sub openbtn_click(byval sender As System.Object, ByVal e As System.EventArgs) Handles openbtn.click OpenFileDialog.Title = "Pilih File Citra..." OpenFileDialog.Filter = "JPEG *.jpg BMP *.bmp" OpenFileDialog.ShowDialog() Private Sub prosesbtn_click(byval sender As System.Object, ByVal e As System.EventArgs) Handles prosesbtn.click If enkripsirb.checked Then If (ekeytxt.text <> "") And (nkeytxt.text <> "") And (ykeytxt.text <> "") And (gkeytxt.text <> "") And (pkeytxt.text <> "") And (sourcetxt.text <> "") Then If File.Exists(sourceTxt.Text) Then Dim source As New Bitmap(sourceTxt.Text) Dim target As Bitmap ProgressBar.Maximum = source.width * source.height MsgBox("Proses Enkripsi Algoritma RSA") source = encryptrsa(source, ekeytxt.text, nkeytxt.text) ProgressBar.Maximum = source.width * source.height MsgBox("Proses Enkripsi Algoritma Elgamal") target = encryptelgamal(source, ykeytxt.text, gkeytxt.text, pkeytxt.text) target.save(targettxt.text) targetpb.image = target browsebtn.enabled = True MsgBox("File tidak ditemukan") MsgBox("File atau Kunci Belum Lengkap") If dekripsirb.checked Then If (dkeytxt.text <> "") And (nkeytxt.text <> "") And (xkeytxt.text <> "") And (pkeytxt.text <> "") And (sourcetxt.text <> "") Then If File.Exists(sourceTxt.Text) Then Dim source As New Bitmap(sourceTxt.Text) Dim target As Bitmap ProgressBar.Maximum = source.width * source.height \ 2 MsgBox("Proses Dekripsi Algoritma Elgamal") source = decryptelgamal(source, xkeytxt.text, pkeytxt.text) ProgressBar.Maximum = source.width * source.height \ 2 MsgBox("Proses Dekripsi Algoritma RSA") target = decryptrsa(source, dkeytxt.text, nkeytxt.text) target.save(targettxt.text) targetpb.image = target browsebtn.enabled = True MsgBox("File tidak ditemukan") MsgBox("File atau Kunci Belum Lengkap") Private Sub OpenFileDialog_FileOk(ByVal sender As System.Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles OpenFileDialog.FileOk
A-3 If OpenFileDialog.FileName <> "" Then Dim fdir, fname, fext As String sourcepb.imagelocation = OpenFileDialog.FileName fdir = Path.GetDirectoryName(OpenFileDialog.FileName) fname = Path.GetFileNameWithoutExtension(OpenFileDialog.FileName) fext = Path.GetExtension(OpenFileDialog.FileName) sourcetxt.text = fdir & "\" & fname & fext If enkripsirb.checked Then targettxt.text = fdir & "\" & fname & "-encrypt" & Date.Now.ToString("dd-MMM-yyyy, hh mm ss") & fext If dekripsirb.checked Then targettxt.text = fdir & "\" & fname & "-encrypt" & Date.Now.ToString("dd-MMM-yyyy, hh mm ss") & fext Private Sub generatersabtn_click(byval sender As System.Object, ByVal e As System.EventArgs) Handles generatersabtn.click Me.Enabled = False genrsaform.show() Private Sub generateelgamalbtn_click(byval sender As System.Object, ByVal e As System.EventArgs) Handles generateelgamalbtn.click Me.Enabled = False genelgamalform.show() Private Sub browsebtn_click(byval sender As System.Object, ByVal e As System.EventArgs) Handles browsebtn.click Dim Folder_Path As String = "C:\" If targettxt.text <> "" Then Folder_Path = targettxt.text Folder_Path = Path.GetDirectoryName(Folder_Path) If Directory.Exists(Folder_Path) Then Process.Start("explorer.exe", Folder_Path) End Class genelgamalform.vb Imports System.Numerics Public Class genelgamalform Private Function isprime(byval p As Integer) As Boolean Dim s, n, i As BigInteger Dim prime As Boolean prime = False i = 1 If p = 2 Then s = 0 s = 4 n = BigInteger.Pow(2, p) - 1 Do While (i <= p) s = (BigInteger.Multiply(s, s) - 2) Mod n If s.equals(0) Then
A-4 prime = True Exit Do i = i + 1 Loop Return prime Private Sub generateprime(byval max As Integer) Dim exponent As Integer ProgressBar.Maximum = max - 256 If max > 1000 Then Dim result As Integer = MessageBox.Show("Mencari Bilangan Prima > 1000 membutuhkan waktu yang lama, Lanjutkan?", " Peringatan", MessageBoxButtons.YesNo) If result = DialogResult.No Then Exit Sub Dim v As Integer = 1 For exponent = 257 To max If isprime(exponent) Then ListBox_p.Items.Add(exponent) ListBox_p.Refresh() ProgressBar.Value = v v = v + 1 Next Private Sub genprimebtn_click(byval sender As System.Object, ByVal e As System.EventArgs) Handles genprimebtn.click Me.Enabled = False generateprime(cint(batasnilaitxt.text)) Me.Enabled = True ListBox_p.Enabled = True Private Sub genelgamalform_formclosed(byval sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed If ListBox_p.SelectedItem <> 0 Or gtxt.text <> "" Or xtxt.text <> "" Or ytxt.text <> "" Then mainform.pkeytxt.text = ListBox_p.SelectedItem.ToString mainform.gkeytxt.text = gtxt.text mainform.xkeytxt.text = xtxt.text mainform.ykeytxt.text = ytxt.text mainform.enabled = True Private Sub keybtn_click(byval sender As System.Object, ByVal e As System.EventArgs) Handles keybtn.click Dim p As Integer = ListBox_p.SelectedItem Dim rnd As New Random Dim g, x, y As BigInteger If ListBox_p.SelectedItem = 0 Then MsgBox("Pilih nilai p") Exit Sub
A-5 g = rnd.next(2, p - 1) x = g Do While (x = g) x = rnd.next(1, p - 1) Loop y = BigInteger.ModPow(g, x, p) gtxt.text = g.tostring xtxt.text = x.tostring ytxt.text = y.tostring ListBox_p.Enabled = False End Class genrsaform.vb Imports System.Numerics Public Class genrsaform Private Function isprime(byval p As Integer) As Boolean Dim s, n, i As BigInteger Dim prime As Boolean prime = False i = 1 If p = 2 Then s = 0 s = 4 n = BigInteger.Pow(2, p) - 1 Do While (i <= p) s = (BigInteger.Multiply(s, s) - 2) Mod n If s.equals(0) Then prime = True Exit Do i = i + 1 Loop Return prime Private Sub generateprime(byval max As Integer) Dim exponent As Integer ProgressBar.Maximum = max - 1 If max > 1000 Then Dim result As Integer = MessageBox.Show("Mencari Bilangan Prima > 1000 membutuhkan waktu yang lama, Lanjutkan?", " Peringatan", MessageBoxButtons.YesNo) If result = DialogResult.No Then Exit Sub Dim v As Integer = 1 For exponent = 2 To max If isprime(exponent) Then ListBox_p.Items.Add(exponent) ListBox_q.Items.Add(exponent) ListBox_p.Refresh() ListBox_q.Refresh() ProgressBar.Value = v v = v + 1
A-6 Next Private Function gcd(byval x As Integer, ByVal y As Integer) As Integer If x Mod y = 0 Then Return y Return gcd(y, x Mod y) Private Sub genprimebtn_click(byval sender As System.Object, ByVal e As System.EventArgs) Handles genprimebtn.click ListBox_p.Items.Clear() ListBox_q.Items.Clear() ListBox_e.Items.Clear() Me.Enabled = False generateprime(cint(batasnilaitxt.text)) Me.Enabled = True ListBox_p.Enabled = True ListBox_q.Enabled = True Private Sub eprosesbtn_click(byval sender As System.Object, ByVal e As System.EventArgs) Handles eprosesbtn.click Dim p As Integer = ListBox_p.SelectedItem Dim q As Integer = ListBox_q.SelectedItem ListBox_e.Items.Clear() Dim n, t As Integer If ListBox_p.SelectedItem = 0 Or ListBox_q.SelectedItem = 0 Then MsgBox("Pilih nilai p dan q") Exit Sub If p = q Then MsgBox("nilai p sama dengan q") Exit Sub Me.Enabled = False n = p * q t = (p - 1) * (q - 1) If n < 256 Then MsgBox("Untuk mengurangi error, n > 255") Dim v As Integer = 1 ProgressBar.Maximum = t - 1 For i As Integer = 2 To t - 1 If (gcd(i, t) = 1) Then If isprime(i) And i <> p And i <> q Then ListBox_e.Items.Add(i) ProgressBar.Value = v v = v + 1 Next i n1txt.text = n n2txt.text = n Me.Enabled = True
A-7 Private Sub dprosesbtn_click(byval sender As System.Object, ByVal e As System.EventArgs) Handles dprosesbtn.click Dim p As Integer = ListBox_p.SelectedItem Dim q As Integer = ListBox_q.SelectedItem Dim ekey As Integer = ListBox_e.SelectedItem If ListBox_e.SelectedItem = 0 Then MsgBox("Pilih nilai e") Exit Sub Me.Enabled = False Dim t As Integer = (p - 1) * (q - 1) Dim dkey As Double Dim k As Integer = 1 ProgressBar.Maximum = ekey Do While (Not dkey.equals(cint(dkey)) Or dkey < 1) dkey = (1 + (k * t)) / ekey k = k + 1 ProgressBar.Value = k Mod ekey Loop etxt.text = ekey dtxt.text = CInt(dkey) Me.Enabled = True Private Sub genrsaform_formclosed(byval sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed If etxt.text <> "" Or dtxt.text <> "" Or n1txt.text <> "" Then mainform.ekeytxt.text = etxt.text mainform.dkeytxt.text = dtxt.text mainform.nkeytxt.text = n1txt.text mainform.enabled = True End Class Elgamal.vb Imports System.Numerics Module Elgamal Public Function encryptelgamal(byval img As Bitmap, ByVal y As Integer, ByVal g As Integer, ByVal p As Integer) As Bitmap Dim result As New Bitmap(img.Width * 2, img.height * 2) Dim rnd As New Random Dim k As Integer = rnd.next(1, p - 2) Dim i1, i2, j1, j2 As Integer j1 = 0 j2 = 1 Dim yk As BigInteger = BigInteger.Pow(y, k) For j As Integer = 0 To img.height - 1 i1 = 0 i2 = 1
A-8 For i As Integer = 0 To img.width - 1 Dim rc, gc, bc As Byte Dim er1, er2, eg1, eg2, eb1, eb2 As Integer Dim er11, er12, er21, er22, eg11, eg12, eg21, eg22, eb11, eb12, eb21, eb22 As Byte Dim b16 As String rc = img.getpixel(i, j).r gc = img.getpixel(i, j).g bc = img.getpixel(i, j).b er1 = BigInteger.ModPow(g, k, p) er2 = BigInteger.Multiply(yk, rc) Mod p eg1 = BigInteger.ModPow(g, k, p) eg2 = BigInteger.Multiply(yk, gc) Mod p eb1 = BigInteger.ModPow(g, k, p) eb2 = BigInteger.Multiply(yk, bc) Mod p b16 = Convert.ToString(er1, 2).PadLeft(16, "0"c) er11 = Convert.ToByte(Mid(b16, 1, 8), 2) er12 = Convert.ToByte(Mid(b16, 9, 8), 2) b16 = Convert.ToString(er2, 2).PadLeft(16, "0"c) er21 = Convert.ToByte(Mid(b16, 1, 8), 2) er22 = Convert.ToByte(Mid(b16, 9, 8), 2) b16 = Convert.ToString(eg1, 2).PadLeft(16, "0"c) eg11 = Convert.ToByte(Mid(b16, 1, 8), 2) eg12 = Convert.ToByte(Mid(b16, 9, 8), 2) b16 = Convert.ToString(eg2, 2).PadLeft(16, "0"c) eg21 = Convert.ToByte(Mid(b16, 1, 8), 2) eg22 = Convert.ToByte(Mid(b16, 9, 8), 2) b16 = Convert.ToString(eb1, 2).PadLeft(16, "0"c) eb11 = Convert.ToByte(Mid(b16, 1, 8), 2) eb12 = Convert.ToByte(Mid(b16, 9, 8), 2) b16 = Convert.ToString(eb2, 2).PadLeft(16, "0"c) eb21 = Convert.ToByte(Mid(b16, 1, 8), 2) eb22 = Convert.ToByte(Mid(b16, 9, 8), 2) If er11 > 255 Or eg11 > 255 Or eb11 > 255 Then MsgBox("Nilai RGB 1 Melebihi Nilai Maksimum") If er12 > 255 Or eg12 > 255 Or eb12 > 255 Then MsgBox("Nilai RGB 2 Melebihi Nilai Maksimum") If er21 > 255 Or eg21 > 255 Or eb21 > 255 Then MsgBox("Nilai RGB 3 Melebihi Nilai Maksimum") If er22 > 255 Or eg22 > 255 Or eb22 > 255 Then MsgBox("Nilai RGB 4 Melebihi Nilai Maksimum") result.setpixel(i1, j1, Color.FromArgb(er11, eg11, eb11)) result.setpixel(i2, j1, Color.FromArgb(er21, eg21, eb21)) result.setpixel(i1, j2, Color.FromArgb(er12, eg12, eb12)) result.setpixel(i2, j2, Color.FromArgb(er22, eg22, eb22)) mainform.progressbar.value = mainform.progressbar.value + 1 mainform.persenlbl.text = Format((mainForm.ProgressBar.Value / mainform.progressbar.maximum) * 100, "0.00") & " %" mainform.persenlbl.refresh() i1 = i1 + 2 i2 = i2 + 2 Next i j1 = j1 + 2 j2 = j2 + 2
A-9 mainform.targetpb.refresh() Next j Public Function decryptelgamal(byval img As Bitmap, ByVal x As Integer, ByVal p As Integer) As Bitmap Dim result As New Bitmap(img.Width \ 2, img.height \ 2) Dim i1, i2, j1, j2 As Integer j1 = 0 j2 = 1 For j As Integer = 0 To (img.height \ 2) - 1 i1 = 0 i2 = 1 For i As Integer = 0 To (img.width \ 2) - 1 Dim rc, gc, bc As Integer Dim er1, er2, eg1, eg2, eb1, eb2 As BigInteger Dim er11, er12, er21, er22, eg11, eg12, eg21, eg22, eb11, eb12, eb21, eb22 As Byte Dim rx, gx, bx As BigInteger Dim b16a, b16b As String er11 = img.getpixel(i1, j1).r er12 = img.getpixel(i1, j2).r er21 = img.getpixel(i2, j1).r er22 = img.getpixel(i2, j2).r eg11 = img.getpixel(i1, j1).g eg12 = img.getpixel(i1, j2).g eg21 = img.getpixel(i2, j1).g eg22 = img.getpixel(i2, j2).g eb11 = img.getpixel(i1, j1).b eb12 = img.getpixel(i1, j2).b eb21 = img.getpixel(i2, j1).b eb22 = img.getpixel(i2, j2).b b16a = Convert.ToString(er11, 2).PadLeft(8, "0"c) b16b = Convert.ToString(er12, 2).PadLeft(8, "0"c) er1 = Convert.ToInt16(b16a & b16b, 2) b16a = Convert.ToString(er21, 2).PadLeft(8, "0"c) b16b = Convert.ToString(er22, 2).PadLeft(8, "0"c) er2 = Convert.ToInt16(b16a & b16b, 2) b16a = Convert.ToString(eg11, 2).PadLeft(8, "0"c) b16b = Convert.ToString(eg12, 2).PadLeft(8, "0"c) eg1 = Convert.ToInt16(b16a & b16b, 2) b16a = Convert.ToString(eg21, 2).PadLeft(8, "0"c) b16b = Convert.ToString(eg22, 2).PadLeft(8, "0"c) eg2 = Convert.ToInt16(b16a & b16b, 2) b16a = Convert.ToString(eb11, 2).PadLeft(8, "0"c) b16b = Convert.ToString(eb12, 2).PadLeft(8, "0"c) eb1 = Convert.ToInt16(b16a & b16b, 2) b16a = Convert.ToString(eb21, 2).PadLeft(8, "0"c) b16b = Convert.ToString(eb22, 2).PadLeft(8, "0"c) eb2 = Convert.ToInt16(b16a & b16b, 2) rx = BigInteger.Pow(er1, p - 1 - x) gx = BigInteger.Pow(eg1, p - 1 - x) bx = BigInteger.Pow(eb1, p - 1 - x)
A-10 rc = er2 * rx Mod p gc = eg2 * gx Mod p bc = eb2 * bx Mod p If rc > 255 Or gc > 255 Or bc > 255 Then MsgBox("Nilai RGB Melebihi Nilai Maksimum : R = " & rc & " G = " & gc & " B = " & bc) result.setpixel(i, j, Color.FromArgb(rc, gc, bc)) mainform.progressbar.value = mainform.progressbar.value + 1 mainform.persenlbl.text = Format((mainForm.ProgressBar.Value / mainform.progressbar.maximum) * 100, "0.00") & " %" mainform.persenlbl.refresh() i1 = i1 + 2 i2 = i2 + 2 Next i j1 = j1 + 2 j2 = j2 + 2 mainform.targetpb.refresh() Next j End Module RSA.vb Imports System.Numerics Module RSA Public Function encryptrsa(byval img As Bitmap, ByVal e As Integer, ByVal n As Integer) As Bitmap Dim result As New Bitmap(img.Width, img.height * 2) Dim j1 As Integer = 0 Dim j2 As Integer = 1 For j As Integer = 0 To img.height - 1 For i As Integer = 0 To img.width - 1 Dim r, g, b, er1, er2, eg1, eg2, eb1, eb2 As Byte Dim er, eg, eb As Integer Dim b16 As String r = img.getpixel(i, j).r g = img.getpixel(i, j).g b = img.getpixel(i, j).b er = BigInteger.ModPow(r, e, n) eg = BigInteger.ModPow(g, e, n) eb = BigInteger.ModPow(b, e, n) b16 = Convert.ToString(er, 2).PadLeft(16, "0"c) er1 = Convert.ToByte(Mid(b16, 1, 8), 2) er2 = Convert.ToByte(Mid(b16, 9, 8), 2) b16 = Convert.ToString(eg, 2).PadLeft(16, "0"c) eg1 = Convert.ToByte(Mid(b16, 1, 8), 2)
A-11 eg2 = Convert.ToByte(Mid(b16, 9, 8), 2) b16 = Convert.ToString(eb, 2).PadLeft(16, "0"c) eb1 = Convert.ToByte(Mid(b16, 1, 8), 2) eb2 = Convert.ToByte(Mid(b16, 9, 8), 2) If er1 > 255 Or eg1 > 255 Or eb1 > 255 Then MsgBox("Nilai RGB Melebihi Nilai Maksimum : R = " & er1 & " G = " & eg1 & " B = " & eb1) If er2 > 255 Or eg2 > 255 Or eb2 > 255 Then MsgBox("Nilai RGB 2 Melebihi Nilai Maksimum : R = " & er2 & " G = " & eg2 & " B = " & eb2) result.setpixel(i, j1, Color.FromArgb(er1, eg1, eb1)) result.setpixel(i, j2, Color.FromArgb(er2, eg2, eb2)) mainform.progressbar.value = mainform.progressbar.value + 1 mainform.persenlbl.text = Format((mainForm.ProgressBar.Value / mainform.progressbar.maximum) * 100, "0.00") & " %" mainform.persenlbl.refresh() Next i j1 = j1 + 2 j2 = j2 + 2 mainform.targetpb.refresh() Next j Public Function decryptrsa(byval img As Bitmap, ByVal d As Integer, ByVal n As Integer) As Bitmap Dim result As New Bitmap(img.Width, img.height \ 2) Dim j1 As Integer = 0 Dim j2 As Integer = 1 For j As Integer = 0 To (img.height \ 2) - 1 For i As Integer = 0 To (img.width) - 1 Dim er1, eg1, eb1, er2, eg2, eb2 As Byte Dim dr, dg, db, er, eg, eb As Integer Dim b16a, b16b As String er1 = img.getpixel(i, j1).r er2 = img.getpixel(i, j2).r eg1 = img.getpixel(i, j1).g eg2 = img.getpixel(i, j2).g eb1 = img.getpixel(i, j1).b eb2 = img.getpixel(i, j2).b b16a = Convert.ToString(er1, 2).PadLeft(8, "0"c) b16b = Convert.ToString(er2, 2).PadLeft(8, "0"c) er = Convert.ToInt16(b16a & b16b, 2) b16a = Convert.ToString(eg1, 2).PadLeft(8, "0"c) b16b = Convert.ToString(eg2, 2).PadLeft(8, "0"c) eg = Convert.ToInt16(b16a & b16b, 2) b16a = Convert.ToString(eb1, 2).PadLeft(8, "0"c) b16b = Convert.ToString(eb2, 2).PadLeft(8, "0"c) eb = Convert.ToInt16(b16a & b16b, 2) dr = BigInteger.ModPow(er, d, n) dg = BigInteger.ModPow(eg, d, n) db = BigInteger.ModPow(eb, d, n)
A-12 If dr > 255 Or dg > 255 Or db > 255 Then MsgBox("Nilai RGB Melebihi Nilai Maksimum : R = " & dr & " G = " & dg & " B = " & db) result.setpixel(i, j, Color.FromArgb(dr, dg, db)) mainform.progressbar.value = mainform.progressbar.value + 1 mainform.persenlbl.text = Format((mainForm.ProgressBar.Value / mainform.progressbar.maximum) * 100, "0.00") & " %" mainform.persenlbl.refresh() Next i j1 = j1 + 2 j2 = j2 + 2 mainform.targetpb.refresh() Next j End Module
A-13 CURRICULUM VITAE Nama Alamat Sekarang Alamat Orang Tua : Ahmad Ihsan : Jl. Bunga Kantil IV No. 77 Padang Bulan, Medan : Jl. Bunga Kantil IV No. 77 Padang Bulan, Medan Tempat/Tgl Lahir : Medan/ 18 Januari 1989 Telp/Hp : 085207891515 Email : ahmadihsan18@yahoo.co.id Riwayat Pendidikan SD Negeri 060935 Medan dari Tahun 1995 s/d Tahun 2001 SMP Swasta Dharma Pancasila Medan dari Tahun 2001 s/d Tahun 2004 SMA Negeri 2 Medan dari Tahun 2004 s/d Tahun 2007 dari Tahun 2008 s/d Tahun 2015 Keahlian/Kursus yang diikuti 1. Mampu mengoperasikan aplikasi dasar pada komputer 2. Mampu membangun jaringan internet 3. Mampu mengoperasikan aplikasi Photoshop 4. Mampu mengakses sistem operasi Windows 5. Pengalaman menjadi pengajar jaringan computer di SMK Raksana 6. Pengalaman menjadi teknisi computer