Anda di halaman 1dari 9

LAPORAN PROGRAM ROT-13 dengan C++

Disusun Untuk Memenuhi Tugas Mata Kuliah Keamanan Komputer Dosen Pengampu : Bambang Sugiantoro

Oleh:
TONY GUNAWAN IQBAL Z A ARIS HIDAYAT PRASDIKA FBS IHDA A F 11650009 11650010 11650014 116500 116500

TEKNIK INFORMATIKA FAKULTAS SAINS DAN TEKNOLOGI UNIVERSITAS ISLAM NEGERI SUNAN KALIJAGA YOGYAKARTA 2014

PEMBAHASAN

Enkripsi digunakan untuk menyandikan data-data atau informasi sehingga tidak dapat dibaca oleh orang yang tidak berhak. Dengan enkripsi data anda disandikan (encrypted) dengan menggunakan sebuah kunci (key). Untuk membuka (decrypt) data tersebut digunakan juga sebuah kunci yang dapat sama dengan kunci untuk mengenkripsi (untuk private key cryptography) atau dengan kunci yang berbeda (untuk cryptography). Elemen dari enskripsi di antaranya adalah algoritma enskripsi dan deskripsi, kunci yang digunakan, serta plain text dan cipher text.Algoritma yang digunakan menentukan kekuatan dari enkripsi, dan ini biasanya dibuktikan dengan basis matematika. Plain text adalah pesan atau informasi yang akan dikirimkan dalam format yang mudah dibaca atau dalam bentuk aslinya, sedangkan Cipher text adalah informasi yang sudah dienkripsi. ROT-13 merupakan substitution cipher yang masih umum digunakan di sistem UNIX. Pada sistem ini sebuah huruf digantikan dengan huruf yang letaknya 13 posisi darinya. Sebagai contoh,huruf A digantikan dengan huruf N, huruf B digantikan dengan huruf O, dan seterusnya. ROT13 tidak didisain untuk keamanan tingkat tinggi. ROT13, misalnya digunakan untuk menyelubungi isi dari artikel (posting ) di Usenet news yang berbau ofensif,Sehingga hanya orang yang betul-betul ingin membaca dapat melihat isinya.Secara sederhana berikut penggunaan algoritma ROT-13: kasus

kasus public key

Contoh :
Penggunaannya Seperti Tabel Di Samping

abcdefghijklmnopqrstuvwxyz NOPQRSTUVWXYZABCDEFGHIJKLM aha nun balk onyx barf ones bin ova envy rail errs reef fur she gnat tang clerk pyrex PNG cat furby sheol what Jung purpura Chechen Ares Nerf ant nag bar one be or ebbs roof er re flap sync gel try irk vex purely cheryl SHA fun terra green URL hey shone FUBAR abjurer nowhere

SOURCE CODE
/* Rot13 Encrypter/Decrypter */ #define _WIN32_WINNT 0x501 #define WIN32_LEAN_AND_MEAN #include <windows.h> #include <commctrl.h> #include <shlwapi.h> #include "resource.h" /* ID-ID */ #define IDC_EDT_SOURCE 101 #define IDC_EDT_OUTPUT 102 #define IDC_BTN_CRYPT 103 /* Variabel global */ HINSTANCE g_hInst = NULL; HFONT g_hFont = NULL; HFONT g_btnFont = NULL; /* Membuat class */ char szClassName[] = "Rot13 Encrypter/DecrypterClass"; /* Declare prosedur */ LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM); char* xstrchr(const char *str, char ch) { while(*str && *str != ch) str++; return (*str == ch) ? (char*)str : NULL; } char rot13c(char c) { char u[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; char l[] = "abcdefghijklmnopqrstuvwxyz"; char *p; if((p = xstrchr(u, c)) != NULL) return u[((p-u) + 13) % 26]; else if((p = xstrchr(l, c)) != NULL) return l[((p-l) + 13) % 26]; else return c; } void rot13(char* buf, char* in) { while(*in) *buf++ = rot13c(*in++); *buf = 0; } int WINAPI WinMain (HINSTANCE hThisInstance, HINSTANCE hPrevInstance, LPSTR lpszArgument, int nCmdShow) { OSVERSIONINFO lpVer;

HWND hwnd; MSG messages; WNDCLASSEX wincl; DWORD dwExStyle; HDC hdc; g_hInst = hThisInstance; /*InitCommonControls();*/

/* handle untuk Window */ /* message / pesan */ /* struktur DAta untuk class win */

ZeroMemory(&messages, sizeof(MSG)); ZeroMemory(&wincl, sizeof(WNDCLASSEX)); /* The Window structure */ wincl.hInstance = hThisInstance; wincl.lpszClassName = szClassName; wincl.lpfnWndProc = WindowProcedure; windows */ wincl.style = CS_DBLCLKS; wincl.cbSize = sizeof (WNDCLASSEX);

/* Fungsi yang di panggil /* double-clicks */

/* icon and mouse-pointer menggunakan bawaan */ wincl.hIcon = LoadIcon (hThisInstance, MAKEINTRESOURCE(IDI_MAIN)); wincl.hIconSm = (HICON)LoadImage(GetModuleHandle(NULL), MAKEINTRESOURCE(IDI_MAIN), IMAGE_ICON, 0, 0, 0); wincl.hCursor = LoadCursor (NULL, IDC_ARROW); wincl.lpszMenuName = MAKEINTRESOURCE(IDR_MENU); wincl.cbClsExtra = 0; wincl.cbWndExtra = 0; /* Background windos sebagai latar */ wincl.hbrBackground = (HBRUSH) COLOR_BACKGROUND; /* Register the window class, jika gagal program exit */ if (!RegisterClassEx (&wincl)) return 0; dwExStyle = WS_EX_APPWINDOW; /* Dapatkan Versi OS */ lpVer.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); if(GetVersionEx(&lpVer) && (lpVer.dwMajorVersion > 5 || (lpVer.dwMajorVersion == 5 && lpVer.dwMinorVersion == 1))) dwExStyle |= WS_EX_COMPOSITED; /* Pengaturan Font */ hdc = GetDC(HWND_DESKTOP); g_hFont = CreateFont(-MulDiv(9, GetDeviceCaps(hdc, LOGPIXELSY), 72), 0, 0, 0, FW_NORMAL, FALSE, FALSE, FALSE, ANSI_CHARSET, OUT_TT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, FF_DONTCARE, TEXT("Tahoma")); g_btnFont = CreateFont(-MulDiv(15, GetDeviceCaps(hdc, LOGPIXELSY), 72), 0, 0, 0, FW_NORMAL, FALSE, FALSE, FALSE, ANSI_CHARSET, OUT_TT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, FF_DONTCARE, TEXT("Times New Roman")); ReleaseDC(HWND_DESKTOP, hdc); /* The class is registered, Buat Programmnya*/ hwnd = CreateWindowEx ( dwExStyle,

szClassName, */ TEXT("Rot13 "), WS_OVERLAPPEDWINDOW | WS_CLIPCHILDREN, CW_USEDEFAULT, decides the position */ CW_USEDEFAULT, the window ends up on the screen */ 400, program */ 430, HWND_DESKTOP, window is a child-window to desktop */ NULL, hThisInstance, NULL ); if(!hwnd) return -1; /* Terlihat di layar */ ShowWindow (hwnd, nCmdShow);

/* nama Class /* Judul */ /* Windows /* where /* lebar layar /* Tinggi */ /* The

/* Jalankan perulangan msg. Ini akan berjalan sampai GetMessage ( ) return 0*/ while (GetMessage (&messages, NULL, 0, 0)) { /* Terjemahkan pesan virtual- key ke dalam pesan karakter */ TranslateMessage(&messages); /* Kirim pesan ke WindowProcedure */ DispatchMessage(&messages); } /* Program return- value 0 - Nilai yang PostQuitMessage ( ) */ return messages.wParam; } /* Fungsi ini disebut dengan fungsi Windows DispatchMessage ( ) */

LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { static HWND s_hLastFocus; switch (message) { case WM_CREATE: { HWND hChild; /* penanganan msg */

// Membuat kotak edit dan output kotak edit for(int i=0; i<2; ++i) { hChild = CreateWindowEx(WS_EX_CLIENTEDGE, WC_EDIT, NULL, ES_AUTOVSCROLL | ES_MULTILINE | ES_WANTRETURN | ES_NOHIDESEL | WS_VSCROLL | WS_CHILD | WS_TABSTOP | WS_VISIBLE, 0, 0, 0, 0, hwnd, (i == 0) ? (HMENU)IDC_EDT_SOURCE

: (HMENU)IDC_EDT_OUTPUT, g_hInst, NULL); if(!hChild) return -1; // seting font SendMessage(hChild, WM_SETFONT, (WPARAM)g_hFont, FALSE); } // Membuat tombol button hChild = CreateWindowEx(0, WC_BUTTON, TEXT("Generate"), BS_PUSHBUTTON | BS_TEXT | WS_CHILD | WS_TABSTOP | WS_VISIBLE, 0, 0, 0, 0, hwnd, (HMENU)IDC_BTN_CRYPT, g_hInst, NULL); SendMessage(hChild, WM_SETFONT, (WPARAM)g_btnFont, FALSE); } return 0; case WM_GETMINMAXINFO: { LPMINMAXINFO lpInfo = (LPMINMAXINFO)lParam; lpInfo->ptMinTrackSize.x = 400, lpInfo->ptMinTrackSize.y = 430; } return 0; case WM_WINDOWPOSCHANGING: case WM_WINDOWPOSCHANGED: { HDWP hDWP; RECT rc; if(hDWP = BeginDeferWindowPos(5)) { GetClientRect(hwnd, &rc); hDWP = DeferWindowPos(hDWP, GetDlgItem(hwnd, IDC_EDT_SOURCE), NULL, 10, 10, (rc.right - 20), 150, SWP_NOZORDER | SWP_NOREDRAW); hDWP = DeferWindowPos(hDWP, GetDlgItem(hwnd, IDC_EDT_OUTPUT), NULL, 10, (rc.bottom - 160), (rc.right - 20), 150, SWP_NOZORDER | SWP_NOREDRAW); hDWP = DeferWindowPos(hDWP, GetDlgItem(hwnd, IDC_BTN_CRYPT), NULL, 10, 168, (rc.right - 20), (rc.bottom - 335), SWP_NOZORDER | SWP_NOREDRAW); EndDeferWindowPos(hDWP); RedrawWindow(hwnd, NULL, NULL, RDW_INVALIDATE | RDW_ALLCHILDREN | RDW_ERASE | RDW_NOFRAME | RDW_UPDATENOW); } } return 0; case WM_ACTIVATE: if(LOWORD(wParam) == WA_INACTIVE)

s_hLastFocus = GetFocus(); return 0; case WM_SETFOCUS: if(s_hLastFocus) SetFocus(s_hLastFocus); return 0; case WM_COMMAND: switch(LOWORD(wParam)) { case IDR_FILE_CLEAR: { HWND hEditSource = GetDlgItem(hwnd, IDC_EDT_SOURCE); HWND hEditOutput = GetDlgItem(hwnd, IDC_EDT_OUTPUT); for(int i=0; i<2; ++i) SetWindowText((i == 0) ? hEditSource : hEditOutput, ""); } break; case IDR_FILE_QUIT: PostQuitMessage(0); break; case IDR_HELP_ABOUT: MessageBox(NULL, "Rot13 Encrypter/Decrypter by weARE\n\n" "\t2011 - Informatic Engineering", "About", MB_ICONINFORMATION); break; case IDC_BTN_CRYPT: { HWND hEditSource = GetDlgItem(hwnd, IDC_EDT_SOURCE); HWND hEditOutput = GetDlgItem(hwnd, IDC_EDT_OUTPUT); TCHAR szBuffer[MAX_PATH] = {0}, szOutput[MAX_PATH] = {0}; int len = 0; len = GetWindowTextLength(hEditSource); if(len <= 0) { MessageBox(hwnd, "Enter text to crypt", 0, MB_ICONWARNING); break; } else if(len > MAX_PATH) { MessageBox(NULL, "Query too large", 0, MB_ICONERROR); break; } GetWindowText(hEditSource, szBuffer, len + 1); /* Encrypt/Decrypt the string */

rot13(szOutput, szBuffer); /* Lihat Hasil */ SetWindowText(hEditOutput, szOutput); } break; } return 0; case WM_DESTROY: PostQuitMessage (0); */ return 0; default: /* pesan bahwa kita tidak cocok */ return DefWindowProc (hwnd, message, wParam, lParam); } return 0; } /* mengirim WM_QUIT ke antrian pesan