Laporan Program Rot-13 Dengan c++

Embed Size (px)

DESCRIPTION

ROT13 dengan C++ (CFree)

Citation preview

LAPORAN PROGRAM ROT-13 dengan C++Disusun Untuk Memenuhi Tugas Mata Kuliah Keamanan KomputerDosen Pengampu : Bambang Sugiantoro

Oleh:TONY GUNAWAN11650009IQBAL Z A11650010ARIS HIDAYAT11650014PRASDIKA FBS116500IHDA A F116500

TEKNIK INFORMATIKAFAKULTAS SAINS DAN TEKNOLOGIUNIVERSITAS ISLAM NEGERI SUNAN KALIJAGA YOGYAKARTA2014PEMBAHASAN

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 kasus private key cryptography) atau dengan kunci yang berbeda (untuk kasus public key 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:

Contoh :

abcdefghijklmnopqrstuvwxyzNOPQRSTUVWXYZABCDEFGHIJKLM

ahanunantnag

balkonyxbarone

barfonesbeor

binovaebbsroof

envyrailerre

errsreefflapsync

furshegeltry

gnattangirkvex

clerkpyrexpurelycheryl

PNGcatSHAfun

furbysheolterragreen

whatJungURLhey

purpuraChechenshoneFUBAR

AresNerfabjurernowhere

Penggunaannya Seperti Tabel Di Samping

SOURCE CODE/* Rot13 Encrypter/Decrypter */

#define _WIN32_WINNT 0x501#define WIN32_LEAN_AND_MEAN#include #include #include #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; /* handle untuk Window */ MSG messages; /* message / pesan */ WNDCLASSEX wincl; /* struktur DAta untuk class win */ DWORD dwExStyle; HDC hdc;

g_hInst = hThisInstance;

/*InitCommonControls();*/

ZeroMemory(&messages, sizeof(MSG)); ZeroMemory(&wincl, sizeof(WNDCLASSEX));

/* The Window structure */ wincl.hInstance = hThisInstance; wincl.lpszClassName = szClassName; wincl.lpfnWndProc = WindowProcedure; /* Fungsi yang di panggil windows */ wincl.style = CS_DBLCLKS; /* double-clicks */ wincl.cbSize = sizeof (WNDCLASSEX);

/* 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, /* nama Class */ TEXT("Rot13 "), /* Judul */ WS_OVERLAPPEDWINDOW | WS_CLIPCHILDREN, CW_USEDEFAULT, /* Windows decides the position */ CW_USEDEFAULT, /* where the window ends up on the screen */ 400, /* lebar layar program */ 430, /* Tinggi */ HWND_DESKTOP, /* The window is a child-window to desktop */ NULL, hThisInstance, NULL );

if(!hwnd) return -1;

/* Terlihat di layar */ ShowWindow (hwnd, nCmdShow);

/* 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) /* penanganan msg */ { case WM_CREATE: { HWND hChild;

// Membuat kotak edit dan output kotak edit for(int i=0; iptMinTrackSize.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