Pada kesempatan kali ini ane akan share hasil tugas akhir buat mata kuliah Algoritma dan Pemrograman. Tugas Akhir ane ini tentang Enkripsi Dekripsi pake teknik caesar, yang intinya itu menggeser geser... langsung saja penjelasannya cekidot :D
Enkripsi
ialah proses mengamankan suatu informasi
dengan membuat informasi tersebut tidak dapat dibaca tanpa bantuan pengetahuan
khusus.
Dalam
kriptografi,
sandi Caesar, atau sandi geser, kode Caesar atau Geseran
Caesar adalah salah satu teknik enkripsi
paling sederhana dan paling terkenal. Sandi
ini termasuk sandi substitusi
dimana setiap huruf pada teks terang
(plaintext) digantikan oleh
huruf lain yang memiliki selisih posisi tertentu dalam alfabet.
Misalnya, jika menggunakan geseran 3, V
akan menjadi Y, I menjadi L, dan D menjadi G sehingga teks terang
"wiki" akan menjadi "ZLNL" pada teks tersandi.
Nama Caesar diambil dari Julius Caesar,
jenderal,
konsul,
dan diktator
Romawi
yang menggunakan sandi ini untuk berkomunikasi dengan para panglimanya.
Langkah
enkripsi oleh sandi Caesar sering dijadikan bagian dari penyandian yang lebih
rumit, seperti sandi Vigenère,
dan masih memiliki aplikasi modern pada sistem ROT13.
Pada saat ini, seperti halnya sandi substitusi alfabet tunggal lainnya, sandi
Caesar dapat dengan mudah dipecahkan dan praktis tidak memberikan kerahasiaan
bagi pemakainya.
Cara kerja
sandi ini dapat diilustrasikan dengan membariskan dua set alfabet; alfabet
sandi disusun dengan cara menggeser alfabet biasa ke kanan atau ke kiri dengan
angka tertentu (angka ini disebut kunci). Misalnya
sandi Caesar dengan kunci 3, adalah sebagai berikut:
Alfabet
Biasa: ABCDEFGHIJKLMNOPQRSTUVWXYZ
Alfabet
Sandi: DEFGHIJKLMNOPQRSTUVWXYZABC
Untuk
menyandikan sebuah pesan, cukup mencari setiap huruf yang hendak disandikan di
alfabet biasa, lalu tuliskan huruf yang sesuai pada alfabet sandi. Untuk
memecahkan sandi tersebut gunakan cara sebaliknya. Contoh penyandian sebuah
pesan adalah sebagai berikut.
teks terang: kirim pasukan ke sayap kiri
teks tersandi:
NLULP SDVXNDQ NH VDBDS NLUL
Sandi
Caesar mengganti setiap huruf di teks terang (plaintext) dengan huruf
yang berselisih angka tertentu dalam alfabet. Contoh ini menggunakan geseran
tiga, sehingga huruf B di plaintext
menjadi E di teks tersandi (ciphertext).
Sebuah cipher
adalah sebuah algoritma
untuk menampilkan enkripsi dan kebalikannya dekripsi,
serangkaian langkah yang terdefinisi yang diikuti sebagai prosedur. Alternatif
lain ialah encipherment. Informasi yang asli disebuh sebagai plaintext,
dan bentuk yang sudah dienkripsi disebut sebagai chiphertext. Pesan chipertext
berisi seluruh informasi dari pesan plaintext, tetapi tidak dalam format
yang didapat dibaca manusia ataupun komputer tanpa menggunakan mekasnisme yang
tepat untuk melakukan dekripsi.
Cipher pada biasanya memiliki parameter dari
sebagian dari informasi utama, disebut sebagai kunci. Prosedur enkripsi sangat bervariasi tergantung pada kunci yang akan
mengubah rincian dari operasi algoritma. Tanpa menggunakan kunci, chiper
tidak dapat digunakan untuk dienkirpsi ataupun didekripsi.
Penjelasan Source Code Program
#include <stdio.h>
#include <string.h>
#include <conio.h>
#include <windows.h>
#include <time.h>
#include <stdio.h>
(memasukkan), Baris-baris yang diawali # diolah oleh preprocessor
sebelum di compile. Baris-baris itu menyuruh preprocessor untuk
meng- include isi dari file stdio.h dalam program. stdio.h adalah standard
input output header file, yang mengandung informasi dan deklarasi -
deklarasi yang digunakan oleh kompilator untuk penanganan fungsi-fungsi i/o
seperti printf, scanf, dsb.
#include <string.h> string.h
adalah library yang berisi
tentang fungsi-fungsi untuk melakukan manipulasi terhadap string.
#include<conio.h>
conio.h adalah console input output suatu program, yang mengandung informasi dan
deklarasi-deklarasi yang digunakan oleh kompilator untuk penanganan
fungsi-fungsi seperti getch().
#include<windows.h> windows.h adalah
header windows spesifik file untuk bahasa pemrograman C yang berisi deklarasi untuk semua fungsi dalam Windows API, semua makro yang umum digunakan oleh programmer Windows, dan semua jenis data
yang digunakan oleh berbagai fungsi dan subsistem.
#include<time.h> time.h adalah untuk
membaca waktu yang ada di dalam komputer.
main()
{
system("COLOR B1");
int menu;
char a;
menu_awal:
system("cls");
tanggal();
printf("\n\n");
printf("\t\t\t++++++++++++++++++++++++++++++++++\n");
printf("\t\t\t+PROGRAM ENKRIPSI
DEKRIPSI CAESAR+\n");
printf("\t\t\t++++++++++++++++++++++++++++++++++\n");
printf("\n\n\n");
printf("\t\t\t For Your Secure Communication\n\n\n");
printf("MENU:\n");
printf("1. ENKRIPSI\n\n\n\n");
printf("2. DESKRIPSI\n\n\n\n");
printf("3. KELUAR\n\n");
printf("Masukan Angka untuk memilih
menu : ");
scanf("%d", &menu);
switch (menu)
{
case 1:
system("cls");
system("COLOR 74");
{
tanggal();
printf("\n\t\t\t\+++++++++++++++++\n");
printf("\t\t\t\+PROSES
ENKRIPSI+\n");
printf("\t\t\t\+++++++++++++++++\n");
char teks[100];
int i,geser;
size_t a;
fflush(stdin);
printf("\n\nMasukan Kata yang
akan di Enkripsi : ");
gets(teks);
printf("\n\nMasukan Kode Geser
: ");
scanf("%d",&geser);
a=strlen(teks);
printf("\n\n\aHasil Enkripsi :
%c");
for(i=0;i<a;i++)
{
printf("%c",teks[i]+geser);
}
getch();
printf("\n\nApakah anda ingin
kembali ke menu awal ? (Y/T) : ");
scanf("%s",&a);
a=toupper(a);
if(a == 'Y')
goto menu_awal;
if(a == 'T')
system("cls");
printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\t\t\t\t");
keluar();
exit(1);
break;
}
case 2:
system("cls");
system("COLOR 74");
{
tanggal();
printf("\n\t\t\t\++++++++++++++++++\n");
printf("\t\t\t\+PROSES
DESKRIPSI+\n");
printf("\t\t\t\++++++++++++++++++\n");
char teks[100];
int x,gser;
size_t y;
fflush(stdin);
printf("\n\nMasukan Kata Hasil
Enkripsi : ");
gets(teks);
printf("\n\nMasukan Kode Geser
: ");
scanf("%d",&gser);
y=strlen(teks);
printf("\n\n\aKata asli :
");
for(x=0;x<y;x++)
{
printf("%c",(teks[x])-gser);
}
getch();
fflush(stdin);
printf("\n\nApakah anda ingin
kembali ke menu awal ? (Y/T) : ");
scanf("%s",&a);
a=toupper(a);
if(a == 'Y')
goto menu_awal;
if(a == 'T')
system("cls");
printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\t\t\t\t");
keluar();
exit(1);
break;
}
case 3:
system("cls");
printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\t\t\t\t");
keluar();
exit(1);
break;
}
getch();
}
·
main
Merupakan
fungsi utama yang harus ada dalam setiap pemrograman menggunakan bahasa C.
·
system (“COLOR …”)
untuk memberikan warna background dan warna tulisan
pada program
·
system (“cls”)
untuk membersihkan layar dari tampilan yang sebelumnya
·
int
merupakan tipe
data untuk mendeklarasikan suatu
variable integer.
·
char
merupakan
tipe data variable karakters. Missal
untuk mendeklarasikan ch sebagai tipe karakter adalah sebagai berikut : char ch;
Dalam
C,suatu karakter mempunyai lebar
1 byte. Artinya jika anda akan mengassign variable
bertipe char yang
lebih dari 1
byte , maka
hanya karakter pertama yang akan di assign dan sisanya tidak dipakai.
·
printf
Merupakan
fungsi yang paling umum digunakan dalam menampilkan data. Berbagai jenis data
dapat ditampilkan ke layar dengan fungsi ini. Bentuk penulisan :
printf(“string kontrol”, argumen1, argumen2, …); .String kontrol dapat berupa
keterangan yang akan ditampilkan pada layar beserta penentu format, seperti %d, %f. Penentu
format dipakai untuk memberi tahu kompiler mengenai jenis data yang akan
ditampilkan Argumen
adalah data yang akan ditampilkan ke layar. Argumen ini dapatr berupa variabel,
konstanta atau ungkapan.
· scanf
Merupakan fungsi yang
dapat digunakan untuk memasukkan berbagai jenis data. Bentuk scanf ( ) sesungguhnya menyerupai
fungsi printf () yang melibatkan penentu format. Bentuk penulisan : scanf(“string kontrol”,
daftar argumen);
Hal-hal yang perlu
diperhatikan dalam pemakaian scanf yaitu :
1. scanf memberi
pergantian baris secara otomatis, artinya Anda tidak perlu memberi \n untuk
berpindah ke baris berikutnya.
2. scanf memakai
penentu format, tetapi tidak memerlukan penentu lebar field.
3. Variabel yang
dipakai di dalam scanf harus didahului dengan operator alamat (&).
·
switch
Pernyataan switch memiliki fungsi yang sama dengan
pernyataan if, yaitu pernyataan yang digunakan untuk mengecek suatu kondisi
atau keadaan kemudian mengeksekusi perintah-perintah yang terdapat didalamnya.
·
case
digunakan saat kita
menggunakan variabel Switch, sehingga jika dalam menggunakan variabel switch
tidak ada variable case, maka variable switch tidak berjalan.
·
gets
fungsinya
mirip dengan scanf, namun gets digunakan untuk membaca inputan yang berbentuk
string.
·
size_t
adalah hasil unsigned integer dari kata kunci sizeof.
·
fflush(stdin)
untuk membersihkan inputan keyboard
· strlen
untuk mengetahui panjang karakter
· for
Loop for mengijinkan inisialisasi
secara otomatis dari
instrument variable counter.
· goto
menyebabkan eksekusi
program melompat ke suatu
label dalam statemen goto.
· toupper
membuat supaya inputan karakter dibaca huruf besar
atau kecil
· if
Secara
umum bentuk statemen if adalah :
if
(condition)
{
statement block 1
}
else
{
statement block 2
}
If
dengan statemen tungga boleh tidak memakai tanda kurung kurawal. else merupakan
optional. Kondisi boleh berupa ekspresi. Jika ekspresi dievaluasi ke nilai
selain dari 0, maka blok statemen 1 akan dieksekusi; selain
itu, jika ada, bok statemen 2 akan di eksekusi, contoh :
ch
= getche();
if
(ch == 'q')
{
printf("Program Terminated");
exit(0);
}
else
proceed();
·
break
Pada
pernyataan switch telah dikenalkan perintah break yang memiliki tugas untuk
keluar dari switch apabila kondisi bernilai benar dan perintah didalam case
tersebut telah selesai diproses. selain digunakan pada switch, pernyataan break
juga bisa digunakan dalam pernyataan for, while & do-while.
·
\a
Sintaks untuk
mengeluarkan suara dari komputer.
·
\n
Merupakan sebuah bahasa C++
yang artinya memberikan perintah seberapa banyak garis baru (new line) yang
ditampilkan program.
Loading:
void keluar (void)
{
int ext;
char
klr[]="K e l u a r . . . . . . . .
. . . . . . . .";
for(ext=0;klr[ext]!=0;ext++)
{
Sleep(25);
printf("%c",klr[ext]);
}
}
Diatas merupakan sebuah fungsi untuk menampilkan suatu
string ke layar dengan cara muncul satu per satu huruf. Sehingga mirip seperti
loading.
·
void
merupakan peubah
tipe yang utamanya
di pakai untuk mendeklarasikan fungsi void
(fungsi yang tidak mengembalikan
nilai). Dia juga dapat
dipakai untuk membuat void pointers (pointer
ke void) yang secara
generic pointer dapat
menunjuk ke tipa
apapun dari object
dan menspesifikasikan daftar parameter kosong.
·
sleep
merupakan
waktu lama / jeda munculnya huruf ke layar
Tanggal:
void
tanggal()
{
time_t now;
time(&now);
printf("%.24s",ctime(&now));
}
Diatas
merupakan suatu fungsi bernama tanggal yang berguna untuk mengembalikan
tampilan tanggal pada hari itu ke dalam layar.
Buat yang pengen langsung tahu programnya, langsung aja download disini
Semoga bermanfaat ^_^
2 komentar:
ini membuat nya memakai aplikasi apa yaa kak ?
makasih sebelum nya :)
kok error ya kak ?
Posting Komentar