Enkripsi dan Deskripsi Dengan Menggunakan Algoritma Kriptografi RC2.

(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

TMain = class(TForm) MainMenu1: TMainMenu; File1: TMenuItem;

About1: TMenuItem; Exit1: TMenuItem;

PageControl1: TPageControl; TabSheet1: TTabSheet; Label1: TLabel;

Label5: TLabel; Label6: TLabel; Label7: TLabel; Label3: TLabel; Label4: TLabel; btBrowse: TButton; btGen: TButton;

GroupBox1: TGroupBox; Label8: TLabel;

Label9: TLabel; PrivD: TEdit; PrivN: TEdit;

GroupBox2: TGroupBox; Label10: TLabel;

Label11: TLabel; PubE: TEdit; PubN: TEdit; edStart: TEdit; edDuration: TEdit; edEnd: TEdit; edPath: TEdit; btEncrypt: TButton; RPlain: TRichEdit;


(9)

edPass: TEdit; TabSheet2: TTabSheet; Label12: TLabel; Label13: TLabel; Label14: TLabel; Label15: TLabel; Label16: TLabel; Label17: TLabel; edPath1: TEdit; btBrowse1: TButton; edPass1: TEdit; edStart1: TEdit; edEnd1: TEdit; edDuration1: TEdit; GroupBox3: TGroupBox; Label18: TLabel; Label19: TLabel; PubE1: TEdit; PubN1: TEdit; btDecrypt: TButton; OpenDlgEnc: TOpenDialog; SaveDlgEnc: TSaveDialog; SaveDlgV: TSaveDialog; OpenDlgV: TOpenDialog; OpenDlgDec: TOpenDialog; SaveDlgDec: TSaveDialog; RichEdit1: TRichEdit; RCipher: TRichEdit; RichEdit2: TRichEdit; Button1: TButton; ESave: TSaveDialog; Button2: TButton;

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); pi := (p - 1) * (q - 1);

//search for e c := pi - 1;

SetLength(temp2,c);

For e := 2 To (pi - 1) do begin

temp6 := gcd(pi, e); If temp6 = 1 Then begin

temp2[c] := e; c := c - 1; end; end;

//random selection of e ulang:

Randomize;

temp3 := Round((pi - 1) * (Random(10000)/10000)); temp4 := temp2[temp3];

If (temp4 = 0) Or (temp4 = Null) Then GoTo ulang;

//select e that is prime

For i1 := 2 To Round(Sqrt(temp4)) do begin

temp5 := temp4 Mod i1; If temp5 = 0 Then GoTo ulang; end;

PubE.Text := IntToStr(temp4);

//determine d such that d*e congruent 1 mod pi and d > 0, d > e d := Euclid(pi, temp4);

If d < temp4 Then GoTo ulang;

PrivD.Text := IntToStr(d); end;


(12)

var slama:String; Source,Dest:File; valid:TextFile;

Buffer: array[0..7] of byte; temp:RC2MsgBlock; Read:Integer; 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

MessageDlg('Klik dahulu Generate Key',mtError,mbOKCancel,0) else

begin

if SaveDlgEnc.Execute then begin awal:=Time; edStart.Text:=TimeToStr(awal); AssignFile(Source,edPath.Text); AssignFile(Dest,SaveDlgEnc.FileName); Reset(source,1); ReWrite(Dest,1); repeat

for i:=0 to 7 do Buffer[i]:=0;

temp[0]:=0;temp[1]:=0;

BlockRead(Source,Buffer,sizeof(Buffer),read); if read <> 0 then

begin move(Buffer,temp,read); temp:=Encrypt(temp,edPass.Text); move(temp,Buffer,sizeof(temp)); BlockWrite(Dest,Buffer,SizeOf(Buffer)); end;

until read <> sizeof(Buffer); CloseFile(Source);

CloseFile(Dest); akhir:=Time;


(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

if SaveDlgV.Execute then begin

AssignFile(Source,SaveDlgEnc.FileName); Reset(Source,1);

repeat

BlockRead(Source,Buffer,sizeof(Buffer),read); for i:=0 to 7 do

s := s xor buffer[i]; until read <> sizeof(buffer); CloseFile(Source); AssignFile(valid,SaveDlgV.FileName); Rewrite(valid); d:=StrToInt(PrivD.Text); n:=StrToInt(PrivN.Text); x:=pangkatmod(s,d,n); write(valid,inttostr(x)); CloseFile(valid); end; end; end;

if OpenDlgDec.Execute then begin edPath1.Text:=OpenDlgDec.FileName; RichEdit1.Clear; RichEdit1.Lines.LoadFromFile(OpenDlgDec.FileName); end; end;

procedure TMain.btBrowseClick(Sender: TObject); begin

if OpenDlgEnc.Execute then begin edPath.Text:=OpenDlgEnc.FileName; RPlain.Clear; RPlain.Lines.LoadFromFile(OpenDlgEnc.FileName); end; 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; end;

procedure TMain.btDecryptClick(Sender: TObject); var slama,temp1:String;

Source,Dest:File; valid:TextFile;

Buffer: array[0..7] of byte; temp:RC2MsgBlock; Read:Integer; 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

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

if (PubE1.Text = ' ' ) or (PubN1.Text = ' ' ) then

MessageDlg(' Public Key Belum Di Isi' ,mtError,mbOKCancel,0) else

begin

MessageDlg(' Buka File Validasi' ,mtInformation,mbOKCancel,0); if OpenDlgV.Execute then

begin e:=StrToInt(PubE1.Text); n:=StrToInt(PubN1.Text); AssignFile(valid,OpenDlgV.FileName); Reset(valid); Readln(valid,temp1); CloseFile(valid); AssignFile(Source,edPath1.Text); Reset(Source,1); repeat


(15)

BlockRead(Source,Buffer,sizeof(Buffer),read); for i:=0 to 7 do

s := s xor buffer[i]; until read <> sizeof(buffer); CloseFile(Source);

p:=pangkatmod(StrToInt(temp1),e,n); if p <> s then

begin

MessageDlg(' File Chipertext tidak valid proses berhenti' ,mtError,mbOKCancel,0);

exit; end else

ShowMessage(' Data Sudah Valid' ); if SaveDlgDec.Execute then

begin awal:=Time; edStart1.Text:=TimeToStr(awal); AssignFile(Source,edPath1.Text); AssignFile(Dest,SaveDlgDec.FileName); Reset(Source,1); Rewrite(Dest,1); repeat

for i:=0 to 7 do Buffer[i]:=0;

temp[0]:=0;temp[1]:=0;

BlockRead(Source,Buffer,sizeof(Buffer),read); if read <> 0 then

begin move(Buffer,temp,read); temp:=Decrypt(temp,edPass.Text); move(temp,Buffer,sizeof(temp)); BlockWrite(Dest,Buffer,read); end;

until read <> sizeof(Buffer); CloseFile(Source); CloseFile(Dest); akhir:=Time; edEnd1.Text:=TimeToStr(akhir); lama:=(akhir-awal)*86000; str(lama:12:8,slama); edDuration1.Text:=slama; end; end; end;


(16)

if OpenDlgEnc.Execute then begin

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

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

end;

procedure TMain.About1Click(Sender: TObject); begin

frmAbout.ShowModal; end;

procedure TMain.Button1Click(Sender: TObject); begin

if ESave.Execute then begin

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

end; end;

procedure TMain.Button2Click(Sender: TObject); begin

if ESave.Execute then begin

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

RC2MsgBlock = array[0..3] of word; KeyData = array[0..63] of word;


(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;

begin //Init key

size := length(key)*8;

FillChar(KeyData,Sizeof(KeyData),0); FillChar(KeyB,Sizeof(KeyB),0); for i:=1 to length(key) do

KeyB[i-1]:= ord(key[i]); for i:= (size div 8) to 127 do

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

Move(KeyB,KeyData,Sizeof(KeyData));

//Encryption

Move(InData,w,Sizeof(w)); for i:= 0 to 15 do

begin j:= i*4;


(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

begin

w[0]:= w[0]+KeyData[w[3] and 63]; w[1]:= w[1]+KeyData[w[0] and 63]; w[2]:= w[2]+KeyData[w[1] and 63]; w[3]:= w[3]+KeyData[w[2] and 63]; end;

end;

move(w,result,sizeof(w)); end;

Listing Deskripsi

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;

begin //Init key

size := length(key)*8;

FillChar(KeyData,Sizeof(KeyData),0); FillChar(KeyB,Sizeof(KeyB),0); for i:=1 to length(key) do

KeyB[i-1]:= ord(key[i]); for i:= (size div 8) to 127 do

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

Move(KeyB,KeyData,Sizeof(KeyData));

//Decryption

Move(InData,w,Sizeof(w)); for i:= 15 downto 0 do begin

j:= i*4;

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]; w[2]:= w[2]-KeyData[w[1] and 63]; w[1]:= w[1]-KeyData[w[0] and 63]; w[0]:= w[0]-KeyData[w[3] and 63]; end;

end;

move(w,result,sizeof(w)); end;

end.

Listing Alogaritma RSA unit RSATools;

interface

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

Function Euclid(nilai1 : Longint; nilai2 : Longint) : Longint ; var mex,bex,A1,A2,A3,Qex,T1,T2,T3,B1,B2,B3,hasil:Longint; label itung, selesai;

begin

mex := nilai1; bex := nilai2;

A1 := 1; B1 := 0; A2 := 0; B2 := 1; A3 := mex; B3 := bex;

itung:

if B3 = 0 then begin hasil := 0; GoTo selesai; end;

if B3 = 1 then begin

hasil := B2; GoTo selesai;


(20)

end;

Qex := A3 div B3; T1 := A1 - Qex * B1; T2 := A2 - Qex * B2; T3 := A3 - Qex * B3;

A1 := B1; B1 := T1; A2 := B2; B2 := T2; A3 := B3; B3 := T3;

GoTo itung; selesai:

Euclid := hasil; end;

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

label balik;

begin A11 := p; B11 := q;

balik:

If B11 = 0 Then gcd := A11 else

begin

R11 := A11 Mod B11; A11 := B11;

B11 := R11; GoTo balik; end;

end;

Function RdmPrime() : Longint;

var iRandom : integer; // holds random long result i2 : longint; // checkprime loop counter

temp2a : Longint; //swap var iLowerBound : Longint; iUpperBound : Longint; label i110;


(21)

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

i110:

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

//trap handler

If (iRandom = 0) Or (iRandom = 1) Then GoTo i110;

//check number

for i2:= 2 to (iRandom-1) do begin

temp2a := iRandom Mod i2; If temp2a = 0 Then

GoTo i110; end;

RdmPrime := iRandom; End;

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

barray : array of Variant; decbin : Variant;

begin

a22 := num1; b22 := num2; n22 := num3;

decbin := inttobin(b22); nilaic := 0;

nilaid := 1;

nilaik := Length(decbin); SetLength(barray,nilaik); naik := 1;

For nilaii := nilaik - 1 downto 0 do begin

barray[nilaii] := Midstr(decbin, naik, 1); naik := naik + 1;


(22)

nilaid := (nilaid * nilaid) Mod n22; If barray[nilaii] = 1 Then

begin

nilaic := nilaic + 1;

nilaid := (nilaid * a22) Mod n22; end;

end;

pangkatmod := nilaid; End;

end.

Listing Tools unit Tools;

interface uses Sysutils;

type

{$IFDEF VER120} dword= longword; {$ELSE}

dword= longint; {$ENDIF}

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

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

mov &Result,ax end;

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

i: integer; begin

for i:= 0 to Len-1 do O1[i]:= I1[i] xor I2[i]; end;

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;

function StrToDWord(s : string) : DWord; var cely : Dword;

Si1,Si2,Si3,Si4 : byte; begin

Si1:=ord(s[1]); Si2:=ord(s[2]); Si3:=ord(s[3]); Si4:=ord(s[4]);


(24)

cely:=Si1; cely:=cely shl 8; cely:=cely + Si2; cely:=cely shl 8; cely:=cely + Si3; cely:=cely shl 8; cely:=cely + Si4; StrToDWord:=cely; end;

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

rr,ll : word;

Si1,Si2,Si3,Si4 : byte; begin

rr:=(wo shl 16) shr 16; ll:=(wo shr 16); Si2:=(ll shl 8) shr 8; Si1:=(ll shr 8); Si4:=(rr shl 8) shr 8; Si3:=(rr shr 8);

vysl:=chr(Si1)+chr(Si2)+chr(Si3)+chr(Si4); DWordToStr:=vysl;

end;

end.

Listing About

unit UAbout;

interface

uses

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

type

TfrmAbout = class(TForm) Panel1: TPanel;

Label1: TLabel; Label5: TLabel; Label2: TLabel; Label3: TLabel;


(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 sama dengan kunci untuk mendekripsi alogaritma RC2 ini muncul karena saat itu


(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 saran-saran yang diajukan untuk pengembangan lebih lanjut


(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

,

Salemba Teknika, 2002.


(1)

(2)

1 Universitas Kristen Maranatha

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 sama dengan kunci untuk mendekripsi alogaritma RC2 ini muncul karena saat itu alogaritma DES yang menjadi alogaritma yang merupakan standar baku sudah


(3)

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

Dalam bab ini akan dibahas algoritma enkripsi simetris RC2 dan realisasi perangkat lunak (software) berdasarkan algoritma tersebut


(4)

Universitas Kristen Maranatha 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 saran-saran yang diajukan untuk pengembangan lebih lanjut


(5)

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


(6)

Universitas Kristen Maranatha

48

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

,