Anda di halaman 1dari 11

Program Enkripsi dan Dekripsi

Struktur Data dan Algoritma

Dosen Pengampu :

Dr. Wiranto, M.Kom, MCs.

Disusun Oleh :

Dzaky Muhammad Zidane (L0122048)

PROGRAM STUDI INFORMATIKA FAKULTAS


TEKNOLOGI INFORMASI DAN SAINS DATA
UNIVERSITAS SEBELAS MARET 2023
BAB I
PENDAHULUAN

Enkripsi dan dekripsi adalah hal yang penting dalam dunia komputer dan keamanan
informasi. Dalam pengembangan program, terdapat berbagai metode enkripsi dan dekripsi
yang dapat digunakan untuk menjaga kerahasiaan data. Salah satu metode sederhana yang
dapat digunakan adalah dengan menggeser karakter menurut urutan ASCII. Metode ini
memanfaatkan kode ASCII untuk mengubah karakter menjadi nilai numerik, kemudian nilai
numerik tersebut diubah dengan menggeser ke kiri atau ke kanan sesuai dengan aturan yang
telah ditentukan.
Dalam laporan ini, akan dijelaskan tentang pembuatan program enkripsi dan dekripsi
sederhana dengan menggunakan bahasa pemrograman C. Program ini bekerja dengan
mengubah nilai ASCII dari setiap karakter huruf dalam file dengan cara menggeser nilai
tersebut sejauh key yang dimasukkan oleh pengguna. Program ini dapat dijalankan melalui
command-line atau terminal dan akan mengambil input dan output dalam format file dengan
ekstensi .txt.
BAB II
PEMBAHASAN

A. Full Source Code


#include <stdio.h>
#include <stdlib.h>

int main() {
FILE *fpIn, *fpOut;
char fileName[100], ch;
int key, option;
//mendeklarasikan nama2 variable yang akan digunakan

printf("=====================================\nEncrypton & Decryption


Program\n");
printf("=====================================\n");
printf("Input 1 for encryption\nInput 2 for decryption\nYour choice : ");
scanf("%d", &option);
printf("=====================================\n");

switch (option)//untuk memilih opsi antara enkripsi dan dekripsi


{
case 1://opsi 1 untuk enkripsi
printf("Enter name of file to encrypt: ");
scanf("%s", fileName);//menginput nama file dan menyimpan dengan
nama variabel fileName
printf("Enter the number of letter shifts for encryption: ");
scanf("%d", &key);

fpIn = fopen(fileName, "r");//mengopen file yang diinput dan


memberi akses read(baca)
if (fpIn == NULL) {
printf("Error opening file.\n");
exit(1);//mengeprint teks errordan mengakhiri program apabila
file tidak ada
}

fpOut = fopen("encrypted.txt", "w");//membuat file output dengan


nama encrypted.txt dan memberi akses write(tulis) pada file tersebut
if (fpOut == NULL) {
printf("Error creating file.\n");
exit(1);//mengeprint teks error dan mengakhiri program apabila
terjadi problem saat membuat file
}
while ((ch = fgetc(fpIn)) != EOF) //menjalankan perintah di
dalamnya selama belum end of file
{
if (ch >= 'a' && ch <= 'z')//membatasi perubahan hanya untuk
huruf alpabet
{
ch = (ch - 'a' + key) % 26 + 'a';//Rumus pergeseran huruf
} else if (ch >= 'A' && ch <= 'Z')//membatasi perubahan hanya
untuk huruf alpabet(kapital)
{
ch = (ch - 'A' + key) % 26 + 'A';//Rumus pergeseran
huruf(kapital)
}
fputc(ch, fpOut);//perintah untuk menginput karakter yang
telah dienkripsi
}

fclose(fpIn);//menutup file input


fclose(fpOut);//menutup file output

printf("Encryption complete.\n");
break;//mengakhiri program

case 2://opsi 1 untuk dekripsi


printf("Enter name of file to decrypt: ");
scanf("%s", fileName);//menginput nama file dan menyimpan dengan
nama variabel fileName
printf("Enter the number of letter shifts for decryption: ");
scanf("%d", &key);

fpIn = fopen(fileName, "r");//mengopen file yang diinput dan


memberi akses read(baca)
if (fpIn == NULL) {
printf("Error opening file.\n");
exit(1);//mengeprint teks error dan mengakhiri program apabila
file tidak ada
}

fpOut = fopen("decrypted.txt", "w");//membuat file output dengan


nama decrypted.txt dan memberi akses write(tulis) pada file tersebut
if (fpOut == NULL) {
printf("Error creating file.\n");
exit(1);//mengeprint teks error dan mengakhiri program apabila
terjadi problem saat membuat file
}

while ((ch = fgetc(fpIn)) != EOF) //menjalankan perintah didalmnya


selama belum end of file
{
if (ch >= 'a' && ch <= 'z')//membatasi perubahan hanya untuk
huruf alpabet saja
{
ch = (ch - 'a' - key + 26) % 26 + 'a';//Rumus pergeseran
huruf
} else if (ch >= 'A' && ch <= 'Z') //membatasi perubahan hanya
untuk huruf alpabet(kapital) saja
{
ch = (ch - 'A' - key + 26) % 26 + 'A';//Rumus pergeseran
huruf(kapital)
}
fputc(ch, fpOut);//perintah untuk menginput karakter yang
telah dienkripsi
}

fclose(fpIn);//menutup file input


fclose(fpOut);//menutup file output

printf("Decryption complete.\n");
break;//mengakhiri program

default://Mngeprint notif invalid dan mengakhiri program apabila input


yang dimasukkan bukan angka 1 atau 2
printf("Invalid option. Please enter 1 or 2.\n");
break;
}

return 0;
}

B. Analisis Code

#include <stdio.h>
#include <stdlib.h>

1. #include <stdio.h> dan #include <stdlib.h> adalah header file yang digunakan untuk
memberikan akses ke fungsi-fungsi standar C, seperti fungsi untuk membuka, membaca,
menulis, dan menutup file, serta fungsi exit() untuk keluar dari program.

int main() {
FILE *fpIn, *fpOut;
char fileName[100], ch;
int key, option;
//mendeklarasikan nama2 variable yang akan digunakan
printf("=====================================\nEncrypton & Decryption
Program\n");
printf("=====================================\n");
printf("Input 1 for encryption\nInput 2 for decryption\nYour choice : ");
scanf("%d", &option);
printf("=====================================\n");

switch (option)//untuk memilih opsi antara enkripsi dan dekripsi

2. Pada kode tersebut, terdapat deklarasi dua file pointer (fpIn dan fpOut) yang akan
digunakan untuk membuka file. Selain itu, ada juga deklarasi beberapa variabel lainnya,
yaitu fileName, ch, key, dan option.
Setelah itu, program akan menampilkan pesan kepada pengguna untuk memilih opsi
yang akan dilakukan, apakah untuk melakukan enkripsi atau dekripsi. Pesan tersebut
akan ditampilkan dengan menggunakan printf().
Terakhir, program akan meminta input dari pengguna mengenai pilihan opsi dengan
menggunakan scanf(). Opsi yang dimasukkan oleh pengguna akan disimpan dalam
variabel "option".
Lalu function switch() akan memilih code yang harus dijalankan sesuai perintah user.
Output :

case 1://opsi 1 untuk enkripsi


printf("Enter name of file to encrypt: ");
scanf("%s", fileName);//menginput nama file dan menyimpan dengan
nama variabel fileName
printf("Enter the number of letter shifts for encryption: ");
scanf("%d", &key);

fpIn = fopen(fileName, "r");//mengopen file yang diinput dan


memberi akses read(baca)
if (fpIn == NULL) {
printf("Error opening file.\n");
exit(1);//mengeprint teks errordan mengakhiri program apabila
file tidak ada
}

fpOut = fopen("encrypted.txt", "w");//membuat file output dengan


nama encrypted.txt dan memberi akses write(tulis) pada file tersebut
if (fpOut == NULL) {
printf("Error creating file.\n");
exit(1);//mengeprint teks error dan mengakhiri program apabila
terjadi problem saat membuat file
}

while ((ch = fgetc(fpIn)) != EOF) //menjalankan perintah di


dalamnya selama belum end of file
{
if (ch >= 'a' && ch <= 'z')//membatasi perubahan hanya untuk
huruf alpabet
{
ch = (ch - 'a' + key) % 26 + 'a';//Rumus pergeseran huruf
} else if (ch >= 'A' && ch <= 'Z')//membatasi perubahan hanya
untuk huruf alpabet(kapital)
{
ch = (ch - 'A' + key) % 26 + 'A';//Rumus pergeseran
huruf(kapital)
}
fputc(ch, fpOut);//perintah untuk menginput karakter yang
telah dienkripsi
}

fclose(fpIn);//menutup file input


fclose(fpOut);//menutup file output

printf("Encryption complete.\n");
break;//mengakhiri program
3. Bagian tersebut adalah code yang dijalankan apabila user menginput opsi 1 yaitu
enkripsi
Code tersebut terdiri dari beberapa langkah, yaitu:
- Meminta pengguna untuk memasukkan nama file yang akan dienkripsi dan jumlah
pergeseran huruf yang digunakan untuk enkripsi.
- Membuka file input dengan nama file yang diinputkan oleh pengguna dan
memberikan akses untuk membaca file tersebut.
- Membuat file output dengan nama "encrypted.txt" dan memberikan akses untuk
menulis pada file tersebut.
- Membaca karakter dari file input satu per satu sampai end of file (EOF) ditemukan.
- Jika karakter merupakan huruf alpabet kecil, maka dilakukan pergeseran huruf
sesuai jumlah pergeseran yang telah dimasukkan oleh pengguna.
- Jika karakter merupakan huruf alpabet besar, maka juga dilakukan pergeseran huruf
sesuai jumlah pergeseran yang telah dimasukkan oleh pengguna.
- Setiap karakter yang telah dienkripsi kemudian dituliskan pada file output.
- Setelah selesai membaca dan mengenkripsi semua karakter dari file input, kedua file
input dan output ditutup.
- Program mengakhiri proses dan mencetak teks "Encryption complete." pada layar.
Output :

case 2://opsi 1 untuk dekripsi


printf("Enter name of file to decrypt: ");
scanf("%s", fileName);//menginput nama file dan menyimpan dengan
nama variabel fileName
printf("Enter the number of letter shifts for decryption: ");
scanf("%d", &key);

fpIn = fopen(fileName, "r");//mengopen file yang diinput dan


memberi akses read(baca)
if (fpIn == NULL) {
printf("Error opening file.\n");
exit(1);//mengeprint teks error dan mengakhiri program apabila
file tidak ada
}

fpOut = fopen("decrypted.txt", "w");//membuat file output dengan


nama decrypted.txt dan memberi akses write(tulis) pada file tersebut
if (fpOut == NULL) {
printf("Error creating file.\n");
exit(1);//mengeprint teks error dan mengakhiri program apabila
terjadi problem saat membuat file
}

while ((ch = fgetc(fpIn)) != EOF) //menjalankan perintah didalmnya


selama belum end of file
{
if (ch >= 'a' && ch <= 'z')//membatasi perubahan hanya untuk
huruf alpabet saja
{
ch = (ch - 'a' - key + 26) % 26 + 'a';//Rumus pergeseran
huruf
} else if (ch >= 'A' && ch <= 'Z') //membatasi perubahan hanya
untuk huruf alpabet(kapital) saja
{
ch = (ch - 'A' - key + 26) % 26 + 'A';//Rumus pergeseran
huruf(kapital)
}
fputc(ch, fpOut);//perintah untuk menginput karakter yang
telah dienkripsi
}

fclose(fpIn);//menutup file input


fclose(fpOut);//menutup file output

printf("Decryption complete.\n");
break;//mengakhiri program
4. Bagian tersebut adalah code yang dijalankan apabila user menginput opsi 2 yaitu
dekripsi. Bagian ini hampir sama dengan sebelumnya, hanya saja rumus untuk
penggeseran huruf berbeda.
Langkah-langkah yang ada pada code tersebut hampir sama seperti opsi 1 yaitu :
- Meminta pengguna untuk memasukkan nama file yang akan didekripsi dan jumlah
pergeseran huruf yang digunakan untuk dekripsi.
- Membuka file input dengan nama file yang diinputkan oleh pengguna dan
memberikan akses untuk membaca file tersebut.
- Membuat file output dengan nama "decrypted.txt" dan memberikan akses untuk
menulis pada file tersebut.
- Membaca karakter dari file input satu per satu sampai end of file (EOF) ditemukan.
- Jika karakter merupakan huruf alpabet kecil, maka dilakukan pergeseran huruf
sesuai jumlah pergeseran yang telah dimasukkan oleh pengguna.
- Jika karakter merupakan huruf alpabet besar, maka juga dilakukan pergeseran huruf
sesuai jumlah pergeseran yang telah dimasukkan oleh pengguna.
- Setiap karakter yang telah didekripsi kemudian dituliskan pada file output.
- Setelah selesai membaca dan mengenkripsi semua karakter dari file input, kedua file
input dan output ditutup.
- Program mengakhiri proses dan mencetak teks "Decryption complete." pada layar.
Output :

default://Mngeprint notif invalid dan mengakhiri program apabila input yang


dimasukkan bukan angka 1 atau 2
printf("Invalid option. Please enter 1 or 2.\n");
break;
5. Bagian ini adalah kode yang dijalankan apabila user memilih option selain pilihan yang
disediakan. Program akan berhenti apabila yang diinput bukan angka 1 maupun 2.
6. Bagian ini adalah isi dari teks yang akan dienkripsi. Nama filenya adalah “asal.txt”.

7. Bagian ini adalah isi dari teks “asal.txt” yang telah dienkripsi. Pergeseran enkripsi yang
diinput adalah 3 sehingga bergeser sebanyak +3 (huruf dari teks awal bergeser 3 ke
kanan, misal ‘a’ bergeser 3 menjadi ‘d’, dst). Nama filenya adalah “encrypted.txt”

8. Bagian ini adalah isi dari teks “encrypted.txt” yang telah didekripsi. Pergeseran dekripsi
yang diinputkan adalah 3 sehingga bergeser sebanyak -3 (huruf dari teks awal bergeser
3 ke kiri, misal ‘z’ bergeser 3 menjadi ‘w’). nama filenya adalah “decrypted.txt”.

C. Kekurangan Program
1. Hanya file berekstensi .txt yang dapat di enkripsi dan dekripsi, apabila file lain akan ada
error dan bug
2. Hanya bisa menghasilkan output file berekstensi .txt
3. Program hanya dapat mengenkripsi dan dekripsi karakter berupa huruf atau alpabet
mulai dari a hingga z baik lower-case maupun upper-case. Untuk karakter lain seperti
angka dan tanda baca tidak akan bisa terenkripsi maupun dekripsi
BAB III
PENUTUP

A. Kesimpulan
Program ini adalah sebuah program sederhana yang dapat melakukan enkripsi dan
dekripsi pada file yang berformat .txt. Program ini ditulis menggunakan bahasa
pemrograman C dan mengimplementasikan metode enkripsi dan dekripsi dengan cara
menggeser nilai ASCII dari setiap karakter huruf alfabet dalam file sebanyak pergeseran
yang dimasukkan oleh pengguna. Apabila user memilih opsi 1 maka maka akan masuk ke
dalam program enkripsi sedangkan untuk opsi 2 akan masuk ke dalam program dekripsi.
Program enkripsi akan menghasilkan file .txt bernama “encrypted.txt” dan berisi huruf dari
file awal yang telah digeser sesuai nilai yang diinput. Untuk program dekripsi akan
menghasilkan file .txt bernama “decrypted.txt” yang merupakan pengembalian file
“encrypted.txt” ke bentuk awal apabila diinput nilai geser sesuai nilai enkripsi sebelumnya.

Anda mungkin juga menyukai