Extended Tiny Encryption Algorithm.

1 ABSTRAK
Masalah keamanan merupakan salah satu aspek penting dari sebuah
sistem informasi. Pentingnya nilai sebuah informasi menyebabkan seringkali
informasi diinginkan hanya boleh diakses oleh orang-orang tertentu. Jatuhnya
informasi ke tangan pihak yang tidak diinginkan dapat menimbulkan kerugian
bagi pemilik informasi.
Banyak solusi yang dapat digunakan untuk menangani masalah keamanan
data. Salah satu solusi untuk mengamankan data yang dikirimkan adalah dengan
melakukan enkripsi (penyandian) pada data. Enkripsi dibagi menjadi dua bagian
utama, yaitu algoritma simetrik dan algoritma asimetrik. Pada tugas akhir ini
algoritma yang dipakai adalah algoritma XTEA yang merupakan algoritma
simetrik, yaitu penyandian dengan menggunakan kunci yang sama. Data yang
dikirimkan adalah data hasil enkripsi atau disebut juga ciphertext. Setelah data
diterima, maka data akan diolah kembali menjadi data sebenarnya atau disebut
juga plaintext.
Pada tugas akhir ini berhasil direalisasikan sebuah perangkat lunak untuk
pengaman data berbasis algoritma simetrik metoda XTEA dengan menggunakan
bahasa pemrograman Dephi.

i


Universitas Kristen Maranatha

2 ABSTRACT
Security problem is one the most important aspect in an information
system. Importance value of information is often makes the information wanted to
be accessed by certain person only. Fall of information to the unwanted side can
couse losses to info’s owner.
Many solutions can be used to handle information’s security problem. One
of solutions to protect data is to encrypt the data. There are two general types of
encryption algorithm, symmetric algorithm and asymmetric algorithm. The
Algorithm that used in this project is XTEA, one of symmetric algorithm type that
encodes and decodes using only one same key. Sent data is encrypted data or so
called the ciphertext. After data is received, data will be processed back to the
original data or so called the plaintext.
In this project has successfully built an encryption software base on
Extended Tiny Encryption Algorithm by using Delphi as programming language.

ii

Universitas Kristen Maranatha


DAFTAR ISI
ABSTRAK.............................................. .................................................................i
ABSTRACT................................................. ...........................................................ii
KATA PENGANTAR................................................ ...........................................iii
DAFTAR ISI............................................... ............................................................v
DAFTAR GAMBAR..............................................................................................ix
DAFTAR TABEL...................................................................................................xi
BAB I PENDAHULUAN........................................................................................1
1.1 Latar Belakang..................................................................................................1
1.2 Identifikasi Masalah..........................................................................................2
1.3 Tujuan...............................................................................................................2
1.4 Pembatasan Masalah.........................................................................................2
1.5 Spesifikasi Hardware........................................................................................2
1.6 Sistematika Pembahasan...................................................................................3
BAB II TEORI PENUNJANG.................................................................................4
2.1 Kriptografi.........................................................................................................4
2.1.1 Tujuan Kriptografi....................................................................................7
2.2 Enkripsi dan Dekripsi Menggunakan Kunci.....................................................8
2.3 Algoritma Simetri Dan Algoritma Asimetri.....................................................9

2.3.1 Algoritma Simetri.....................................................................................9
2.3.2 Algoritma Asimetri.................................................................................10
2.4 Mode Operasi Enkripsi Blok Cipher...............................................................12
2.5 Teori Matematika............................................................................................13

v

Universitas Kristen Maranatha

2.5.1 Fungsi XOR............................................................................................14
2.5.2 Bilangan Prima........................................................................................14
2.5.3 Operasi Modulus.....................................................................................15
2.5.4 Algoritma Euclidean...............................................................................16
2.5.5 Algoritma Extended Euclidean...............................................................17
2.5.6 Eksponensial Modulus............................................................................18
2.6 Enkripsi Dengan Algoritma XTEA.................................................................20
2.7 Algoritma Validasi Data.................................................................................22
2.8 Algoritma Pembangkit Private Key dan Public Key.......................................22
2.9 Feistel Cihper.....................................................................................................22


BAB III Perancangan dan Realisasi Perangkat Lunak...........................................24
3.1 Pengolahan Kunci XTEA................................................................................24
3.2 Program Enkripsi............................................................................................24
3.3 Program Dekripsi............................................................................................28
3.4 Program Pembangkit Privat Key dan Public Key...........................................30
3.4.1 Sub Program rdmprime...........................................................................31
3.4.2 Sub Program gcd.....................................................................................32
3.4.3 Sub Program Euclid................................................................................32
3.4.4 Program Validasi....................................................................................34
3.4.5 Sub Program Pangkatmod......................................................................34
3.5 Realisasi Program............................................................................................36
3.5.1 Program Enkripsi....................................................................................36
3.5.2 Program Dekripsi....................................................................................37

vi

Universitas Kristen Maranatha

3.5.3 Program Timer........................................................................................38
BAB IV Data Pengamatan.....................................................................................39

4.1 Hasil Pengamatan Sederhana Program Enkripsi dan Dekripsi XTEA............39
4.1.1 Pengamatan Enkripsi XTEA Dengan Kunci Yang Sama.......................39
4.1.2 Pengamatan Enkripsi XTEA Dengan Kunci Yang Berbeda...................45
4.2 Hasil Pengamatan Program Enkripsi dan Dekripsi Menggunakan File..........49
4.2.1 Proses Enkripsi XTEA Dengan Menggunakan File................................49
4.3 Hasil Pengamatan Waktu Dan Ukuran File....................................................54
4.3.1 Pengamatan Enkripsi Dan Dekripsi Menggunakan Kunci Yang Sama..54
4.3.2 Pengamatan Enkripsi Dan Dekripsi Menggunakan Kunci Yang Beda..55
4.3.3 Pengamatan enkripsi Dan Dekripsi Menggunakan Kunci Delta Yang
Berbeda.............................................................................................57
4.4 Pengamatan Hasil Proses Validasi..................................................................58
4.4.1 Pengamatan Terhadap Perubahan Ciphertext.......................................58
4.4.2 Pengamatan Terhadap Perubahan Public Key.......................................63
4.4.3 Pengamatan Terhadap Perubahan File Validasi....................................64
4.5 Analisa Hasil Pengamatan..............................................................................65
BAB V Kesimpulan Dan Saran..............................................................................67
5.1 Kesimpulan.....................................................................................................67
5.2 Saran................................................................................................................67
Daftar Pustaka........................................................................................................68


vii

Universitas Kristen Maranatha

Lampiran A Listing Program ........................................................................................A-1
Lampiran B Tampilan Program .................................................................................... B-1

viii

Universitas Kristen Maranatha

4 DAFTAR GAMBAR
Gambar 2.1.... Kriptografi dengan proses enkripsi dan dekripsi ........................... 6
Gambar 2.2

Kriptografi Simetri Umum.............................................................. 9

Gambar 2.3

Kriptografi Asimetri Umum.......................................................... 11


Gambar 2.4

Diagram Umum Feistel Cipher .....................................................23

Gambar 3.1

Diagram Alur Pengolahan Plaintext ............................................ 25

Gambar 3.2

Diagram Alur Proses Enkripsi ..................................................... 27

Gambar 3.3

Diagram Alur Proses Dekripsi ..................................................... 29

Gambar 3.4

Diagram Alur Program Pembangkit Kunci Tanda Tangan

Digital ........................................................................................... 30

Gambar 3.5

Diagram Alir Sub Program RdmPrime ........................................ 31

Gambar 3.6

Diagram Alir Sub Program gcd .................................................... 32

Gambar 3.7

Diagram Alir Sub Program Euclid ............................................... 33

Gambar 3.8

Diagram Alir Program Validasi ................................................... 34

Gambar 3.9


Diagram Alir Sub Program pangkatmod ...................................... 35

Gambar 3.10 Tampilan Program Enkripsi ......................................................... 36
Gambar 3.11 Tampilan Program Dekripsi ......................................................... 37
Gambar 4.1

Tampilan program enkripsi algoritma XTEA dengan
plaintext “percobaan” kunci “kunci” ............................................ 40

Gambar 4.2

Tampilan penyimpan hasil enkripsi .............................................. 41

Gambar 4.3

Tampilan penyimpanan kode validasi........................................... 42

Gambar 4.4

Tampilan percobaan program dekripsi algoritma XTEA................43


ix

Universitas Kristen Maranatha

Gambar 4.5

Isi dari teks01dekrip.txt ................................................................. 44

Gambar 4.6

Tampilan program enkripsi algoritma XTEA
dengan plaintext “percobaan 2”, kunci “coba” ............................ 46

Gambar 4.7

Tampilan program dekripsi dari algoritma XTEA plaintext
“percobaan 2” dengan kunci “coba” ............................................. 47

Gambar 4.8


Isi dari coba2dekrip.txt...................................................................48

Gambar 4.9

Tampilan program enkripsi algoritma XTEA dengan plaintext
file original_text.txt, kata kunci “kunci”.......................................50

Gambar 4.10 Tampilan program dekripsi dari file original_text_enkrip.txt
dengan menggunakan kunci “kunci”, disimpan dalam file
original_text_dekrip.txt..................................................................52
Gambar 4.11

Isi dari original_text_dekrip.txt.....................................................53

Gambar 4.12 Tidak valid karena kesalahan public key ......................................64

x

Universitas Kristen Maranatha

5 DAFTAR TABEL
Tabel 2.1 Nilai Extended Euclidean ................................................................... 18
Tabel 4.1 Enkripsi dan dekripsi menggunakan kunci yang sama, plaintext
yang berbeda-beda .............................................................................. 39
Tabel 4.2 Enkripsi dan dekripsi menggunakan kunci yang sama, plaintext
yang berbeda-beda .............................................................................. 45
Tabel 4.3 Hasil Pengamatan Proses Enkripsi XTEA ......................................... 54
Tabel 4.4 Hasil Pengamatan Proses Dekripsi XTEA ......................................... 55
Tabel 4.5 Hasil pengamatan Enkripsi file menggunakan kunci yang berbeda,
plaintext yang sama ............................................................................ 56
Tabel 4.6 Hasil pengamatan Enkripsi file menggunakan kunci yang berbeda,
plaintext yang sama ............................................................................ 56
Tabel 4.7. Hasil pengamatan Enkripsi file menggunakan kunci kedua
yang berbeda, plaintext yang sama......................................................57
Tabel 4.8. Hasil pengamatan Enkripsi file menggunakan kunci
kedua yang berbeda, plaintext yang sama............................................58

xi

Universitas Kristen Maranatha

Lampiran A
Listing Program

A-1

Universitas Kristen Maranatha

Listing UMain.pas
unit UMain;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls, Menus, StrUtils;
type
TMain = class(TForm)
PageControl1: TPageControl;
MainMenu1: TMainMenu;
File1: TMenuItem;
About1: TMenuItem;
TabSheet1: TTabSheet;
Label1: 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;
Label5: TLabel;
edStart: TEdit;
Label6: TLabel;
edDuration: TEdit;
Label7: TLabel;
edEnd: TEdit;
OpenDlg: TOpenDialog;
SaveDlg: TSaveDialog;
Label3: TLabel;
edPath: TEdit;
btEncrypt: TButton;
RPlain: TRichEdit;
Label4: TLabel;
edPass: TEdit;

A-2

Universitas Kristen Maranatha

TabSheet2: TTabSheet;
Label12: TLabel;
edPath1: TEdit;
btBrowse1: TButton;
edPass1: TEdit;
Label13: TLabel;
Label14: TLabel;
Label15: TLabel;
edStart1: TEdit;
Label16: TLabel;
edEnd1: TEdit;
Label17: TLabel;
edDuration1: TEdit;
GroupBox3: TGroupBox;
Label18: TLabel;
Label19: TLabel;
PubE1: TEdit;
PubN1: TEdit;
Decrypt: TButton;
RCipher: TMemo;
Exit1: TMenuItem;
SaveDlgV: TSaveDialog;
OpenDlgV: TOpenDialog;
procedure btBrowseClick(Sender: TObject);
procedure btEncryptClick(Sender: TObject);
procedure btGenClick(Sender: TObject);
procedure btBrowse1Click(Sender: TObject);
procedure DecryptClick(Sender: TObject);
procedure Exit1Click(Sender: TObject);
procedure About1Click(Sender: TObject);
procedure TabSheet1Show(Sender: TObject);
procedure TabSheet2Show(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Main: TMain;
implementation

A-3

Universitas Kristen Maranatha

{$R *.dfm}
uses xtea, RSATools, Tools, UAbout;
procedure TMain.btBrowseClick(Sender: TObject);
begin
if OpenDlg.Execute then
begin
edPath.Text:=OpenDlg.FileName;
RPlain.Lines.LoadFromFile(OpenDlg.FileName);
end;
end;
procedure TMain.btEncryptClick(Sender: TObject);
var slama:String;
Source,Dest:File;
valid:TextFile;
Buffer: array[0..7] of byte;
temp:Xtea.TTeaMsgBlock;
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 SaveDlg.Execute then
begin
awal:=Time;
edStart.Text:=TimeToStr(awal);
AssignFile(Source,edPath.Text);
AssignFile(Dest,SaveDlg.FileName);
Reset(source,1);
ReWrite(Dest,1);
repeat
for i:=0 to 7 do

A-4

Universitas Kristen Maranatha

Buffer[i]:=0;
temp[0]:=0;temp[1]:=0;
BlockRead(Source,Buffer,sizeof(Buffer),read);
move(Buffer,temp,read);
temp:=XTeaCryptBin(temp,edPass.Text,read);
move(temp,Buffer,sizeof(temp));
BlockWrite(Dest,Buffer,SizeOf(Buffer));
until read sizeof(Buffer);
CloseFile(Source);
CloseFile(Dest);
akhir:=Time;
edEnd.Text:=TimeToStr(akhir);
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,SaveDlg.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;
end;
procedure TMain.btGenClick(Sender: TObject);
var p : Longint; //random prime
q : Longint; //second random prime that not equal to p

A-5

Universitas Kristen Maranatha

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;
PrivN.Text := IntToStr(n);
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

A-6

Universitas Kristen Maranatha

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;
procedure TMain.btBrowse1Click(Sender: TObject);
begin
if OpenDlg.Execute then
begin
edPath1.Text:=OpenDlg.FileName;
RCipher.Lines.LoadFromFile(OpenDlg.FileName);
end;
end;
procedure TMain.DecryptClick(Sender: TObject);
var slama,temp1:String;
Source,Dest:File;
valid:TextFile;
Buffer: array[0..7] of byte;
temp:Xtea.TTeaMsgBlock;
Read:Integer;
awal,akhir,lama:TDateTime;
i,e,n:Integer;

A-7

Universitas Kristen Maranatha

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
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
if SaveDlg.Execute then
begin
awal:=Time;
edStart1.Text:=TimeToStr(awal);
AssignFile(Source,OpenDlg.FileName);
AssignFile(Dest,SaveDlg.FileName);
Reset(Source,1);

A-8

Universitas Kristen Maranatha

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);
move(Buffer,temp,read);
temp:=XTeaDeCryptBin(temp,edPass.Text,read);
move(temp,Buffer,sizeof(temp));
BlockWrite(Dest,Buffer,read);
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;
end;
procedure TMain.Exit1Click(Sender: TObject);
begin
Application.Terminate;
end;
procedure TMain.About1Click(Sender: TObject);
begin
frmAbout.ShowModal;
end;
procedure TMain.TabSheet1Show(Sender: TObject);
begin
edPath.Clear;
edPass.Clear;
RPlain.Clear;
PrivD.Clear;
PrivN.Clear;
PubE.Clear;
PubN.Clear;
edStart.Clear;
edEnd.Clear;

A-9

Universitas Kristen Maranatha

edDuration.Clear;
OpenDlg.FileName := ““;
SaveDlg.FileName := ““;
OpenDlgV.FileName := ““;
SaveDlgV.FileName := ““;
end;
procedure TMain.TabSheet2Show(Sender: TObject);
begin
edPath1.Clear;
edPass1.Clear;
RCipher.Clear;
PubE1.Clear;
PubN1.Clear;
edStart1.Clear;
edEnd1.Clear;
edDuration1.Clear;
OpenDlg.FileName := ““;
SaveDlg.FileName := ““;
OpenDlgV.FileName := ““;
SaveDlgV.FileName := ““;
end;
end.

A-10

Universitas Kristen Maranatha

Listing Uxtea.pas
unit xtea;
interface
type
TTeaMsgBlock = array[0..1] of LongWord;
TTeaKeyBlock = array[0..3] of LongWord;
procedure XTeaCrypt(var V: TTeaMsgBlock; const K: TTeaKeyBlock);
procedure XTeaDecrypt(var V: TTeaMsgBlock; const K: TTeaKeyBlock);
function XTeaCryptStr(const Msg, Pwd: string): string;
function XTeaDecryptStr(const Msg, Pwd: string): string;
function XTeaCryptBin(const Msg : TTeaMsgBlock; const Pwd : String; Len :
Integer): TTeaMsgBlock;
function XTeaDeCryptBin(const Msg : TTeaMsgBlock; const Pwd : String; Len :
Integer): TTeaMsgBlock;
implementation
{
==========================================================
=============== }
const
DELTA = $9e3779b9;
N = 32;
procedure XTeaCrypt(var V: TTeaMsgBlock; const K: TTeaKeyBlock);
var
I: LongWord;
S: Int64;
begin
S := 0;
for I := 0 to N - 1 do begin
Inc(V[0], (V[1] shl 4 xor V[1] shr 5) + (V[1] xor S) + K[S and 3]);
Inc(S, DELTA);
Inc(V[1], (V[0] shl 4 xor V[0] shr 5) + (V[0] xor S) + K[S shr 11 and 3]);
end;
end;
procedure XTeaDecrypt(var V: TTeaMsgBlock; const K: TTeaKeyBlock);
var
I: LongWord;
S: Int64;

A-11

Universitas Kristen Maranatha

begin
S := DELTA * Int64(N);
for I := 0 to N - 1 do begin
Dec(V[1], (V[0] shl 4 xor V[0] shr 5) + (V[0] xor S) + K[S shr 11 and 3]);
Dec(S, DELTA);
Dec(V[0], (V[1] shl 4 xor V[1] shr 5) + (V[1] xor S) + K[S and 3]);
end;
end;
function XTeaCryptStr(const Msg, Pwd: string): string;
var
V: TTeaMsgBlock;
K: TTeaKeyBlock;
I, L, N: Integer;
begin
L := Length(Pwd); if L > SizeOf(K) then L := SizeOf(K);
K[0] := 0; K[1] := 0; K[2] := 0; K[3] := 0; Move(Pwd[1], K[0], L);
I := 1; L := Length(Msg);
if L > 0 then SetLength(Result, ((L - 1) div SizeOf(V) + 1) * SizeOf(V))
else SetLength(Result, 0);
while I SizeOf(V) then N := SizeOf(V);
Move(Msg[I], V[0], N);
XTeaCrypt(V, K);
Move(V[0], Result[I], SizeOf(V));
Inc(I, SizeOf(V))
end;
end;
function XTeaDecryptStr(const Msg, Pwd: string): string;
var
V: TTeaMsgBlock;
K: TTeaKeyBlock;
I, L, N: Integer;
begin
L := Length(Pwd); if L > SizeOf(K) then L := SizeOf(K);
K[0] := 0; K[1] := 0; K[2] := 0; K[3] := 0; Move(Pwd[1], K[0], L);
I := 1; L := Length(Msg);
if L > 0 then SetLength(Result, ((L - 1) div SizeOf(V) + 1) * SizeOf(V))
else SetLength(Result, 0);
while I SizeOf(V) then N := SizeOf(V);
Move(Msg[I], V[0], N);
XTeaDecrypt(V, K);
Move(V[0], Result[I], SizeOf(V));
Inc(I, SizeOf(V))
end;
end;
function XTeaCryptBin(const Msg : TTeaMsgBlock; const Pwd : String; Len :
Integer): TTeaMsgBlock;
var
V: TTeaMsgBlock;
K: TTeaKeyBlock;
I, L, N: Integer;
begin
V[0] := 0; V[1] := 0;
L := Length(Pwd); if L > SizeOf(K) then L := SizeOf(K);
K[0] := 0; K[1] := 0; K[2] := 0; K[3] := 0; Move(Pwd[1], K[0], L);
Move(Msg,V[0],8);
XTeaCrypt(V, K);
Move(V[0], Result, SizeOf(V));
end;
function XTeaDeCryptBin(const Msg : TTeaMsgBlock; const Pwd : String; Len :
Integer): TTeaMsgBlock;
var
V: TTeaMsgBlock;
K: TTeaKeyBlock;
I, L, N: Integer;
begin
V[0] := 0; V[1] := 0;
L := Length(Pwd); if L > SizeOf(K) then L := SizeOf(K);
K[0] := 0; K[1] := 0; K[2] := 0; K[3] := 0; Move(Pwd[1], K[0], L);
Move(Msg,V[0],8);
XTeaDecrypt(V, K);
Move(V[0], Result, SizeOf(V));
end;
{
==========================================================
=============== }
end.

A-13

Universitas Kristen Maranatha

Listing Uabout.pas
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;
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;
end.

A-14

Universitas Kristen Maranatha

Listing Tools.pas
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
mov &Result,ax
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

A-15

Universitas Kristen Maranatha

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]);
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;

A-16

Universitas Kristen Maranatha

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.

A-17

Universitas Kristen Maranatha

Listing RSATools
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;
end;
Qex := A3 div B3;
T1 := A1 - Qex * B1;
T2 := A2 - Qex * B2;
T3 := A3 - Qex * B3;

A-18

Universitas Kristen Maranatha

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;
begin
iLowerBound := 30;
iUpperBound := 300;
Randomize;
i110:
iRandom := (Round((iUpperBound - iLowerBound + 1) *
(Random(10000)/10000)) + iLowerBound);

A-19

Universitas Kristen Maranatha

//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;
nilaic := 2 * nilaic;
nilaid := (nilaid * nilaid) Mod n22;
If barray[nilaii] = 1 Then
begin
nilaic := nilaic + 1;
nilaid := (nilaid * a22) Mod n22;

A-20

Universitas Kristen Maranatha

end;
end;
pangkatmod := nilaid;
End;
end.

A-21

Universitas Kristen Maranatha

Lampiran B
Gambar Tampilan

B-1

Universitas Kristen Maranatha

Gambar Tampilan Program Enkripsi

B-2

Universitas Kristen Maranatha

Gambar Tampilan Program Dekripsi

B-3

Universitas Kristen Maranatha

Gambar Tampilan About

B-4

Universitas Kristen Maranatha

1 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
Masalah keamanan merupakan salah satu aspek penting dari sebuah sistem
informasi. Pentingnya nilai sebuah informasi menyebabkan seringkali informasi
diinginkan hanya boleh diakses oleh orang-orang tertentu. Jatuhnya informasi ke
tangan pihak yang tidak diingingkan dapat menimbulkan kerugian bagi pemilik
informasi.
Banyak solusi yang dapat digunakan untuk menangani masalah keamanan
data, salah satunya adalah dengan menggunakan enkripsi. Penulis akan mencoba
untuk membuat perangkat lunak yang dapat melakukan enkripsi dan dekripsi
terhadap data dengan menggunakan algoritma kunci simetrik XTEA sehingga data
dapat dikirim dengan kerahasiaan yang terjaga.

1

Universitas Kristen Maranatha

1.2 Identifikasi Masalah
Permasalahan difokuskan pada bagaimana membuat perangkat lunak yang
mampu melakukan enkripsi data dan dapat melakukan dekripsi data kembali
secara benar dengan algoritma kunci simetrik XTEA.

1.3 Tujuan
Tujuan dari Tugas Akhir ini adalah dapat membuat sebuah perangkat lunak
yang sanggup melakukan enkripsi serta dekripsi data dengan menggunakan
algoritma kunci simetrik XTEA.

1.4 Pembatasan Masalah
• Perancangan perangkat lunak untuk enkripsi dan dekripsi hanya dengan
dengan menggunakan algoritma kunci simetrik XTEA.
• Perangkat lunak dirancang untuk melakukan enkripsi dan dekripsi pada
data berjenis text.

1.5 Spesifikasi Hardware
• CPU AMD Athlon 1700+
• RAM 512 MB
• Hard Disk 40 GB Ultra DMA

2

Universitas Kristen Maranatha

1.6 Sistematika Pembahasan
Materi pembahasan dalam laporan Tugas Akhir ini adalah:
BAB I PENDAHULUAN
Bab ini menjelaskan mengenai latar belakang Tugas Akhir, tujuan Tugas
Akhir, pembatasan masalah dan sistematika pembahasan.
BAB II TEORI PENUNJANG
Bab ini menjelaskan landasan-landasan teori yang bersangkutan dengan
enkripsi dan dekripsi algoritma XTEA, yaitu antara lain : teori dasar kriptografi,
algoritma simetrik dan asimetrik, mode enkripsi blok cipher, dan algoritma
XTEA.
BAB III PERANCANGAN DAN REALISASI
Bab ini berisi tentang perancangan dan realisasi dari program enkripsi dan
dekripsi algoritma XTEA
BAB IV HASIL PENGAMATAN
Bab ini berisi tentang data hasil pengamatan proses enkripsi dan dekripsi
dengan menggunakan algoritma XTEA.
BAB V KESIMPULAN DAN SARAN
Bab ini berisi tentang kesimpulan dan saran yang mungkin berguna dalam
penggunaan program enkripsi dan dekripsi menggunakan algoritma XTEA.

3

Universitas Kristen Maranatha

BAB V
KESIMPULAN DAN SARAN
5.1 Kesimpulan
Berdasarkan hasil pengamatan dapat diambil kesimpulan:
1. Program enkripsi mengubah plaintext menjadi ciphertext dengan ukuran yang
tidak berubah. Ini dikarenakan file validasi yang tidak disatukan dengan
ciphertext_nya. Program dekripsi mengubah ciphertext menjadi plaintext
kembali dengan ukuran plaintext semula.
2. Penggunaan kunci utama maupun kunci kedua (delta) yang makin kompleks
akan cenderung menambah waktu proses enkripsi dan dekripsi.
3. Perubahan kecil pada ciphertext dapat terditeksi dengan baik oleh perangkat
lunak sehingga pemalsuan dengan cara mengubah isi ciphertext dapat
dihindari.

5.2 Saran
Berdasarkan hasil pengamatan dapat diambil saran:
1. Program dapat dikembangkan untuk memproses secara langsung data
masukan selain data teks, misalnya data gambar, suara atau citra digital
lainnya.

67

Universitas Kristen Maranatha

Daftar Pustaka
Knused, L, “Block Cipher – analysis design and application”. Phd Dissertation :
Aarhus University, 1994.

Kurniawan, Yusuf , Ir. MT.,Kriptografi Keamanan Internet dan Jaringan
Komunikasi, Penerbit Informatika, Bandung, 2004.

Schneier, Bruce, Applied Cryptography Second edition: protocols, Algorithms,
and source code in C, John Wiley & Sons Inc, Singapore, 1996.
http://www.kremlinencrypt.com/crypto/algorithms.html

http://www.cix.co.uk

http://www.cs.ua.edu

http://www.di-mgt.com/crypto.html

http://www.ietf.org/rfc/rfc2612.txt

http://www.powerbasic.com/support/forums

http://www.pbcrypto.com

http://en.wikipedia.org

68

Universitas Kristen Maranatha