A-1 LAMPIRAN LISTING PROGRAM 1. Kode Program RC4A using System; using System.IO; using System.Collections.Generic; using System.Drawing; using System.Windows.Forms; using System.Text; namespace Sistem public class RC4A int[] K = new int[256]; int[] S1 = new int[256]; int[] S2 = new int[256]; public List<int> cip = new List<int>(); public void Kunci(string kuncii) int l = kuncii.length; for (int i = 0; i < 256; i++) K[i] = (int)kuncii[i%l]; //MessageBox.Show(K[i].ToString()); public void KSA() for (int i = 0; i < 256; i++) S1[i] = i; int j = 0; for (int i = 0; i < 256; i++) j = (j + S1[i] + K[i]) % 256; int temp = S1[i]; S1[i] = S1[j]; S1[j] = temp; public void KSA2() for (int i = 0; i < 256; i++) S2[i] = i; int j = 0; for (int i = 0; i < 256; i++)
A-2 B j = (j + S2[i] + K[i]) % 256; int temp = S2[i]; S2[i] = S2[j]; S2[j] = temp; public string PRGA(string teks) int i = 0; int j = 0; StringBuilder cipherst = new StringBuilder(); for (int pl = 0; pl < teks.length; pl++) i = (i+1) % 256; j = (j+s1[i]) % 256; int temp = S1[i]; S1[i] = S1[j]; S1[j] = temp; int z1 = S1[(S1[i] + S1[j]) % 256]; cipherst.append(convert.tochar(z1)); return cipherst.tostring(); public string PRGA2(string plteks) int i = 0; int j1 = 0; int j2 = 0; StringBuilder cipherst = new StringBuilder(); for (int pl = 0; pl < plteks.length; pl++) i = (i+1) % 256; j1 = (j1 + S1[i]) % 256; int temp = S1[i]; S1[i] = S1[j1]; S1[j1] = temp; int z1 = S2[(S1[i] + S1[j1]) % 256]; int cipher1 = (int)plteks[pl] ^ z1; j2 = (j2 + S2[i]) % 256; int temp1 = S2[i]; S2[i] = S2[j2]; S2[j2] = temp1; int z2 = S1[(S2[i] + S2[j2]) % 256]; int cipher2 = cipher1 ^ z2; cip.add(cipher2); cipherst.append(convert.tochar(cipher2)); return cipherst.tostring();
A-3 C 2. Kode Program MD5 using System; using System.Text; using System.Diagnostics; namespace Sistem public class MD5 private static int[] S = 7, 12, 17, 22, 5, 9, 14, 20, 4,11, 16, 23, 6, 10, 15, 21; private static int[] Tabel_T = new int[64]; private static void tabel() //pembuatan tabel T[i] unchecked for (int i = 0; i < 64; i++) Tabel_T[i] = (int) (long) ((1L << 32) * Math.Abs( Math.Sin(i + 1))); private static int BUFF_A; private static int BUFF_B; private static int BUFF_C; private static int BUFF_D; public byte[] GetMd5(byte[] input) unchecked tabel(); BUFF_A = 0x67452301; BUFF_B = (int) 0xEFCDAB89L; BUFF_C = (int) 0x98BADCFEL; BUFF_D = 0x10325476; //perhitungan jumlah blok dan panjang pesan int pesanbyte = input.length; int block = (int)((uint)(pesanbyte + 8) >> 6) + 1; int jumlah = block << 6; byte[] padding = new byte[jumlah - pesanbyte]; padding[0] = (byte) 0x80; long pesanbit = (long) pesanbyte << 3; //representasi panjang pesan asli for (int i = 0; i < 8; i++) padding[padding.length - 8 + i] = (byte) pesanbit; pesanbit = (int)((uint)pesanbit >> 8); int a = BUFF_A; int b = BUFF_B; int c = BUFF_C; int d = BUFF_D; int[] buffer = new int[16];
A-4 D for(int i = 0; i < block; i++) int index = i << 6; for(int j = 0; j < 64; j++, index++) buffer[(int)((uint)j >> 2)] = ((int) ((index < pesanbyte)? input [index] : padding[index - pesanbyte]) << 24) (int)((uint)buffer [(int)((uint)j >> 2)] >> 8); int A = a; int B = b; int C = c; int D = d; for (int j = 0; j < 64; j++) int fungsi = (int)((uint)j >> 4); int f = 0; int bufferindex = j; switch (fungsi) case 0 : f = (b & c) (~b & d); case 1 : f = (b & d) (c & ~d); bufferindex = (bufferindex * 5 + 1) & 0x0F; case 2 : f = b ^ c ^ d; bufferindex = (bufferindex * 3 + 5) & 0x0F; case 3 : f = c ^ (b ~d); bufferindex = (bufferindex * 7) & 0x0F; int temp = RotateLeft(a + f + buffer[bufferindex] << 2) (j & 3)] ); + Tabel_T[j], S[(fungsi a = d; d = c; c = b; b = b + temp; a += A; b += B; c += C; d += D; //proses low-order byte[] md5 = new byte[16]; int plus = 0;
A-5 E for (int i = 0; i < 4; i++) int n = (i == 0)? a : ((i == 1)? b : ((i == 2)? c : d)); for (int j = 0; j < 4; j++) md5[plus++] = (byte) n; n = (int)((uint) n >> 8); return md5; public String tohexstring(byte[] hex) StringBuilder sb = new StringBuilder(); for(int i = 0; i < hex.length; i++) sb.append((hex[i] & 0xFF).ToString("X2")); return sb.tostring(); static int RotateLeft(int value, int shift) unchecked uint uvalue = (uint) value; uint uresult = (uvalue << shift) (uvalue >> 32 - shift); return (int) uresult;
B-1 CURRICULUM VITAE 1. Biodata Nama : Nur Hayati Alamat Sekarang : Jln. Dr. Mansyur Gg. Sipirok No. 16H Medan Alamat Orang Tua : Jln. ST. Mhd. Arief Gg.Lurah Padangsidimpuan Telp/ Hp : 085658090062 Email : n3rhayati@gmail.com 2. Riwayat Pendidikan 2012 2016 : S1 Ilmu Komputer 2009 2012 : SMA Negeri 1 Padangsidimpuan 2006 2009 : SMP Negeri 1 Padangsidimpuan 2000 2006 : SD Negeri 200117 Padangsidimpuan 3. Keahlian Bahasa Pemrograman Database Perkantoran : Indonesia, Inggris : C#, Pascal, C++ : MySql : Microsoft Office 4. Kursus yang Diikuti 2016 : Les Bahasa Inggris di Briton 5. Pengalaman Organisasi [2014 Sekarang] : Anggota Ilmu Komputer Laboratory Center (IKLC)
B-2 7 6. Pengalaman Kerja [2014 Sekarang] : Asisten Ilmu Komputer Laboratory Center (IKLC) 7. Seminar [2014] : Seminar Nasional Literasi Informasi SENARAI [2014] : Seminar Internasional Young People of Character-The Hope of the Future