• Tidak ada hasil yang ditemukan

Enkripsi dan Deskripsi Dengan Menggunakan Algoritma Kriptografi RC2.

N/A
N/A
Protected

Academic year: 2017

Membagikan "Enkripsi dan Deskripsi Dengan Menggunakan Algoritma Kriptografi RC2."

Copied!
34
0
0

Teks penuh

(1)

!"# $ $

% & ' ( !"# )

(2)

-.

/

!"# +

0 &

% ' ( 0 !"# * )

& * $ *

-" * / *

(3)

& ! ,

, $+.2 . !

3 ! ( ( 1

3 ! 2 & ! 1

3 ! &+4 *

& & ( $+. 5646 . 7

7 7 4 & 7

7 # ( #

7 8 #

7 9 $ #

7 : $ #

& & (( +/!( $+.6.; .2 9

# 7 , , , 9

# 7 7 , 9

# 7 # + :

# 7 8 , <

# 7 8 7 %

# 7 8 # , $ =

# #$ >

# 8 77

# 8 7 & $ 77

# 8 # / 7#

# 8 8 + 7#

# 8 9 +* + 78

# 8 : + 79

# 8 < 3 ?/! 7:

(4)

# : - 7%

# < 7%

# < 7 $ , 7=

# < # 7>

# < 8 - #A

& & ((( ( $4+ +. ( . !+ 4( ( $+! .2, 46. , #A

8 7 $ $ #7

8 # & 6 #8

8 # 7 $ ( !"# #8

8 # # $ + $ * #9

8 # 8 $ $ , #:

8 # 8 7 $ # #%

8 # 8 # $ #%

8 # 9 $ - #>

8 # 9 7 $ $ 8A

8 # 9 # $ & 87

8 # : $ " * 87

8 # < $ / * 88

8 # % $ 89

& & (- 5 (4 $+.2 . 8<

9 7 5 $ 8<

9 7 7 5 $ 7 8<

9 7 # 5 $ # 8%

9 7 8 5 $ 8 8%

9 7 8 7 5 $ 7 8%

9 7 8 # 5 $ # 8=

9 7 9 5 $ 9 8>

9 7 9 7 $ 7 8>

9 7 9 7 $ # 8>

(5)

9 7 % 5 $ % 98

9 7 % 7$ 98

9 7 % #$ * 98

9 7 % 8$ * 99

9 7 % 9$ * 99

9 7 % :$ $ $ 1 9:

9 # 5 $ 9:

& & - ,+ ( $64 . . ! . 9%

: 7 , 9%

: # 9%

3 ! $6 , 9=

4 $(! . !$!/2! )7

(6)

2 # 7 & + <

2 # # & <

2 # 8 & + , %

2 # 9 & , %

2 # : & =

2 # < & + $ , $ >

2 # % & $ , $ >

2 8 7 $ $ #7

2 8 # $ ( !"# #8

2 8 8 $ + $ * #9

2 8 9 $ $ , #:

2 8 : $ #<

2 8 < $ #%

2 8 % $ - #=

2 8 = $ $ #>

2 8 > $ & 8A

2 8 7A $ " * 87

2 8 77 $ " * 88

2 8 7# $ $

(7)

# 7 . +* + 78

9 7 5 $ , 8:

9 # 5 $ , $ * & 8<

9 8 5 $ 6 3 " * $ * B

& , 8=

9 : 9 9 5 $ 6 3 " *

$ * B & , & ) 8=

9 : 5 $ 6 3 " * $ * B

(8)

LAMPIRAN A

LISTING PROGRAM

*Form Main Program (Program Pengaman Data) unit UMain;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Menus, StdCtrls, ComCtrls;

type

(9)

edPass: TEdit;

OpenDlgEnc: TOpenDialog; SaveDlgEnc: TSaveDialog; SaveDlgV: TSaveDialog; OpenDlgV: TOpenDialog; OpenDlgDec: TOpenDialog; SaveDlgDec: TSaveDialog; RichEdit1: TRichEdit;

procedure Exit1Click(Sender: TObject); procedure btGenClick(Sender: TObject); procedure btEncryptClick(Sender: TObject); procedure btBrowseClick(Sender: TObject); procedure btBrowse1Click(Sender: TObject); procedure btDecryptClick(Sender: TObject); procedure About1Click(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private

{ Private declarations } public

(10)

end;

var

Main: TMain;

implementation

uses RC2, RSATools, UAbout;

{$R *.dfm}

procedure TMain.Exit1Click(Sender: TObject); begin

Application.Terminate; end;

procedure TMain.btGenClick(Sender: TObject); var p : Longint; //random prime

q : Longint; //second random prime that not equal to p n : Longint; //p * q

pi : Longint; //(p - 1)(q - 1)

e : Longint; //e that relatively prime to pi but less than pi d : Longint; //d that d*e congruent to 1 mod pi

i1 : Longint; //counter

c : Longint;

temp2 : array of Longint; // temp dynamic array handler that hand selection of e temp3 : Longint;

temp4 : Longint;

temp5 : Longint; // temp handler temp6 : Longint; // temp handler 2 label lagi,ulang;

begin lagi:

p := RdmPrime; q := RdmPrime;

//Trap handler if p = q If p = q Then

GoTo lagi;

n := p * q;

(11)

PubN.Text := IntToStr(n);

//random selection of e ulang:

//select e that is prime

(12)

var slama:String;

awal,akhir,lama:TDateTime; i,d,n:Integer;

s,x:longint; begin

if edPass.Text = '' then

MessageDlg('Kata Kunci Belum Diisi',mtError,mbOKCancel,0) else

if RPlain.Text = '' then

MessageDlg('Document masih kosong',mtError,mbOKCancel,0) else

if PrivD.Text = '' then

(13)

lama:=(akhir-awal)*86000; str(lama:12:8,slama); edDuration.Text:=slama; end;

if Application.MessageBox(' Masukan Nama File Validasi dan Digital Signature' ,' Pesan' ,MB_OK) = IDOK then

begin

edPath1.Text:=OpenDlgDec.FileName; RichEdit1.Clear;

RichEdit1.Lines.LoadFromFile(OpenDlgDec.FileName); end;

edPath.Text:=OpenDlgEnc.FileName; RPlain.Clear;

RPlain.Lines.LoadFromFile(OpenDlgEnc.FileName); end;

(14)

procedure TMain.btBrowse1Click(Sender: TObject); begin

if OpenDlgDec.Execute then begin

RCipher.Clear;

RCipher.Lines.LoadFromFile(OpenDlgDec.FileName); edPath1.Text:=OpenDlgDec.FileName;

RCipher.Clear;

RCipher.Lines.LoadFromFile(OpenDlgDec.FileName); end;

awal,akhir,lama:TDateTime; i,e,n:Integer;

s,p:Longint; begin

if edPass1.Text = ' ' then

MessageDlg(' Kata Kunci Belum Diisi' ,mtError,mbOKCancel,0) else

if RCipher.Text = ' ' then

(15)
(16)

if OpenDlgEnc.Execute then begin

edPath.Text:=OpenDlgEnc.FileName; RichEdit2.Clear;

RichEdit2.Lines.LoadFromFile(OpenDlgEnc.FileName); end;

RPlain.Lines.SaveToFile(ESave.FileName); ShowMessage(' Plain Text telah disimpan dengan nama' +chr(10)+chr(13)+ESave.FileName);

RCipher.Lines.SaveToFile(ESave.FileName); ShowMessage(' Plain Text telah disimpan dengan nama' +chr(10)+chr(13)+ESave.FileName);

end; end;

end.

Listing RC2 enkripsi, dan deskripsi unit rc2;

interface

uses

Classes, Sysutils;

type

(17)

function Encrypt(Indata : RC2MsgBlock; Key : String): Rc2MsgBlock; function Decrypt(Indata : RC2MsgBlock; Key : String): Rc2MsgBlock;

implementation {$R-}{$Q-}

{$I RC2.inc}

function LRot16(a, n: word): word; begin

Result:= (a shl n) or (a shr (16-n)); end;

function RRot16(a, n: word): word; begin

Result:= (a shr n) or (a shl (16-n)); end;

Listing enkripsi

function Encrypt(Indata : RC2MsgBlock; Key : String): Rc2MsgBlock; var

i, j: longword;

w: array[0..3] of word; KeyB: array[0..127] of byte; KeyData: array[0..63] of word; size: longword;

KeyB[i]:= sBox[(KeyB[i-(size div 8)]+KeyB[i-1]) and $FF]; KeyB[0]:= sBox[KeyB[0]];

(18)

w[1]:= LRot16((w[1]+(w[2] and (not w[0]))+(w[3] and [0])+KeyData[j+1]),2); w[2]:= LRot16((w[2]+(w[3] and (not w[1]))+(w[0] and [1])+KeyData[j+2]),3); w[3]:= LRot16((w[3]+(w[0] and (not w[2]))+(w[1] and [2])+KeyData[j+3]),5); if (i= 4) or (i= 10) then

function Decrypt(Indata : RC2MsgBlock; Key : String): Rc2MsgBlock; var

i, j: longword;

w: array[0..3] of word; KeyB: array[0..127] of byte; KeyData: array[0..63] of word; size: longword;

KeyB[i]:= sBox[(KeyB[i-(size div 8)]+KeyB[i-1]) and $FF]; KeyB[0]:= sBox[KeyB[0]];

w[3]:= RRot16(w[3],5)-(w[0] and (not w[2]))-(w[1] and w[2])-KeyData[j+3]; w[2]:= RRot16(w[2],3)-(w[3] and (not w[1]))-(w[0] and w[1])-KeyData[j+2]; w[1]:= RRot16(w[1],2)-(w[2] and (not w[0]))-(w[3] and w[0])-KeyData[j+1]; w[0]:= RRot16(w[0],1)-(w[1] and (not w[3]))-(w[2] and w[3])-KeyData[j+0]; if (i= 5) or (i= 11) then

(19)

w[3]:= w[3]-KeyData[w[2] and 63];

uses SysUtils, StrUtils, IdGlobal, Math;

Function Euclid(nilai1 : Longint; nilai2 : Longint) : Longint ; Function gcd(p : longint; q : longint) : Longint;

Function RdmPrime() : Longint;

Function pangkatmod(num1 : longint;num2 : longint;num3 : longint) : longint;

implementation

(20)

end;

Function gcd(p : longint; q : longint) : Longint; var A11,B11,R11 : Longint;

label balik;

Function RdmPrime() : Longint;

(21)

iLowerBound := 30; iUpperBound := 300; Randomize;

i110:

iRandom := (Round((iUpperBound - iLowerBound + 1) * (Random(10000)/10000)) + iLowerBound);

Function pangkatmod(num1 : longint;num2 : longint;num3 : longint) : longint; var a22,b22,n22,nilaimod,nilaic,nilaid,nilaii,nilaik,naik : longint;

(22)

nilaid := (nilaid * nilaid) Mod n22;

function LRot16(X: word; c: integer): word; assembler; function RRot16(X: word; c: integer): word; assembler; function LRot32(X: dword; c: integer): dword; assembler; function RRot32(X: dword; c: integer): dword; assembler; procedure XorBlock(I1, I2, O1: PByteArray; Len: integer); procedure IncBlock(P: PByteArray; Len: integer);

function StrToDWord(s : string) : DWord; function DWordToStr(wo : DWord) : string;

implementation

function LRot16(X: word; c: integer): word; assembler; asm

mov ecx,&c mov ax,&X rol ax,cl

(23)

end;

function RRot16(X: word; c: integer): word; assembler; asm

function LRot32(X: dword; c: integer): dword; register; assembler; asm

mov ecx, edx rol eax, cl end;

function RRot32(X: dword; c: integer): dword; register; assembler; asm

mov ecx, edx ror eax, cl end;

procedure XorBlock(I1, I2, O1: PByteArray; Len: integer); var

procedure IncBlock(P: PByteArray; Len: integer); begin

Inc(P[Len-1]);

if (P[Len-1]= 0) and (Len> 1) then IncBlock(P,Len-1);

end;

(24)

cely:=Si1;

function DWordToStr(wo : DWord) : string; var vysl : string;

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls;

type

TfrmAbout = class(TForm) Panel1: TPanel;

(25)

Label4: TLabel; Label6: TLabel; Label7: TLabel; Button1: TButton;

procedure Button1Click(Sender: TObject); private

{ Private declarations } public

{ Public declarations } end;

var

frmAbout: TfrmAbout;

implementation

{$R *.dfm}

procedure TfrmAbout.Button1Click(Sender: TObject); begin

frmAbout.Close; end;

(26)

LAMPIRAN B

TAMPILAN PROGRAM PENGAMAN DATA

(27)
(28)
(29)
(30)

BAB I

PENDAHULUAN

Pada bab ini akan dijelaskan mengenai latar belakang, perumusan masalah,

tujuan, pembatasan masalah, serta sistematika penulisan laporan tugas akhir.

1.1 Latar Belakang

Pada era komunikasi sekarang ini keamanan data sangatlah diperlukan

untuk menjamin keutuhan nilai informasi yang dipertukarkan. Suatu informasi

akan berkurang nilai informasinya atau hilang nilainya apabila dalam

pengirimannya disadap atau dibajak oleh pihak yang tidak dikehendaki. Internet

sebagai salah satu media pertukaran informasi sangat rawan dalam

mempertahankan nilai suatu informasi, sehingga sangatlah penting dibutuhkannya

proteksi informasi untuk memastikan kerahasiaan (confidentiality), keutuhan

(integrity), keabsahan (authenticity), dan keaslian (originality) informasi tersebut. Salah satu cara untuk mengatasi masalah ini ialah dengan mengkodekan

informasi (data) tersebut menjadi data yang tidak bisa dibaca atau dimengerti oleh

pihak lain tetapi bisa dibaca oleh pihak pengirim dan penerima. Kriptografi adalah

metoda yang mempelajari proteksi data dengan cara mengkodekannya. Metoda

proteksi ini menggunakan berbagai teknik metoda matematis untuk

mengkodekannya. Kriptografi bisa dibagi menjadi 2 model yaitu model

pengkodean simetri dan model pengkodean publik (asimetri). Pengkodean simetri

dibagi 2 yaitu pengkodean blok dan pengkodean stream. Masing-masing model pengkodean mempunyai algoritma pengkodean lebih dari satu. Penggunaan

pengkodean simetris maupun publik mempunyai kelemahan dan keunggulan

masing-masing. Pemakaiannya tergantung dari situasinya.

Dari sekian banyak algoritma pengkodean, salah satunya yaitu algoritma

RC2 alogaritma ini merupakan salah satu generasi awal sebelum alogaritma RC4

maupun RC6, alogaritma ini bersifat simentris artinya kunci untuk mengenkripsi

(31)

2

mulai banyak ditembus oleh para hacker. RC2 dirancang oleh Ron Rivest di tahun

1987. "RC" singkatan dari "Ron's Code" atau "Rivest Cipher", RC2 akan bisa ditembus dengan 234 kali percobaan.

1.2 Identifikasi Masalah

1. Bagaimana algoritma kunci simetri dengan metoda RC2 dapat dijadikan suatu

pengaman data ?

2. Bagaimana realisasi software menggunakan metoda RC2 ?

1.3 Tujuan

1. Merealisasikan suatu software dari suatu pengamanan data dengan teknik enkripsi RC2.

1.4 Pembatasan Masalah

Menggunakan bahasa pemprograman Borland Delphi untuk membuat

program enkripsi dan dekripsi dengan algoritma RC2. Tidak membahas mengenai

transmisi data. Data masukan berupa teks dan file teks (*.txt)

1.5 Sistematika Pembahasan

BAB I PENDAHULUAN

Menjelaskan mengenai latar belakang pembuatan tugas akhir, identifikasi

masalah, tujuan, pembatasan masalah dan sistematika pembahasan.

BAB II TEORI PENUNJANG

Menjelaskan kriptografi secara umum serta algoritma-algoritma yang

menunjang pembuatan tugas akhir seperti algoritma simetrik, algoritma kunci

publik, algoritma euclidean

BAB III IMPLEMENTASI DAN REALISASI PERANGKAT LUNAK

(32)

3

BAB IV HASIL PENGAMATAN

Membahas hasil pengamatan yang diperoleh berdasarkan implementasi

dan realisasi perangkat lunak dari metode enkripsi simetris RC2

BAB V KESIMPULAN DAN SARAN

Bab ini berisi kesimpulan yang diperoleh dari hasil pengamatan dan

(33)

BAB V

KESIMPULAN DAN SARAN

5.1 KESIMPULAN

Kesimpulan dari tugas akhir adalah sebagai berikut :

1. Perangkat lunak pengaman data dengan algoritma RC2 telah berhasil

direalisasikan.

2. Pada program yang dibuat untuk enkripsi RC2 didapatkan 1 – 8 karakter

akan mejadi 8 karakter ciphertext, 9 – 16 karakter akan menjadi 16

karakter ciphertext dan seterusnya.

3. Pada algoritma RC2 besarnya secret key / password dan plaintext atau

ciphertext mempengaruhi waktu pemprosesan pada waktu enkripsi dan

dekripsi. Password semakin sedikit mempunyai pengulangan karakter atau

kata maka waktu enkripsi semakin lama

4. Perangkat lunak yang direalisasikan telah memenuhi komponen utama

kriptografi yaitu kerahasiaan, keutuhan, keaslian dan keabsahan

5.2 SARAN

Saran-saran yang dapat digunakan untuk pengembangan lebih lanjut dari

program pengaman data adalah :

1. Program perangkat lunak pengaman data dapat dikembangkan untuk

memproses data selain *.txt, misalnya data teks lainnya (*.doc, *.rtf), data

grafik (image) (*.bmp, *.jpg, *.png), data lainnya (*.exe, *.dat, *.html).

2. Kerahasiaan file bisa lebih dijaga dengan menggunakan metode kompresi

data sebelum dienkripsi sekaligus mengurangi ukuran file yang dienkripsi.

3. Nilai kunci yang lebih besar dengan jumlah bit yang lebih banyak akan

(34)

DAFTAR PUSTAKA

1.

Kahate, Atul,

Cryptography and Network Security Principles and Practice

, 3

rd

edition

, Prentice Hall, 2003.

2.

Kristianto, Andi,

Keamanan Data Pada Jaringan Komputer

, Gavamedia, 2003.

3.

Menezes, A.J,

Handbook of Applied Cryptography,

CRC Press, 1996.

4.

Rosen, Kenneth H,

Discrete Mathematics and Its Applications, 3

rd

edition

,

McGraw-Hill, 1994.

5.

Schneier, Bruce,

Applied Cryptography, second edition

, John Wiley & Sons, Inc.

1996.

6.

Stallings, William,

Cryptography and Network Security, Principles and

Practice,

Prentice Hall, 1999.

7.

Stallings, William,

Komunikasi Data Dan Komputer Dasar-Dasar Komunikasi

Data

, Salemba Teknika, 2001

8.

Stallings, William,

Komunikasi Data Dan Komputer Jaringan Komputer

,

Referensi

Dokumen terkait

Dalam algoritma mereka, sebuah stream cipher yang dapat dibuktikan keamanannya digunakan untuk memecahkan suatu pesan atas dua bagian (substream) dan masing-masing substream

Perangkat lunak kriptografi dengan Algoritma IDEA dengan menggunakan plaintext 64 bit dan kunci simetris 128 bit melalui proses enkripsi akan menghasilkan

Untuk algoritma ini, cara menyatukan bigramnya adalah dengan menyatukan huruf pertama dan terakhir dari plain teks menjadi satu bigram, dan pasangan huruf

Pada jurnal ini akan membahas teknik enkripsi dan dekripsi pada algoritma vigenere cipher berdasarkan tabel ACII menggunakan bahasa pemrograman java.. Algoritma vigenere cipher

Dari kedua algoritma tersebut, algoritma yang lebih cocok untuk diimplementasikan dalam perangkat dengan komputasi terbatas seperti ponsel Android, adalah algoritma

Adapun dalam proses Salah satu permasalahannya dalam bidang optimasi algoritma genetika ini dapat diterapkan pada berbagai bidang tertuntu didalam hal ini algoritma

Hasil pengujian untuk mengetahui kecepatan enkripsi pada dataset citra dengan ukuran 256x256 pixel menggunakan algoritma RC4 diperoleh waktu enkripsi lebih cepat

Hasil penelitian menunjukan bahwa model enkripsi menggunakan algoritma berbasis chaos yaitu kombinasi algortima Arnold cat map (ACM) dengan algoritma Logistic map