LISTING PROGRAM. 1. Bahasa Python Modulegate.py. Universitas Sumatera Utara. import sys sys.path.append("c:\skrip")

dokumen-dokumen yang mirip
LISTING PROGRAM. namespace NTRUEOF { public class parameterenkripsi { public static readonly parameterenkripsi parameterenkripsi(401, 2048, 113, 60);

LISTING PROGRAM. public static BigInteger gcd(biginteger m, BigInteger n){ BigInteger r = m % n; while (r!= 0){ return gcd(n,r); } return n; }

LAMPIRAN A : LISTING PROGRAM

LISTING PROGRAM. private void pemecahankuncibutton_click(object sender, EventArgs e) { PemecahanForm form = new PemecahanForm(); form.

LISTING PROGRAM. using System; using System.Collections.Generic; using System.Drawing; using System.Windows.Forms;

Vigenere Minimum-Prime Key-Adding Cipher

LAMPIRAN LISTING PROGRAM

LISTING PROGRAM. Public m, n, i, j, result1, cocok1, mpnext(0 To 255) As Integer


LAMPIRAN LISTING PROGRAM

Perulangan, Percabangan, dan Studi Kasus

BAB III ANALISA DAN PERANCANGAN

Pertemuan2 Percabangan & Perulangan pada Python

Teorema Fermat Dalam Menentukan Keprimaan Bilangan

APLIKASI MENGELOLA DATA ACCESS LOG MENGGUNAKAN C# Melihat LOG berdasar Hari, Jam, dan URL Terbanyak diakses

AP2B Dini Triasanti STRUKTUR PEMROGRAMAN PYTHON

BAB I PENDAHULUAN. 1.1 Latar Belakang

Percabangan & Perulangan

BAB IV. HASIL PENELITIAN DAN PEMBAHASAN

Badiyanto, S.Kom., M.Kom. PBO java

STRUKTUR PEMROGRAMAN PYTHON

MODUL PRAKTIKUM STRUKTUR DATA DAN ALGORITMA LINKED LIST (BAGIAN 1)

BAB IV IMPLEMENTASI DAN PEMBAHASAN. Dengan Metode Vigenere Cipher Untuk Pengamanan Sms Pada

MODUL PRAKTIKUM STRUKTUR DATA DAN ALGORITMA STACK

Algoritma Kriptografi Kunci-publik RSA menggunakan Chinese Remainder Theorem

Tujuan : A. Percabangan Percabangan di dalam Java terdapat 2 macam, yaitu dengan memakai if dan switch.

LAB PEMROGRAMAN I (JAVA FUNDAMENTAL) PERTEMUAN 3 Dosen : Bella Hardiyana S. Kom

LISTING PROGRAM. System.IO.File.WriteAllText(direktoriawal + "/Pengirim/" + filename,

HASIL DAN PEMBAHASAN. Algoritma Modular Exponentiation mempunyai kompleksitas sebesar O((lg n) 3 ) (Menezes et al. 1996).

BAB III ANALISIS DAN PERANCANGAN

BAB III ANALISIS DAN DESAIN SISTEM

LISTING PROGRAM. Private Sub MDIParent1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

PENERAPAN TEKNIK ENSKRIPSI EL GAMAL PADA APLIKASI JASA PENGIRIMAN MENGGUNAKAN BAHASA PEMROGRAMAN C#

Bab 3. Metode dan Perancangan Sistem

SOAL C++ Created by Yuli Astuti,S.Kom Copyright 2009

BAB III BAB III METODE PENELITIAN

BAB III ANALISIS DAN DESAIN SISTEM

PERTEMUAN 2 ARRAY, PERCABANGAN, DAN PERULANGAN

LAMPIRAN A : LISTING PROGRAM

Metode Binnary Searching di Java Console

Selamat Mengerjakan. 2. Keluaran dari baris 10 adalah? a. 1 b. 4 c. 2.5 d. 2 e Keluaran dari baris 11 adalah? a. 1 b. 4 c. 2.5 d. 2 e.

Gambar 1. Ilustrasi Stack

BAB III ANALISA DAN PERANCANGAN. pengamanan file teks dengan menggunakan algoritma triangle chain dan rivest cipher (RC4).

BAB III ANALISIS KEBUTUHAN DAN PERANCANGAN SISTEM. KriptoSMS akan mengenkripsi pesan yang akan dikirim menjadi ciphertext dan

Streamed Key Vigenere Cipher : Vigenere Cipher Menggunakan Penerapan Metode Pembangkitan Aliran Kunci

BAB Argument Command-Line dan System Properties

LAMPIRAN I LISTING PROGRAM

ShortHand If Else di Java

Integrasi Kriptografi Kunci Publik dan Kriptografi Kunci Simetri

BAHASA PEMROGRAMAN JAVA

BAB III PEMBAHASAN. Informasi rahasia yang dikirim ke pihak penerima, jika tidak disandikan bisa

DASAR PEMOGRAMAN JAVA


Perulangan / Looping

Bab 4 Hasil dan Pembahasan

Enkripsi Teks dengan Algoritma Affine Cipher

1. Mana diantara pilihan-pilihan berikut ini yang merupakan penulisan loop yang benar?

BAB II VARIABEL DAN TIPE DATA

Percabangan dan Perulangan

LAMPIRAN A. Universitas Sumatera Utara

Membuat Program Kriptografi dengan VB.Net 2010

MODUL PRAKTIKUM BASIS DATA PENGENALAN STRUKTUR DATA DAN KOMPLEKSITAS WAKTU

2 TIPE DATA DAN VARIABEL

BAB 3 ANALISIS DAN PERANCANGAN

Kriptografi untuk Huruf Hiragana

MODUL III ARRAYLIST TUGAS PENDAHULUAN

ALGORITMA ELGAMAL UNTUK KEAMANAN APLIKASI

1. Latar Belakang masalah Pemakaian teknologi komputer sebagai salah satu aplikasi dari teknologi informasi sudah menjadi suatu kebutuhan, karena

BAB III ANALISIS DAN RANCANGAN

Pencarian (Searching)

BAB IV HASIL DAN PEMBAHASAN

BAB III ANALISIS DAN DESAIN SISTEM

SKRIPSI BILQIS

BAB 1 PENDAHULUAN Latar belakang

Bab 3. Metode dan Perancangan Sistem

BAB I PENDAHULUAN. 1.1 Latar Belakang Masalah

BAB III METODOLOGI PENELITIAN. ditemukan oleh Rivest, Shamir dan Adleman (RSA) pada tahun

Penyamaran Plainteks pada Algoritma Vigenere Chiper StegaVig Makalah IF5054 Kriptografi

PERULANGAN PADA PYTHON

BAB III PERANCANGAN SISTEM

ENKRIPSI DENGAN MENGGUNAKAN METODE ELGAMAL PADA PERANGKAT MOBILE

Pertemuan III [STRUKTUR KONTROL] CariGrade.java Program mencari grade nilai menggunakan struktur control if-else

BAB III ANALISIS DAN DESAIN SISTEM

Tipe Data dan Variabel. Dosen Pengampu Muhammad Zidny Naf an, M.Kom

Penerapan ECC untuk Enkripsi Pesan Berjangka Waktu

MODUL PRAKTIKUM STRUKTUR DATA DAN ALGORITMA QUEUE

Pembangkit Kunci Acak pada One-Time Pad Menggunakan Fungsi Hash Satu-Arah

Rancangan Algoritma Kriptografi Boink2 Berbasis Subtitusi Karakter

Latar Belakang Masalah Landasan Teori

1. BAB III ANALISA DAN PERANCANGAN SISTEM

Analisis dan Perbandingan Kecepatan Algoritma RSA dan Algoritma ElGamal

SEKOLAH TINGGI MANAJEMEN INFORMATIKA & KOMPUTER JAKARTA STI&K SATUAN ACARA PERKULIAHAN

BAB III ANALISA DAN DESAIN SISTEM

Security Chatting Berbasis Desktop dengan Enkripsi Caesar Cipher Key Random

Transkripsi:

67 1. Bahasa Python LISTING PROGRAM 1.1. Modulegate.py import sys sys.path.append("c:\skrip") import pythona def gerbang(fungsi): if(fungsi == "bangkitkunci"): from pythona import bangkitkankunci p, q, n = bangkitkankunci() print(p, q, n) elif(fungsi == "cekkunci"): from pythona import cekkunci hasil = cekkunci(b,c) print(hasil) elif(fungsi == "enkripsi"): from pythona import programenkripsi C = programenkripsi(d, b) for i in range(len(c)): print(c[i], end = " ") elif(fungsi == "dek"): from pythona import decryptciphertext cetak = decryptciphertext(d, b, c) for i in range(len(cetak)): print(cetak[i], end = " ") elif(fungsi == "dek2"): from pythona import decryptciphertext2 cetak = decryptciphertext2(d, b, c) for i in range(len(cetak)): print(cetak[i], end = " ") elif(fungsi == "cari"): from pythona import carihitamdaripath hasil = carihitamdaripath(d, b) for i in range(len(hasil)): print(hasil[i], end = '') if(i < len(hasil)-1): print(',', end = '') elif(fungsi == "embed"): from pythona import jalankansisip stroutput = jalankansisip(d, e, b) print(stroutput) elif(fungsi == "ekstrak"): from pythona import jalankanekstrak stroutput = jalankanekstrak(d) print(stroutput) global a a = str(sys.argv[1]) global b b = int(sys.argv[2]) global c c = int(sys.argv[3]) global d d = str(sys.argv[4])

68 global e e = str(sys.argv[5]) gerbang(a) 1.2. ModulepythonA.py import random, time class Timer(object): ''' timer starts with class initialisation ''' def init (self): self.t1= time.time() self.t2= time.time() def getelapsedltime(self): # gets total elapsed from class initialsation self.delta=time.time()-self.t1 return '{0:.3f'.format(self.delta) def gettimedifference(self): # gets time elapsed from previous reading (for first reading this is equal to total time elapsed getelapsedltime() self.delta=time.time()-self.t2 self.t2 = time.time() return '{0:.3f'.format(self.delta) def differentrandom(n): x = [] for i in range(0, len(str(n))): a = random.randint(2,n-1) while a in x: a = random.randint(2,n-1) x.append(a) return x def tobin(x): return "{0:b".format(x) def ntobin(n): return tobin(n-1) def modexpsam(x, y, z): b = tobin(y) t = len(b) result = 1 for i in range(0, t): result = (result * result) % z if(b[i] == "1"): result = (result * x) % z return result

69 def moduloeks(acak, y, bil): z = 1 for j in range (1, y + 1): z = (acak * z) % bil return z def fermatprime(x): y = x - 1 # panjang digit untuk pengetesan iterasi = len(str(x)) * 2 if(iterasi < 3): iterasi = 3 for i in range (0, iterasi): acak = random.randint(1, y) if(moduloeks(acak, y, x)!= 1): return False return True def isprime(x): lowprimes = [2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,15 7,163,167,173,179,181,191,193,197,199,211,223,227,229,233,2 39,241,251,257,263,269,271,277,281,283,293,307,311,313,317, 331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,50 3,509,521,523,541,547,557,563,569,571,577,587,593,599,601,6 07,613,617,619,631,641,643,647,653,659,661,673,677,683,691, 701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,90 7,911,919,929,937,941,947,953,967,971,977,983,991,997] if x in lowprimes: return True elif x & 1!= 0: return fermatprime(x) return False def bangkitkankunci(): syarat_tdk_terpenuhi = True while syarat_tdk_terpenuhi: p = random.randint(3,10000) if (p % 4 == 3) and isprime(p): syarat_tdk_terpenuhi = False syarat_tdk_terpenuhi = True while syarat_tdk_terpenuhi: q = random.randint(3,10000) if (q!= p) and (q % 4 == 3) and isprime(q): syarat_tdk_terpenuhi = False n = p * q return p, q, n def cekkunci(key1, key2): if (key1 % 4 == 3) and isprime(key1) and (key2 % 4 == 3) and isprime(key2) and (key1!= key2): return "T" else: return "F"

70 def enkripsi(p, n): if P < n: C = modexpsam(p,2,n) return C return False def encryptall(p, n): C = [] for i in range(0, len(p)): C.append(enkripsi(ord(P[i]),n)) if C[i] == False: break; return C def programenkripsi(plaintext, kuncipublik): measure=timer() P = str(plaintext) n = int(kuncipublik) C = encryptall(p, n) C.append(measure.getElapsedlTime()) return C def exteuclid(a,b): A, B, x, lastx, y, lasty = a, b, 1, 0, 0, 1 while (B > 0): hasilbagi = A//B sisabagi = A - hasilbagi * B A, B = B, sisabagi S = x - hasilbagi * lastx x, lastx = lastx, S T = y - hasilbagi * lasty y, lasty = lasty, T return A, x, y def CRT(mp, mq, p, q): n = p * q M1 = n // p M2 = n // q gcd, y1, y2 = exteuclid(m1,m2) return mp*m1*y1, mq*m2*y2, n def autodekripsi(c, p, q): mp = modexpsam(c, (p+1)//4, p) mq = modexpsam(c, (q+1)//4, q) x, y, n = CRT(mp,mq,p,q) P1 = (x + y) % n P2 = (x - y) % n P3 = (-x + y) % n P4 = (-x - y) % n return min(p1, P2, P3, P4) def autodekripsirabin(c, p, q): mp = modexpsam(c, (p+1)//4, p) mq = modexpsam(c, (q+1)//4, q) x, y, n = CRT(mp,mq,p,q)

71 P1 = (x + y) % n P2 = (x - y) % n P3 = (-x + y) % n P4 = (-x - y) % n return min(p1, P2, P3, P4), P1, P2, P3, P4 def convertliststringctoint(c): hasil = [] c = C.split(',') for i in c: hasil.append(int(i)) return hasil def decryptciphertext2(c, p, q): measure=timer() C = convertliststringctoint(c) P = [] for i in range(0, len(c)): minp = autodekripsi(c[i], p, q) P.append(chr(minP)) stringp = ''.join(p) et = measure.getelapsedltime() cetak = [] cetak.append(stringp) cetak.append(et) temp = tulishasildekripsi(stringp) return cetak def decryptciphertext(c, p, q): measure=timer() C = list(c) ordo = [] for i in range(len(c)): ordo.append(ord(c[i])) C = ordo P = [] for i in range(0, len(c)): minp = autodekripsi(c[i], p, q) P.append(chr(minP)) stringp = ''.join(p) et = measure.getelapsedltime() cetak = [] cetak.append(stringp) cetak.append(et) temp = tulishasildekripsi(stringp) return cetak class Convert: def toli(self, string): temp = string.split(',') temp2 = [] for e in temp: temp2.append(int(e)) return temp2 def tosi(self, L): temp = ""

72 for i in range(len(l)): temp += str(l[i]) if(i < len(l)-1): temp += ',' return temp def todec(self, P): temp = [] for i in range(len(p)): temp.append(ord(p[i])) return temp def toascii(self, string): string = self.toli(string) temp = "" for e in string: temp += chr(e) return temp #hasil = isprime(100) #print(hasil) 2. Bahasa C# 2.1. Fungsi Pembangkit Kunci pada FormPembangkitKunci.cs public void runpythonbangkitkunci(){ ProcessStartInfo p = new ProcessStartInfo(); p.filename = "c:\\python33\\python.exe"; p.redirectstandardoutput = true; p.useshellexecute = false; p.arguments = "c:\\skrip\\gate.py "+ "bangkitkunci 0 0 'x' 'x'"; // start the python program with two parameters try{ using(process exeproc = Process.Start(p)){ StreamReader s = exeproc.standardoutput; String output = s.readtoend(); '); string []r = output.split(new char[]{' textboxkuncip.text = r[0].tostring(); textboxkunciq.text = r[1].tostring(); textboxkuncin.text = r[2].tostring();

73 catch{ MessageBox.Show("Gagal melakukan pembangkit kunci.", "Kesalahan Proses Pembangkit Kunci", MessageBoxButtons.OK, MessageBoxIcon.Error); void ButtonGenerateClick(object sender, EventArgs e) { if(!string.isnullorwhitespace(textboxkuncip.text) &!string.isnullorwhitespace(textboxkunciq.text)){ if(messagebox.show("kunci yang anda tulis sebelumnya akan terhapus. Yakin untuk melanjutkan?", "Peringatan: Pembangkitan Kunci", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning) == DialogResult.OK){ else{ runpythonbangkitkunci(); runpythonbangkitkunci(); 2.2.Fungsi Cek Kunci pada FormPembangkitKunci.cs void ButtonCekKunciClick(object sender, EventArgs e){ if(string.isnullorwhitespace(textboxkuncip.text) string.isnullorwhitespace(textboxkunciq.text)){ MessageBox.Show("Pasangan kunci tidak boleh ada yang kosong.", "Kesalahan Kunci", MessageBoxButtons.OK, MessageBoxIcon.Error);

74 textboxkuncin.text = ""; else if(!string.isnullorwhitespace(textboxkuncip.text) &!string.isnullorwhitespace(textboxkunciq.text)){ string hasil = runpythoncekkunci(); if(string.equals(hasil, "T")){ else{ int a = int.parse(textboxkuncip.text); int b = int.parse(textboxkunciq.text); int c = a*b; textboxkuncin.text = c.tostring(); MessageBox.Show("Kunci tidak memenuhi syarat.", "Kesalahan Kunci", MessageBoxButtons.OK, MessageBoxIcon.Error); textboxkuncin.text = ""; public string runpythoncekkunci(){ string hasil; int kunci1 = int.parse(textboxkuncip.text); int kunci2 = int.parse(textboxkunciq.text); ProcessStartInfo p = new ProcessStartInfo(); p.filename = "c:\\python33\\python.exe"; p.redirectstandardoutput = true; p.useshellexecute = false; p.arguments = "c:\\skrip\\gate.py "+ "cekkunci " + kunci1 + " " + kunci2 + " 'x' 'x'"; try{ using(process exeproc = Process.Start(p)){

75 StreamReader s = exeproc.standardoutput; String output = s.readtoend(); string []r = output.split(new char[]{' '); hasil = r[0][0].tostring(); catch{ MessageBox.Show("Gagal dalam melakukan cek kunci.", "Kesalahan Cek Kunci", MessageBoxButtons.OK, MessageBoxIcon.Error); hasil = ""; return hasil; 2.3.Fungsi Enkrip Pesan void Button1EnkripsiClick(object sender, EventArgse) { if(string.isnullorwhitespace(textbox1plaintext.text) stri ng.isnullorwhitespace(textbox1keyotp.text)){ MessageBox.Show("Kunci OTP atau Pesan tidak boleh kosong.", "Kesalahan Dekripsi", MessageBoxButtons.OK, MessageBoxIcon.Error); else{ textbox2chiphertext.text=""; //ambilplainteks string plain=textbox1plaintext.text; //ambilpanjangplainteks int panjangplain=textbox1plaintext.text.length; //ambilkunci string kunci=textbox1keyotp.text; //ambilpanjangkunci

76 int pk=kunci.length; string cipher=""; //cekpanjangkuncidgnplain kunciotp= ""; if(pk<panjangplain){ //contohkunci=abc //plain:farid //kunciotp=abc kunciotp +=kunci; string tempplain=regex.replace(plain, @"\s+", ""); int pjgtempplain=tempplain.length; for(int i = 0; i<(panjangplain-pjgtempplain);i++){ //kunciotp=abcfa tempplain+= (char)tempplain[i]; //MessageBox.Show(tempplain); //proses menyamakan kunci == plain //perulangan sesuai kurangnya kunci for(int i = 0; i<(panjangplain-pk);i++){ //kunciotp=abcfa kunciotp+= (char)tempplain[i]; else{ kunciotp = kunci; DateTime starttime = DateTime.Now; MessageBox.Show("panjang karakter : "+panjangplain.tostring()); //algoritma otp for(int i=0; i<panjangplain;i++){ cipher+=(char) (plain[i] + kunciotp[i]); 2.4. Program Enkripsi Kunci Pesan

77 void Button1EnkripkeyClick(object sender, EventArgs e) { //cek kunci if(string.isnullorwhitespace(textboxkeyrabin.text)){ MessageBox.Show("Kunci publik belum ada.", "Kesalahan Enkripsi", MessageBoxButtons.OK, MessageBoxIcon.Error); //cek plain else if(string.isnullorempty(textbox1keyotp.text)){ MessageBox.Show("Tidak ada pesan (plaintext) yang terdeteksi.", "Kesalahan Enkripsi", MessageBoxButtons.OK, MessageBoxIcon.Error); else{ //jika ada string ciphertext = runpythonenkripsi(); textbox1cipherkey.copy(); public string runpythonenkripsi(){ string hasil; string hasil2; //ambil kunci int n = int.parse(textboxkeyrabin.text); //ambil pesan string plaintext =kunciotp; //ambil pnjang kunci int pjgplaintext = kunciotp.length; // string pltxt1 = plaintext.replace("\"","\\\""); int temporary = 0; ProcessStartInfo p = new ProcessStartInfo(); p.filename = "c:\\python33\\python.exe"; p.redirectstandardoutput = true; p.useshellexecute = false; // make sure we can read the output from stdout p.arguments = "c:\\skrip\\gate.py "+ "enkripsi " + n + " " + temporary + " \"" + pltxt1 + "\" 'x'"; try{ using(process exeproc = Process.Start(p)){ StreamReader s = exeproc.standardoutput; String output = s.readtoend(); string r = output; // get the parameter hasil = r.tostring(); hasil2 = hasil.replace(" ",","); hasil2 = hasil2.remove(hasil2.length-1,1);

78 string elapsedtime = hasil2.split(',').last(); hasil2 = hasil2.remove((hasil2.length - elapsedtime.length), elapsedtime.length); hasil2 = hasil2.remove(hasil2.length-1,1); if(hasil2 == "False"){ MessageBox.Show("Kunci publik tidak memenuhi syarat.", "Kesalahan Melakukan Enkripsi", MessageBoxButtons.OK, MessageBoxIcon.Error); hasil2 = ""; else{ textbox1cipherkey.text = hasil2.tostring(); //Untuk menampilkan ASCII try{ string kode = textbox1cipherkey.text.tostring(); List<string> listhasilsplit = new List<string>(kode.Split(',')); List<Int32> ci = listhasilsplit.convertall(x => Convert.ToInt32(x)); List<char> lichar = new List<char>(ci.ConvertAll(x => Convert.ToChar(x))); string chartostring = string.join("", lichar.toarray()); catch{ kode = chartostring; //End Tampil ASCII MessageBox.Show("Berhasil melakukan enkripsi (" + elapsedtime + " detik)", "Informasi", MessageBoxButtons.OK, MessageBoxIcon.Information); 2.5. Program dekripsi Kunci Pesan void Button1dekripkeyotpClick(object sender, EventArgs e) { if(string.isnullorwhitespace(kp.text) string.isnullorwhitespace(kq.text)){ MessageBox.Show("Kunci private tidak boleh kosong.", "Kesalahan Dekripsi", MessageBoxButtons.OK, MessageBoxIcon.Error);

79 else if(string.isnullorempty(ctotp.text)){ MessageBox.Show("Tidak ada ciphertext terdeteksi.", "Kesalahan Dekripsi", MessageBoxButtons.OK, MessageBoxIcon.Error); else{ try{ string ciphertext = ctotp.text.tostring(); string[] buffers = new string[ctotp.text.tostring().length]; buffers = ubahkeint(); string result = ConvertStringArrayToStringJoin(bufferS); List<string> listhasilsplit = new List<string>(ciphertext.Split(',')); List<Int32> ci = listhasilsplit.convertall(x => Convert.ToInt32(x)); List<char> lichar = new List<char>(ci.ConvertAll(x => Convert.ToChar(x))); string chartostring = string.join("", lichar.toarray()); ciphertext = chartostring; string plaintext = runpythondekripsi(ciphertext); catch{ //MessageBox.Show("Ciphertext harus berupa angka yang dipisah dengan koma.", "Kesalahan melakukan dekripsi", MessageBoxButtons.OK, MessageBoxIcon.Error); string ciphertext = ctotp.text.tostring(); string plaintext = runpythondekripsi(ciphertext); public string ConvertStringArrayToStringJoin(string[] array){ string result = string.join(",", array); return result; string[] ubahkeint(){ string C = ctotp.text.tostring(); char[] chararr = C.ToCharArray(); int val; string[] buffers = new string[chararr.length]; for(int i = 0; i < chararr.length; i++){ val = Convert.ToInt32(charArr[i]); buffers[i] = Convert.ToString(val);

80 return buffers; public string runpythondekripsi(string strintc){ string hasil; string hasil2; int kuncip = int.parse(kp.text); int kunciq = int.parse(kq.text); ProcessStartInfo p = new ProcessStartInfo(); p.filename = "c:\\python33\\python.exe"; p.redirectstandardoutput = true; p.useshellexecute = false; // make sure we can read the output from stdout p.arguments = "c:\\skrip\\gate.py "+ "dek " + kuncip + " " + kunciq + " " + "\"" + strintc + "\" 'x'"; // start the python program with two parameters try{ using(process exeproc = Process.Start(p)){ StreamReader s = exeproc.standardoutput; String output = s.readtoend(); string r = output; // get the parameter hasil = r.tostring(); string[] parts = hasil.split(' '); parts[parts.length - 2]; string elapsedtime = hasil2 = hasil.remove((hasil.length - elapsedtime.length), elapsedtime.length); hasil2 = hasil2.remove(hasil2.length-1,1); hasil2 = hasil2.remove(hasil2.length-1,1); // menghilangkan spasi di akhir kalimat kotp.text = hasil2.tostring(); int pjgpesanasli = hasil2.length; MessageBox.Show("Berhasil melakukan dekripsi (" + elapsedtime + " detik)", "Informasi", MessageBoxButtons.OK, MessageBoxIcon.Information);

81 catch{ //throw; strintc = ctotp.text.tostring(); p.filename = "c:\\python33\\python.exe"; p.redirectstandardoutput = true; p.useshellexecute = false; // make sure we can read the output from stdout p.arguments = "c:\\skrip\\gate.py "+ "dek2 " + kuncip + " " + kunciq + " " + "\"" + strintc + "\" 'x'"; // start the python program with two parameters try{ using(process exeproc = Process.Start(p)){ StreamReader s = exeproc.standardoutput; String output = s.readtoend(); string r = output; // get the parameter hasil = r.tostring(); '); parts[parts.length - 2]; string[] parts = hasil.split(' string elapsedtime = hasil2 = hasil.remove((hasil.length - elapsedtime.length), elapsedtime.length); hasil2 = hasil2.remove(hasil2.length-1,1); hasil2 = hasil2.remove(hasil2.length-1,1); // menghilangkan spasi di akhir kalimat hasil2.length; kotp.text = hasil2; int pjgpesanasli = MessageBox.Show("Berhasil melakukan dekripsi (" + elapsedtime + " detik)", "Informasi", MessageBoxButtons.OK, MessageBoxIcon.Information); catch{ //throw; strintc = kotp.text.tostring();

82 p.filename = "c:\\python33\\python.exe"; p.redirectstandardoutput = true; p.useshellexecute = false; // make sure we can read the output from stdout p.arguments = "c:\\skrip\\gate.py "+ "dek2 " + kuncip + " " + kunciq + " " + "\"" + strintc + "\" 'x'"; // start the python program with two parameters try{ using(process exeproc = Process.Start(p)){ StreamReader s = exeproc.standardoutput; String output = s.readtoend(); string r = output; // get the parameter hasil = r.tostring(); hasil.split(' '); parts[parts.length - 2]; string[] parts = string elapsedtime = hasil2 = hasil.remove((hasil.length - elapsedtime.length), elapsedtime.length); hasil2 = hasil2.remove(hasil2.length-1,1); hasil2 = hasil2.remove(hasil2.length-1,1); // menghilangkan spasi di akhir kalimat hasil2.length; kotp.text = hasil2; int pjgpesanasli = MessageBox.Show("Berhasil melakukan dekripsi (" + elapsedtime + " detik)", "Informasi", MessageBoxButtons.OK, MessageBoxIcon.Information); catch{ //throw;

83 MessageBox.Show("Kesalahan melakukan dekripsi.", "Kesalahan", MessageBoxButtons.OK, MessageBoxIcon.Error); hasil2 = ""; return hasil2; 2.6. Perogram dekripsi pesan void Button2dekripsiClick(object sender, EventArgs e) { if(string.isnullorwhitespace(textbox1cipher.text) string.isnullorwhitespace(textbox1cipherkey.text)){ MessageBox.Show("Kunci OTP dan Pesan Cipher tidak boleh kosong.", "Kesalahan Dekripsi", MessageBoxButtons.OK, MessageBoxIcon.Error); else{ //ambil cipher string cipher=textbox1cipher.text; //panjang cipher int panjang= textbox1cipher.text.length; //ambil kunci string kunci = kotp.text; string pesan=""; DateTime waktuawal = DateTime.Now; //algoritma otp for(int i=0; i<panjang;i++){ pesan += (char)(cipher[i]-kunci[i]); //MessageBox.Show(pesan.ToString()); MessageBox.Show("panjang : "+panjang.tostring()); MessageBox.Show("tes"); DateTime waktuakhir = DateTime.Now; /*MessageBox.Show("Time : " + elapsed.hours.tostring("00") + ":" +elapsed.minutes.tostring("00") + ":" + elapsed.seconds.tostring("00") + "." +elapsed.milliseconds.tostring("000"));*/ pesanbox.text=pesan; TimeSpan selisihwaktu = waktuakhir.subtract(waktuawal); MessageBox.Show("Time : " +selisihwaktu.hours.tostring()+" :"+selisihwaktu.minutes.tostring()+" : " + selisihwaktu.seconds.tostring()+" : " +selisihwaktu.milliseconds.tostring());

84 CURRICULUM VITAE Nama : Alfrid Iskandar Ramadhany Panggabean Alamat Sekarang : Jln. Umar Said No.1C Binjai Alamat Orang Tua : Jln. Umar Said No.1C Binjai Telp/ Hp : 087768644343 Email : Alfridiskandar@yahoo.com Riwayat Pendidikan 2010 2014 : S-1 Ilmu Komputer, Medan 2007 2010 : SMA Negeri 1, Binjai 2004 2007 : SMP Negeri 2, Binjai 1998 2004 : SD 020261, Binjai Keahlian Bahasa : Indonesia, Inggris Bahasa Pemrograman : C#.NET, Python. Database : Microsoft Access. Design : Photoshop, Corel Draw, Ilustrator Pengalaman Organisasi [2008 2009] OSIS SMA Negeri 1 Binjai [2007 2009] Paskibraka SMA Negeri 1 Binjai [2012 2013] Anggota Kemahasiswaan IMILKOM 2012-2013 [2013 2014] Kepala Bidang Kemahasiswaan IMILKOM 2013 2014

85 Pengalaman Kepanitiaan [2010] Anggota Dokumentasi Seminar Teknologi Informasi The Development Of Modern Operating System Technology [2012] Ketua Bidang Dana dan Usaha PORSENI IMILKOM 2012 [2012] Ketua Bidang Acara PMB IMILKOM 2012