Bahan S-2

//Sayid Aidhil Putra, Nim: 127038071

//Mochammad Iswan,    Nim: 127038062

//Joko Susilo,        Nim: 127038078

//Program Kriptografi Vigenere Cipher ini dapat dijalankan di Turbo C++

//====================================================================

#include <stdio.h>

#include <conio.h>

#include <string.h>

#include <ctype.h>

//Penjelasan Sintak Functionnya

//Menu   : pilihan untuk memilih menu

//Enkrip : untuk melakukan proses enkripsi

//Dekrip : untuk melakukan proses dekripsi

//GenTab : untuk pembentukan tabel vinegere

char Menu (void);

void Enkrip (void);

void Dekrip (void);

void GenTab (void);

//penjelasan variabelnya

//plain : Untuk menyimpan plain teks

//Ciph  : Untuk menyimpan cipher teks

//Kunci : Untuk menyimpan kata kunci

//Vin   : Untuk menyimpan tabel vinegere

//pP    : Posisi karakter pada plain teks

//pC    : Posisi karakter pada cipher teks

//pK    : Posisi karakter pada kata kunci

unsigned char Plain[255];

unsigned char Ciph[255];

unsigned char Kunci[255];

int Vin[26][26];

int i, j, pP, pC, pK;

char Pilih;

void main()

{

GenTab();

Menu();

//menyeleksi pada pilihan menu

switch (Pilih)

{

case ‘1’ : Enkrip();

break;

case ‘2’ : Dekrip();

break;

}

}

char Menu ()

{

clrscr();

printf (“\nNama: Sayid Aidhil Putra, Nim: 127038071”);

printf (“\nNama: Mochammad Iswan, Nim: 127038062”);

printf (“\nNama: Joko Susilo, Nim: 127038078”);

printf (“\n\nTekan [1] Untuk Enkripsi”);

printf (“\nTekan [2] Untuk Dekripsi”);

printf (“\n\nTekan Sembarang Tombol Untuk Menutup”);

printf (“\nTekan Tombol Pilihan Anda [1] atau [2]….”);

//untuk menyimpan karakter tombol pada variabel Pilih

Pilih = getch();

return (Pilih);

}

void Enkrip()

{

clrscr();

//Menerima masukan plain teks

printf (“Plain Text : “);

scanf (“%s”, Plain);

//Menerima masukan kata kunci

printf (“Kata Kunci : “);

scanf (“%s”, Kunci);

j = 0;

printf (“Cipher Text Enkripsi : “);

//untuk melakukan perulangan sebanyak panjang plain teks

for (i=0; i <strlen(Plain); i++)

{

//untuk mengubah karakter plain teks pada posisi i menjadi huruf besar

Plain[i] = toupper(Plain[i]);

//Mengambil nilai ASCII karakter plain teks pada posisi i

pP = Plain[i];

//Cek apakah nilai ASCII berada pada range (A-Z)

if (pP >= 65 && pP <= 91)

{

//untuk mengambil nilai ASCII dari karakter kata kunci pada posisi j dalam bentuk huruf besar

//Kurangkan nilai ASCII sebelumnya dengan 65, agar berada pada range (0-25)

pK = toupper(Kunci[j])-65;

//Kurangkan nilai pP dengan 65, agar berada pada range (0-25)

//Set posisi baris dengan nilai pP

//Set posisi kolom dengan nilai pK

//Cetak karakter dalam tabel vinegere berdasarkan posisi baris dan kolom sebelumnya

printf (“%c”,Vin[pP-65][pK]);

//Cek apakah nilai j masih berada di dalam range panjang kata kunci

if (j < strlen(Kunci) – 1)

j = j + 1;

else

j = 0;

}

else

printf (“%c”,Plain[i]);

}

printf (“\n\nTekan sembarang tombol untuk kembali.”);

getch();

main();

}

void Dekrip()

{

int x,y;

clrscr();

//Menerima masukan cipher teks

printf (“Cipher Text : “);

scanf (“%s”, Ciph);

//Menerima masukan kata kunci

printf (“Kata Kunci : “);

scanf (“%s”, Kunci);

j = 0;

printf (“Hasil Dekripsi : “);

//melakukan perulangan sebanyak panjang cipher teks

for (i=0; i <strlen(Ciph); i++)

{

//Mengubah karakter cipher teks pada posisi i menjadi bentuk huruf besar

Ciph[i] = toupper(Ciph[i]);

//Mengambil nilai ASCII cipher teks pada posisi i

pC = Ciph[i];

//Cek apakah nilai ASCII berada pada range (A-Z)

if (pC >= 65 && pC <= 91)

{

//Ambil nilai ASCII dari karakter kata kunci pada posisi j dalam bentuk uppercase

//Kurangkan nilai ASCII sebelumnya dengan 65, agar berada pada range (0-25)

//Set posisi kolom dengan nilai pK

pK = toupper(Kunci[j]) – 65;

x=0;

//Perulangan sebanyak jumlah baris pada tabel vinegere

do

{

//Cek apakah karakter dalam tabel vinegere pada baris x dan kolom pK sama dengan karakter cipher teks pada posisi i

if (Vin[x][pK]==Ciph[i])

//Cetak karakter dari nilai ASCII x+65 sebagai output dekripsi

printf (“%c”,x+65);

x = x+1;

}while (x<=25);

//Cek apakah nilai j masih berada di dalam range panjang kata kunci

if (j < strlen(Kunci) – 1)

j = j + 1;

else

j = 0;

}

else

printf (“%c”,Ciph[i]);

}

printf (“\n\nTekan sembarang tombol untuk kembali.”);

getch();

main();

}

void GenTab()

{

int x;

clrscr();

j = 0;

for (i=0; i<=25;i++)

{

j = 0;

do

{

x = (i+j) % 26;

x = 65 + x;

Vin[i][j] = x;

j = j+1;

} while (j <= 25);

printf(“\n”);

}

}

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: