Dalam post kali ini saya akan membahas implementasi enkripsi dan dekripsi pada pascal. Sebelumnya saya juga akan menguraikan secara singkat tentang penggunaan keduanya, juga tentang sumber ilmu yang menaungi keduanya.. :)
kriptografi
Ilmu kriptografi adalah ilmu yang mempelajari tentang penyembunyian huruf atau tulisan sehingga membuat tulisan tersebut tidak dapat dibaca oleh orang yang tidak berkepentingan.
Singkat cerita.. kriptografi dibagi atas dua sistem dasar, yaitu:
SISTEM KRIPTOGRAFI SIMETRIK
Simetrik artinya sama, yaitu dalam simetrik kunci yang digunakan adalah sama, si pengirim dan si penerima harus sama – sama saling mengetahui, dan itu artinya bawa sistem ini hanya menggunakan satu kunci saja.
SISTEM KRIPTOGRAFI ASIMETRIK
Sistem kriptografi asimetrik, prinsipnya setiap user mempunyai dua kunci yaitu public key dan private key. Kunci public bisa diketahui oleh siapapun, dan digunakan untuk mengenkripsi berita dan memverifikasi tanda tangan (digital signature).
Sedangkan kunci privat hanya diketahui oleh penerima, digunakan untuk mendeskripsi berita dan membuat tanda tangan. Dalam sistem asimetrik ini dapat menggunakan aplikasi dari Teori Bilanagn dan fungsi matematika yang mudah dihitunng sedangkan fungsi balikannya sulit dihitung.
Gambar Enkripsi-dekripsi Kunci Simetrik
Gambar Enkripsi Kunci Asimetrik
Nah dari uraian singkat diatas, kita dapat mengimplementasikannya ke dalam pascal. Pada implementasi ini algoritma yang dipakai adalah algoritma Caesar.
program caesar;
uses crt;
label 10;
var
uses crt;
label 10;
var
judul,kalimat:string;
baru:array[1..100] of char;
pil,i,geser,b:integer;
skalimat:char;
begin
repeat
clrscr;
gotoxy(1,23);
write('');
gotoxy(1,24);
write('');
judul:='Program Enkripsi Deskripsi';
gotoxy(52-length(judul),2);
write(judul);
gotoxy(30,4);
for i := 30 to 49 do
begin
write('-');
end;
gotoxy(30,5);
writeln('1. Enkripsi Tulisan.');
gotoxy(30,6);
writeln('2. Dekripsi Tulisan.');
gotoxy(30,7);
Writeln('3. Exit');
gotoxy(30,8);
for i := 30 to 49 do
begin
write('-');
end;
gotoxy(1,10);
write('Masukkan pilihan anda : ');readln(pil);
if pil = 1 then
begin
write('Masukkan kalimat yang ingin di geser : ');readln(kalimat);
write('Masukkan banyaknya pergeseran (dalam angka) : ');readln(geser);
for i := 1 to length(kalimat) do
begin
while geser > 26 do
begin
geser:=geser - 26;
end;
skalimat := upcase(kalimat[i]);
if ord(skalimat) = 32 then
begin
b := 32;
end
else
b := ord(skalimat) + geser;
if b > 90 then
begin
b:=64+(b-90);
end;
baru[i] := chr(b);
end;
write('Hasilnya adalah : ');
for i := 1 to length(kalimat) do
begin
write(baru[i]);
end;
readkey;
end;
if pil = 2 then
begin
write('Masukkan kalimat yang ingin di geser : ');readln(kalimat);
write('Masukkan banyaknya pergeseran (dalam angka) : ');readln(geser);
for i := 1 to length(kalimat) do
begin
while geser > 26 do
begin
geser:=geser - 26;
end;
skalimat := upcase(kalimat[i]);
if ord(skalimat) = 32 then
begin
b := 32;
goto 10;
end
else
b := ord(skalimat) - geser;
if b < 65 then
begin
b:=90-(64-b);
end;
10:
baru[i] := chr(b);
end;
write('Hasilnya adalah : ');
for i := 1 to length(kalimat) do
begin
write(baru[i]);
end;
readkey;
end;
until pil = 3;
end.
baru:array[1..100] of char;
pil,i,geser,b:integer;
skalimat:char;
begin
repeat
clrscr;
gotoxy(1,23);
write('');
gotoxy(1,24);
write('');
judul:='Program Enkripsi Deskripsi';
gotoxy(52-length(judul),2);
write(judul);
gotoxy(30,4);
for i := 30 to 49 do
begin
write('-');
end;
gotoxy(30,5);
writeln('1. Enkripsi Tulisan.');
gotoxy(30,6);
writeln('2. Dekripsi Tulisan.');
gotoxy(30,7);
Writeln('3. Exit');
gotoxy(30,8);
for i := 30 to 49 do
begin
write('-');
end;
gotoxy(1,10);
write('Masukkan pilihan anda : ');readln(pil);
if pil = 1 then
begin
write('Masukkan kalimat yang ingin di geser : ');readln(kalimat);
write('Masukkan banyaknya pergeseran (dalam angka) : ');readln(geser);
for i := 1 to length(kalimat) do
begin
while geser > 26 do
begin
geser:=geser - 26;
end;
skalimat := upcase(kalimat[i]);
if ord(skalimat) = 32 then
begin
b := 32;
end
else
b := ord(skalimat) + geser;
if b > 90 then
begin
b:=64+(b-90);
end;
baru[i] := chr(b);
end;
write('Hasilnya adalah : ');
for i := 1 to length(kalimat) do
begin
write(baru[i]);
end;
readkey;
end;
if pil = 2 then
begin
write('Masukkan kalimat yang ingin di geser : ');readln(kalimat);
write('Masukkan banyaknya pergeseran (dalam angka) : ');readln(geser);
for i := 1 to length(kalimat) do
begin
while geser > 26 do
begin
geser:=geser - 26;
end;
skalimat := upcase(kalimat[i]);
if ord(skalimat) = 32 then
begin
b := 32;
goto 10;
end
else
b := ord(skalimat) - geser;
if b < 65 then
begin
b:=90-(64-b);
end;
10:
baru[i] := chr(b);
end;
write('Hasilnya adalah : ');
for i := 1 to length(kalimat) do
begin
write(baru[i]);
end;
readkey;
end;
until pil = 3;
end.
Uraian program kriptografi diatas
Pertamamasukkan pilihan menu yang akan dipilih, misalnya menu (1) enkripsi tulisan. Kemudian masukkan kalimat atau kata yang akan dienkripsi contoh disini adalah kata ‘tina’. Kemuadian masukkan banyaknya pergeseran yang akan dilakukan (dalam angka), misalnya: 2. Maka huruf pertama dari kata ‘tina’ yaitu ‘t’ akan digeser ke belakang 2 kali sesuai abjad dari ‘t’ menjadi ‘v’ dan begitu pula huruf lainnya:
- ‘i’ menjadi ‘k’
- ‘n’ menjadi ‘p’
- ‘a’ menjadi ‘c’
Jika memilih menu (2) deskripsi tulisan. Kemudian masukkan kalimat atau kata yang akan di deskripsi contoh disini adalah kata ‘tina’. Kemuadian masukkan banyaknya pergeseran yang akan dilakukan (dalam angka), misalnya: 2. Maka huruf pertama dari kata ‘tina’ yaitu ‘t’ akan digeser ke depan 2 kali sesuai abjad dari ‘t’ menjadi ‘r’ dan begitu pula huruf lainnya:
- ‘i’ menjadi ‘g’
- ‘n’ menjadi ‘l’
- ‘a’ menjadi ‘y’
Smoga Bermanfaat yaa... sampai jumpa di post berikutnya..
*jika ada umur panjang dan waktu kosong, saya akan membagi apa yang saya buat dalam TA saya. sekian & terima kasih untuk mampir..^^
1 komentar:
thank's, very useful to me :)
Posting Komentar