Anda di halaman 1dari 32

BAB IV

ALGORITMA DAN IMPLEMENTASI


4.1

Algoritma
Algoritma yang digunakan untuk merancang perangkat lunak one-way

hashing HAVAL dapat dibagi menjadi beberapa bagian, yaitu:


1. Algoritma Fungsi F.
2. Algoritma Fungsi F_Phi.
3. Algoritma Fungsi G.
4. Algoritma Fungsi G_Phi.
5. Algoritma Fungsi H.
6. Algoritma Fungsi H_Phi.
7. Algoritma Prosedur FF.
8. Algoritma Prosedur GG.
9. Algoritma Prosedur HH.
10. Algoritma Fungsi Hash HAVAL.

4.1.1

Algoritma Fungsi F
Fungsi F dipakai pada putaran pertama fungsi hash HAVAL. Fungsi ini

memiliki 7 buah input parameter dengan simbol: A6, A5, A4, A3, A2, A1 dan A0.
Masing-masing variabel A berisi 32 bit biner. Fungsi F mengembalikan nilai fungsi
dengan panjang 32 bit biner.
70

71

Proses kerja di dalam fungsi F adalah:


F(A6, A5, A4, A3, A2, A1, A0) = ((A1 A4) (A2 A5) (A3 A6)
(A0 A1) A0).
Prosedur kerja dari algoritma fungsi F dapat dilihat pada flowchart berikut ini.

Gambar 4.1 Flowchart Fungsi F

72

4.1.2

Algoritma Fungsi F_Phi


Fungsi F_Phi dipakai pada putaran pertama fungsi hash HAVAL. Fungsi ini

memiliki 7 buah input parameter dengan simbol: A6, A5, A4, A3, A2, A1 dan A0.
Masing-masing variabel A berisi 32 bit biner. Fungsi F_Phi mengembalikan nilai
fungsi dengan panjang 32 bit biner. Dalam proses kerjanya, fungsi F_Phi
menggunakan fungsi F.
Proses kerja di dalam fungsi F_Phi adalah:
F_phi(A6, A5, A4, A3, A2, A1, A0) = F(A1, A0, A3, A5, A6, A2, A4).
Prosedur kerja dari algoritma fungsi F_Phi dapat dilihat pada flowchart berikut ini.

Gambar 4.2 Flowchart Fungsi F_Phi

4.1.3

Algoritma Fungsi G
Fungsi G dipakai pada putaran kedua fungsi hash HAVAL. Fungsi ini

memiliki 7 buah input parameter dengan simbol: A6, A5, A4, A3, A2, A1 dan A0.

73

Masing-masing variabel A berisi 32 bit biner. Fungsi G mengembalikan nilai fungsi


dengan panjang 32 bit biner.
Proses kerja di dalam fungsi G adalah:
G(A6, A5, A4, A3, A2, A1, A0) = ((A1 A2 A3) (A2 A4 A5)
(A1 A2) (A1 A4) (A2 A6)
(A3 A5) (A4 A5) (A0 A2) A0).
Prosedur kerja dari algoritma fungsi G dapat dilihat pada flowchart berikut ini.

Gambar 4.3 Flowchart Fungsi G

74

4.1.4

Algoritma Fungsi G_Phi


Fungsi G_Phi dipakai pada putaran kedua fungsi hash HAVAL. Fungsi ini

memiliki 7 buah input parameter dengan simbol: A6, A5, A4, A3, A2, A1 dan A0.
Masing-masing variabel A berisi 32 bit biner. Fungsi G_Phi mengembalikan nilai
fungsi dengan panjang 32 bit biner. Dalam proses kerjanya, fungsi G_Phi
menggunakan fungsi G.
Proses kerja di dalam fungsi G_Phi adalah:
G_phi(A6, A5, A4, A3, A2, A1, A0) = G(A4, A2, A1, A0, A5, A3, A6).
Prosedur kerja dari algoritma fungsi G_Phi dapat dilihat pada flowchart berikut ini.

Gambar 4.4 Flowchart Fungsi G_Phi

4.1.5

Algoritma Fungsi H
Fungsi G dipakai pada putaran ketiga fungsi hash HAVAL. Fungsi ini

memiliki 7 buah input parameter dengan simbol: A6, A5, A4, A3, A2, A1 dan A0.

75

Masing-masing variabel A berisi 32 bit biner. Fungsi H mengembalikan nilai fungsi


dengan panjang 32 bit biner.
Proses kerja di dalam fungsi H adalah:
H(A6, A5, A4, A3, A2, A1, A0) = ((A1 A2 A3) (A1 A4) (A2 A5)
(A3 A6) (A0 A3) A0).
Prosedur kerja dari algoritma fungsi H dapat dilihat pada flowchart berikut ini.

Gambar 4.5 Flowchart Fungsi H

76

4.1.6

Algoritma Fungsi H_Phi


Fungsi H_Phi dipakai pada putaran ketiga fungsi hash HAVAL. Fungsi ini

memiliki 7 buah input parameter dengan simbol: A6, A5, A4, A3, A2, A1 dan A0.
Masing-masing variabel A berisi 32 bit biner. Fungsi H_Phi mengembalikan nilai
fungsi dengan panjang 32 bit biner. Dalam proses kerjanya, fungsi H_Phi
menggunakan fungsi H.
Proses kerja di dalam fungsi H_Phi adalah:
H_phi(A6, A5, A4, A3, A2, A1, A0) = H(A6, A1, A2, A3, A4, A5, A0)..
Prosedur kerja dari algoritma fungsi H_Phi dapat dilihat pada flowchart berikut ini.

Gambar 4.6 Flowchart Fungsi H_Phi

4.1.7

Algoritma Prosedur FF
Prosedur FF dipakai pada putaran pertama fungsi hash HAVAL. Prosedur ini

memiliki 9 buah input parameter dengan simbol: A7, A6, A5, A4, A3, A2, A1, A0 dan w.

77

Masing-masing variabel A dan w berisi 32 bit biner. Prosedur FF meng-update atau


mengubah nilai variabel pada parameter pertamanya (A7). Dalam proses kerjanya,
prosedur FF menggunakan fungsi F_Phi.
Proses kerja di dalam prosedur FF(A7, A6, A5, A4, A3, A2, A1, A0, w) adalah:
temp = F_phi(A6, A5, A4, A3, A2, A1, A0).
A7 = (temp >>> 7) + (A7 >>> 11) + w.
Prosedur kerja dari algoritma prosedur FF dapat dilihat pada flowchart berikut ini.

Gambar 4.7 Flowchart Prosedur FF

4.1.8

Algoritma Prosedur GG
Prosedur GG dipakai pada putaran kedua fungsi hash HAVAL. Prosedur ini

memiliki 10 buah input parameter dengan simbol: A7, A6, A5, A4, A3, A2, A1, A0, w
dan c. Masing-masing variabel A, w dan c berisi 32 bit biner. Prosedur GG meng-

78

update atau mengubah nilai variabel pada parameter pertamanya (A 7). Dalam proses
kerjanya, prosedur GG menggunakan fungsi G_Phi.
Proses kerja di dalam prosedur GG(A7, A6, A5, A4, A3, A2, A1, A0, w, c) adalah:
temp = G_phi(A6, A5, A4, A3, A2, A1, A0).
A7 = (temp >>> 7) + (A7 >>> 11) + w + c.
Prosedur kerja dari algoritma prosedur GG dapat dilihat pada flowchart berikut ini.

Gambar 4.8 Flowchart Prosedur GG

4.1.9

Algoritma Prosedur HH
Prosedur HH dipakai pada putaran ketiga fungsi hash HAVAL. Prosedur ini

memiliki 10 buah input parameter dengan simbol: A7, A6, A5, A4, A3, A2, A1, A0, w
dan c. Masing-masing variabel A, w dan c berisi 32 bit biner. Prosedur HH meng-

79

update atau mengubah nilai variabel pada parameter pertamanya (A 7). Dalam proses
kerjanya, prosedur HH menggunakan fungsi H_Phi.
Proses kerja di dalam prosedur HH(A7, A6, A5, A4, A3, A2, A1, A0, w, c) adalah:
temp = H_phi(A6, A5, A4, A3, A2, A1, A0).
A7 = (temp >>> 7) + (A7 >>> 11) + w + c.
Prosedur kerja dari algoritma prosedur HH dapat dilihat pada flowchart berikut ini.

Gambar 4.9 Flowchart Prosedur HH

4.1.10 Algoritma Fungsi Hash HAVAL


Algoritma ini merupakan inti dari proses menghasilkan fungsi hash sesuai
dengan metode one-way hashing HAVAL.
Pertama, algoritma ini membagi input message menjadi 32 bagian (masingmasing 4 karakter ascii atau 32 bit biner) dan masing-masing bagian disimpan ke

80

variabel w dengan dimensi array 0 sampai 31. Selanjutnya, variabel x dan K diberi
nilai awal sebagai berikut:
K0 = x0 = 243F6A88
K1 = x1 = 85A308D3
K2 = x2 = 13198A2E
K3 = x3 = 03707344
K4 = x4 = A4093822
K5 = x5 = 299F31D0
K6 = x6 = 082EFA98
K7 = x7 = EC4E6C89
Setelah itu, nilai-nilai variabel x dimasukkan ke putaran proses fungsi
HAVAL. Setiap putaran HAVAL telah diatur sedemikian rupa dengan memanggil
prosedur FF sebanyak 32 kali (putaran 1), prosedur GG sebanyak 32 kali (putaran 2),
dan prosedur HH sebanyak 32 kali (putaran 3). Putaran ini dimaksudkan untuk
mengacak nilai variabel x dengan rumus-rumus yang ada.
Setelah proses putaran, fungsi hash HAVAL diteruskan dengan proses output,
sebagai berikut:
1. Tambahkan setiap nilai variabel x dari hasil proses dengan konstanta yang
bersesuaian.
Untuk nilai i = 0 sampai 7, lakukan xi = xi + Ki.
2. Proses tailor output, sebagai berikut:

81

temp = (x7 000000FF) (x6 FF000000) (x5 00FF0000) (x4


0000FF00)
x0 = x0 + (temp >>> 8)
temp = (x7 0000FF00) (x6 000000FF) (x5 FF000000) (x4
00FF0000)
x1 = x1 + (temp >>> 16)
temp = (x7 00FF0000) (x6 0000FF00) (x5 000000FF) (x4
FF000000)
x2 = x2 + (temp >>> 24)
temp = (x7 FF000000) (x6 00FF0000) (x5 0000FF00) (x4
000000FF)
x3 = x3 + temp
Setelah proses di atas, output fungsi hash adalah penggabungan (concatenation)
antara nilai variabel x0, x1, x2 dan x3 dengan panjang output sebesar 128 bit.
Prosedur kerja dari algoritma fungsi hash HAVAL dapat dilihat pada flowchart
berikut ini.

82

Gambar 4.10 Flowchart-1 Fungsi Hash HAVAL

83

Gambar 4.11 Flowchart-2 Fungsi Hash HAVAL

84

Gambar 4.12 Flowchart-3 Fungsi Hash HAVAL

85

Gambar 4.13 Flowchart-4 Fungsi Hash HAVAL

86

Gambar 4.14 Flowchart-5 Fungsi Hash HAVAL

87

Gambar 4.15 Flowchart-6 Fungsi Hash HAVAL

4.2

Implementasi Perangkat Lunak

4.2.1

Spesifikasi Hardware dan Software


Perangkat lunak ini disarankan untuk dijalankan dengan menggunakan

perangkat keras (hardware) yang mempunyai spesifikasi minimal adalah sebagai


berikut :
1.

Prosesor Intel Pentium IV.

2.

Memory 256 MB dan Harddisk dengan free space minimal 300 MB.

88

3.

Monitor SVGA dengan resolusi 1027 x 768 pixel.

4.

VGA card 32 MB.

5.

Keyboard dan Mouse

Adapun sistem operasi (operating system) yang digunakan untuk menjalankan


aplikasi ini adalah lingkungan sistem operasi Windows 98, 98SE, Me, 2000 dan XP.

4.2.2

Pengujian Program
Sebagai contoh, input message adalah: HAVAL adalah salah satu fungsi hash

satu arah (one-way hash function) yang diciptakan oleh Yuliang Zheng, Pieprzky dan
JenniferS.

Gambar 4.16 Tampilan Form Input (Pengujian Program)


Apabila user menekan tombol Proses Hash, maka hasil eksekusi fungsi hash yang
didapat adalah:

89

--------------------------------HASIL EKSEKUSI ONE-WAY HASH HAVAL


--------------------------------INPUT MESSAGE =
'HAVAL adalah salah satu fungsi hash satu arah (one-way hash function) yang
diciptakan oleh Yuliang Zheng, Pieprzky dan JenniferS'
Bagikan pesan ke w :
'HAVA' -> w( 0) = 48415641
'L ad' -> w( 1) = 4C206164
'alah' -> w( 2) = 616C6168
' sal' -> w( 3) = 2073616C
'ah s' -> w( 4) = 61682073
'atu ' -> w( 5) = 61747520
'fung' -> w( 6) = 66756E67
'si h' -> w( 7) = 73692068
'ash ' -> w( 8) = 61736820
'satu' -> w( 9) = 73617475
' ara' -> w(10) = 20617261
'h (o' -> w(11) = 6820286F
'ne-w' -> w(12) = 6E652D77
'ay h' -> w(13) = 61792068
'ash ' -> w(14) = 61736820
'func' -> w(15) = 66756E63
'tion' -> w(16) = 74696F6E
') ya' -> w(17) = 29207961
'ng d' -> w(18) = 6E672064
'icip' -> w(19) = 69636970
'taka' -> w(20) = 74616B61
'n ol' -> w(21) = 6E206F6C
'eh Y' -> w(22) = 65682059
'ulia' -> w(23) = 756C6961
'ng Z' -> w(24) = 6E67205A
'heng' -> w(25) = 68656E67
', Pi' -> w(26) = 2C205069
'eprz' -> w(27) = 6570727A
'ky d' -> w(28) = 6B792064
'an J' -> w(29) = 616E204A
'enni' -> w(30) = 656E6E69
'ferS' -> w(31) = 66657253
Inisialisasi Nilai Awal:
K0 = X0 = 243F6A88
K1 = X1 = 85A308D3
K2 = X2 = 13198A2E
K3 = X3 = 03707344
K4 = X4 = A4093822
K5 = X5 = 299F31D0
K6 = X6 = 082EFA98
K7 = X7 = EC4E6C89
----------------PUTARAN I
----------------FF(X7, X6, X5, X4, X3, X2, X1, X0, W0)
FF(EC4E6C89,082EFA98,299F31D0,A4093822,03707344,13198A2E,85A308D3,243F6A88,484156
41)
(1) Temp = F_Phi(082EFA98,299F31D0,A4093822,03707344,13198A2E,85A308D3,243F6A88)
Temp = F(85A308D3,243F6A88,03707344,299F31D0,082EFA98,13198A2E,A4093822)

90

Temp = (13198A2E AND 03707344) XOR (082EFA98 AND 243F6A88) XOR (299F31D0 AND
85A308D3) XOR (A4093822 AND 13198A2E) XOR A4093822
Temp = A6BD585C
(2) A7 = (Temp >>> 7) + (A7 >>> 11) + w
A7 = (A6BD585C >>> 7) + (EC4E6C89 >>> 11) + 48415641
A7 = 92CC5ABE
FF(X6, X5, X4, X3, X2, X1, X0, X7, W1)
FF(082EFA98,299F31D0,A4093822,03707344,13198A2E,85A308D3,243F6A88,92CC5ABE,4C2061
64)
(1) Temp = F_Phi(299F31D0,A4093822,03707344,13198A2E,85A308D3,243F6A88,92CC5ABE)
Temp = F(243F6A88,92CC5ABE,13198A2E,A4093822,299F31D0,85A308D3,03707344)
Temp = (85A308D3 AND 13198A2E) XOR (299F31D0 AND 92CC5ABE) XOR (A4093822 AND
243F6A88) XOR (03707344 AND 85A308D3) XOR 03707344
Temp = 27D44396
(2) A7 = (Temp >>> 7) + (A7 >>> 11) + w
A7 = (27D44396 >>> 7) + (082EFA98 >>> 11) + 4C206164
A7 = CB710FCA
FF(X5, X4, X3, X2, X1, X0, X7, X6, W2)
FF(299F31D0,A4093822,03707344,13198A2E,85A308D3,243F6A88,92CC5ABE,CB710FCA,616C61
68)
(1) Temp = F_Phi(A4093822,03707344,13198A2E,85A308D3,243F6A88,92CC5ABE,CB710FCA)
Temp = F(92CC5ABE,CB710FCA,85A308D3,03707344,A4093822,243F6A88,13198A2E)
Temp = (243F6A88 AND 85A308D3) XOR (A4093822 AND CB710FCA) XOR (03707344 AND
92CC5ABE) XOR (13198A2E AND 243F6A88) XOR 13198A2E
Temp = 9562D2A0
(2) A7 = (Temp >>> 7) + (A7 >>> 11) + w
A7 = (9562D2A0 >>> 7) + (299F31D0 >>> 11) + 616C6168
A7 = DC9C5AF3
FF(X4, X3, X2, X1, X0, X7, X6, X5, W3)
FF(A4093822,03707344,13198A2E,85A308D3,243F6A88,92CC5ABE,CB710FCA,DC9C5AF3,207361
6C)
(1) Temp = F_Phi(03707344,13198A2E,85A308D3,243F6A88,92CC5ABE,CB710FCA,DC9C5AF3)
Temp = F(CB710FCA,DC9C5AF3,243F6A88,13198A2E,03707344,92CC5ABE,85A308D3)
Temp = (92CC5ABE AND 243F6A88) XOR (03707344 AND DC9C5AF3) XOR (13198A2E AND
CB710FCA) XOR (85A308D3 AND 92CC5ABE) XOR 85A308D3
Temp = 062E1283
(2) A7 = (Temp >>> 7) + (A7 >>> 11) + w
A7 = (062E1283 >>> 7) + (A4093822 >>> 11) + 2073616C
A7 = 2AD43EB8
FF(X3, X2, X1, X0, X7, X6, X5, X4, W4)
FF(03707344,13198A2E,85A308D3,243F6A88,92CC5ABE,CB710FCA,DC9C5AF3,2AD43EB8,616820
73)
(1) Temp = F_Phi(13198A2E,85A308D3,243F6A88,92CC5ABE,CB710FCA,DC9C5AF3,2AD43EB8)
Temp = F(DC9C5AF3,2AD43EB8,92CC5ABE,85A308D3,13198A2E,CB710FCA,243F6A88)
Temp = (CB710FCA AND 92CC5ABE) XOR (13198A2E AND 2AD43EB8) XOR (85A308D3 AND
DC9C5AF3) XOR (243F6A88 AND CB710FCA) XOR 243F6A88
Temp = 20DE6871
(2) A7 = (Temp >>> 7) + (A7 >>> 11) + w
A7 = (20DE6871 >>> 7) + (03707344 >>> 11) + 61682073
A7 = AC2A4B51
FF(X2, X1, X0, X7, X6, X5, X4, X3, W5)
FF(13198A2E,85A308D3,243F6A88,92CC5ABE,CB710FCA,DC9C5AF3,2AD43EB8,AC2A4B51,617475
20)
(1) Temp = F_Phi(85A308D3,243F6A88,92CC5ABE,CB710FCA,DC9C5AF3,2AD43EB8,AC2A4B51)
Temp = F(2AD43EB8,AC2A4B51,CB710FCA,243F6A88,85A308D3,DC9C5AF3,92CC5ABE)
Temp = (DC9C5AF3 AND CB710FCA) XOR (85A308D3 AND AC2A4B51) XOR (243F6A88 AND

91

Temp
(2) A7 =
A7 =
A7 =

2AD43EB8) XOR (92CC5ABE AND DC9C5AF3) XOR 92CC5ABE


= 6E662817
(Temp >>> 7) + (A7 >>> 11) + w
(6E662817 >>> 7) + (13198A2E >>> 11) + 61747520
D613A4A1

FF(X1, X0, X7, X6, X5, X4, X3, X2, W6)


FF(85A308D3,243F6A88,92CC5ABE,CB710FCA,DC9C5AF3,2AD43EB8,AC2A4B51,D613A4A1,66756E
67)
(1) Temp = F_Phi(243F6A88,92CC5ABE,CB710FCA,DC9C5AF3,2AD43EB8,AC2A4B51,D613A4A1)
Temp = F(AC2A4B51,D613A4A1,DC9C5AF3,92CC5ABE,243F6A88,2AD43EB8,CB710FCA)
Temp = (2AD43EB8 AND DC9C5AF3) XOR (243F6A88 AND D613A4A1) XOR (92CC5ABE AND
AC2A4B51) XOR (CB710FCA AND 2AD43EB8) XOR CB710FCA
Temp = 4DAE7162
(2) A7 = (Temp >>> 7) + (A7 >>> 11) + w
A7 = (4DAE7162 >>> 7) + (85A308D3 >>> 11) + 66756E67
A7 = 45817FAA
FF(X0, X7, X6, X5, X4, X3, X2, X1, W7)
FF(243F6A88,92CC5ABE,CB710FCA,DC9C5AF3,2AD43EB8,AC2A4B51,D613A4A1,45817FAA,736920
68)
(1) Temp = F_Phi(92CC5ABE,CB710FCA,DC9C5AF3,2AD43EB8,AC2A4B51,D613A4A1,45817FAA)
Temp = F(D613A4A1,45817FAA,2AD43EB8,CB710FCA,92CC5ABE,AC2A4B51,DC9C5AF3)
Temp = (AC2A4B51 AND 2AD43EB8) XOR (92CC5ABE AND 45817FAA) XOR (CB710FCA AND
D613A4A1) XOR (DC9C5AF3 AND AC2A4B51) XOR DC9C5AF3
Temp = BA054498
(2) A7 = (Temp >>> 7) + (A7 >>> 11) + w
A7 = (BA054498 >>> 7) + (243F6A88 >>> 11) + 73692068
A7 = F5E1B2DE
FF(X7, X6, X5, X4, X3, X2, X1, X0, W8)
FF(92CC5ABE,CB710FCA,DC9C5AF3,2AD43EB8,AC2A4B51,D613A4A1,45817FAA,F5E1B2DE,617368
20)
(1) Temp = F_Phi(CB710FCA,DC9C5AF3,2AD43EB8,AC2A4B51,D613A4A1,45817FAA,F5E1B2DE)
Temp = F(45817FAA,F5E1B2DE,AC2A4B51,DC9C5AF3,CB710FCA,D613A4A1,2AD43EB8)
Temp = (D613A4A1 AND AC2A4B51) XOR (CB710FCA AND F5E1B2DE) XOR (DC9C5AF3 AND
45817FAA) XOR (2AD43EB8 AND D613A4A1) XOR 2AD43EB8
Temp = 29274271
(2) A7 = (Temp >>> 7) + (A7 >>> 11) + w
A7 = (29274271 >>> 7) + (92CC5ABE >>> 11) + 61736820
A7 = 9B98102F
FF(X6, X5, X4, X3, X2, X1, X0, X7, W9)
FF(CB710FCA,DC9C5AF3,2AD43EB8,AC2A4B51,D613A4A1,45817FAA,F5E1B2DE,9B98102F,736174
75)
(1) Temp = F_Phi(DC9C5AF3,2AD43EB8,AC2A4B51,D613A4A1,45817FAA,F5E1B2DE,9B98102F)
Temp = F(F5E1B2DE,9B98102F,D613A4A1,2AD43EB8,DC9C5AF3,45817FAA,AC2A4B51)
Temp = (45817FAA AND D613A4A1) XOR (DC9C5AF3 AND 9B98102F) XOR (2AD43EB8 AND
F5E1B2DE) XOR (AC2A4B51 AND 45817FAA) XOR AC2A4B51
Temp = 5473064A
(2) A7 = (Temp >>> 7) + (A7 >>> 11) + w
A7 = (5473064A >>> 7) + (CB710FCA >>> 11) + 73617475
A7 = 0163C8A2
FF(X5, X4, X3, X2, X1, X0, X7, X6, W10)
FF(DC9C5AF3,2AD43EB8,AC2A4B51,D613A4A1,45817FAA,F5E1B2DE,9B98102F,0163C8A2,206172
61)
(1) Temp = F_Phi(2AD43EB8,AC2A4B51,D613A4A1,45817FAA,F5E1B2DE,9B98102F,0163C8A2)
Temp = F(9B98102F,0163C8A2,45817FAA,AC2A4B51,2AD43EB8,F5E1B2DE,D613A4A1)
Temp = (F5E1B2DE AND 45817FAA) XOR (2AD43EB8 AND 0163C8A2) XOR (AC2A4B51 AND
9B98102F) XOR (D613A4A1 AND F5E1B2DE) XOR D613A4A1

92

Temp
(2) A7 =
A7 =
A7 =

= CFDB3E0A
(Temp >>> 7) + (A7 >>> 11) + w
(CFDB3E0A >>> 7) + (DC9C5AF3 >>> 11) + 20617261
947CBC68

FF(X4, X3, X2, X1, X0, X7, X6, X5, W11)


FF(2AD43EB8,AC2A4B51,D613A4A1,45817FAA,F5E1B2DE,9B98102F,0163C8A2,947CBC68,682028
6F)
(1) Temp = F_Phi(AC2A4B51,D613A4A1,45817FAA,F5E1B2DE,9B98102F,0163C8A2,947CBC68)
Temp = F(0163C8A2,947CBC68,F5E1B2DE,D613A4A1,AC2A4B51,9B98102F,45817FAA)
Temp = (9B98102F AND F5E1B2DE) XOR (AC2A4B51 AND 947CBC68) XOR (D613A4A1 AND
0163C8A2) XOR (45817FAA AND 9B98102F) XOR 45817FAA
Temp = 51AAF76E
(2) A7 = (Temp >>> 7) + (A7 >>> 11) + w
A7 = (51AAF76E >>> 7) + (2AD43EB8 >>> 11) + 6820286F
A7 = 1BC8D8E4
FF(X3, X2, X1, X0, X7, X6, X5, X4, W12)
FF(AC2A4B51,D613A4A1,45817FAA,F5E1B2DE,9B98102F,0163C8A2,947CBC68,1BC8D8E4,6E652D
77)
(1) Temp = F_Phi(D613A4A1,45817FAA,F5E1B2DE,9B98102F,0163C8A2,947CBC68,1BC8D8E4)
Temp = F(947CBC68,1BC8D8E4,9B98102F,45817FAA,D613A4A1,0163C8A2,F5E1B2DE)
Temp = (0163C8A2 AND 9B98102F) XOR (D613A4A1 AND 1BC8D8E4) XOR (45817FAA AND
947CBC68) XOR (F5E1B2DE AND 0163C8A2) XOR F5E1B2DE
Temp = E3808EF6
(2) A7 = (Temp >>> 7) + (A7 >>> 11) + w
A7 = (E3808EF6 >>> 7) + (AC2A4B51 >>> 11) + 6E652D77
A7 = C661B3DD
FF(X2, X1, X0, X7, X6, X5, X4, X3, W13)
FF(D613A4A1,45817FAA,F5E1B2DE,9B98102F,0163C8A2,947CBC68,1BC8D8E4,C661B3DD,617920
68)
(1) Temp = F_Phi(45817FAA,F5E1B2DE,9B98102F,0163C8A2,947CBC68,1BC8D8E4,C661B3DD)
Temp = F(1BC8D8E4,C661B3DD,0163C8A2,F5E1B2DE,45817FAA,947CBC68,9B98102F)
Temp = (947CBC68 AND 0163C8A2) XOR (45817FAA AND C661B3DD) XOR (F5E1B2DE AND
1BC8D8E4) XOR (9B98102F AND 947CBC68) XOR 9B98102F
Temp = 5E212B6B
(2) A7 = (Temp >>> 7) + (A7 >>> 11) + w
A7 = (5E212B6B >>> 7) + (D613A4A1 >>> 11) + 61792068
A7 = CC702532
FF(X1, X0, X7, X6, X5, X4, X3, X2, W14)
FF(45817FAA,F5E1B2DE,9B98102F,0163C8A2,947CBC68,1BC8D8E4,C661B3DD,CC702532,617368
20)
(1) Temp = F_Phi(F5E1B2DE,9B98102F,0163C8A2,947CBC68,1BC8D8E4,C661B3DD,CC702532)
Temp = F(C661B3DD,CC702532,947CBC68,9B98102F,F5E1B2DE,1BC8D8E4,0163C8A2)
Temp = (1BC8D8E4 AND 947CBC68) XOR (F5E1B2DE AND CC702532) XOR (9B98102F AND
C661B3DD) XOR (0163C8A2 AND 1BC8D8E4) XOR 0163C8A2
Temp = 560BA87D
(2) A7 = (Temp >>> 7) + (A7 >>> 11) + w
A7 = (560BA87D >>> 7) + (45817FAA >>> 11) + 61736820
A7 = 51682F9F
FF(X0, X7, X6, X5, X4, X3, X2, X1, W15)
FF(F5E1B2DE,9B98102F,0163C8A2,947CBC68,1BC8D8E4,C661B3DD,CC702532,51682F9F,66756E
63)
(1) Temp = F_Phi(9B98102F,0163C8A2,947CBC68,1BC8D8E4,C661B3DD,CC702532,51682F9F)
Temp = F(CC702532,51682F9F,1BC8D8E4,0163C8A2,9B98102F,C661B3DD,947CBC68)
Temp = (C661B3DD AND 1BC8D8E4) XOR (9B98102F AND 51682F9F) XOR (0163C8A2 AND
CC702532) XOR (947CBC68 AND C661B3DD) XOR 947CBC68
Temp = 03349CC9

93

(2) A7 = (Temp >>> 7) + (A7 >>> 11) + w


A7 = (03349CC9 >>> 7) + (F5E1B2DE >>> 11) + 66756E63
A7 = 545A93D2
FF(X7, X6, X5, X4, X3, X2, X1, X0, W16)
FF(9B98102F,0163C8A2,947CBC68,1BC8D8E4,C661B3DD,CC702532,51682F9F,545A93D2,74696F
6E)
(1) Temp = F_Phi(0163C8A2,947CBC68,1BC8D8E4,C661B3DD,CC702532,51682F9F,545A93D2)
Temp = F(51682F9F,545A93D2,C661B3DD,947CBC68,0163C8A2,CC702532,1BC8D8E4)
Temp = (CC702532 AND C661B3DD) XOR (0163C8A2 AND 545A93D2) XOR (947CBC68 AND
51682F9F) XOR (1BC8D8E4 AND CC702532) XOR 1BC8D8E4
Temp = C7C2555E
(2) A7 = (Temp >>> 7) + (A7 >>> 11) + w
A7 = (C7C2555E >>> 7) + (9B98102F >>> 11) + 74696F6E
A7 = 37EC671A
FF(X6, X5, X4, X3, X2, X1, X0, X7, W17)
FF(0163C8A2,947CBC68,1BC8D8E4,C661B3DD,CC702532,51682F9F,545A93D2,37EC671A,292079
61)
(1) Temp = F_Phi(947CBC68,1BC8D8E4,C661B3DD,CC702532,51682F9F,545A93D2,37EC671A)
Temp = F(545A93D2,37EC671A,CC702532,1BC8D8E4,947CBC68,51682F9F,C661B3DD)
Temp = (51682F9F AND CC702532) XOR (947CBC68 AND 37EC671A) XOR (1BC8D8E4 AND
545A93D2) XOR (C661B3DD AND 51682F9F) XOR C661B3DD
Temp = C245019A
(2) A7 = (Temp >>> 7) + (A7 >>> 11) + w
A7 = (C245019A >>> 7) + (0163C8A2 >>> 11) + 29207961
A7 = 72E52FDD
FF(X5, X4, X3, X2, X1, X0, X7, X6, W18)
FF(947CBC68,1BC8D8E4,C661B3DD,CC702532,51682F9F,545A93D2,37EC671A,72E52FDD,6E6720
64)
(1) Temp = F_Phi(1BC8D8E4,C661B3DD,CC702532,51682F9F,545A93D2,37EC671A,72E52FDD)
Temp = F(37EC671A,72E52FDD,51682F9F,C661B3DD,1BC8D8E4,545A93D2,CC702532)
Temp = (545A93D2 AND 51682F9F) XOR (1BC8D8E4 AND 72E52FDD) XOR (C661B3DD AND
37EC671A) XOR (CC702532 AND 545A93D2) XOR CC702532
Temp = CCC80C6E
(2) A7 = (Temp >>> 7) + (A7 >>> 11) + w
A7 = (CCC80C6E >>> 7) + (947CBC68 >>> 11) + 6E672064
A7 = D9134013
FF(X4, X3, X2, X1, X0, X7, X6, X5, W19)
FF(1BC8D8E4,C661B3DD,CC702532,51682F9F,545A93D2,37EC671A,72E52FDD,D9134013,696369
70)
(1) Temp = F_Phi(C661B3DD,CC702532,51682F9F,545A93D2,37EC671A,72E52FDD,D9134013)
Temp = F(72E52FDD,D9134013,545A93D2,CC702532,C661B3DD,37EC671A,51682F9F)
Temp = (37EC671A AND 545A93D2) XOR (C661B3DD AND D9134013) XOR (CC702532 AND
72E52FDD) XOR (51682F9F AND 37EC671A) XOR 51682F9F
Temp = D4292E96
(2) A7 = (Temp >>> 7) + (A7 >>> 11) + w
A7 = (D4292E96 >>> 7) + (1BC8D8E4 >>> 11) + 69636970
A7 = B38F34E8
FF(X3, X2, X1, X0, X7, X6, X5, X4, W20)
FF(C661B3DD,CC702532,51682F9F,545A93D2,37EC671A,72E52FDD,D9134013,B38F34E8,74616B
61)
(1) Temp = F_Phi(CC702532,51682F9F,545A93D2,37EC671A,72E52FDD,D9134013,B38F34E8)
Temp = F(D9134013,B38F34E8,37EC671A,51682F9F,CC702532,72E52FDD,545A93D2)
Temp = (72E52FDD AND 37EC671A) XOR (CC702532 AND B38F34E8) XOR (51682F9F AND
D9134013) XOR (545A93D2 AND 72E52FDD) XOR 545A93D2
Temp = E7FE9329
(2) A7 = (Temp >>> 7) + (A7 >>> 11) + w

94

A7 = (E7FE9329 >>> 7) + (C661B3DD >>> 11) + 74616B61


A7 = 43EA34BD
FF(X2, X1, X0, X7, X6, X5, X4, X3, W21)
FF(CC702532,51682F9F,545A93D2,37EC671A,72E52FDD,D9134013,B38F34E8,43EA34BD,6E206F
6C)
(1) Temp = F_Phi(51682F9F,545A93D2,37EC671A,72E52FDD,D9134013,B38F34E8,43EA34BD)
Temp = F(B38F34E8,43EA34BD,72E52FDD,545A93D2,51682F9F,D9134013,37EC671A)
Temp = (D9134013 AND 72E52FDD) XOR (51682F9F AND 43EA34BD) XOR (545A93D2 AND
B38F34E8) XOR (37EC671A AND D9134013) XOR 37EC671A
Temp = 278F1344
(2) A7 = (Temp >>> 7) + (A7 >>> 11) + w
A7 = (278F1344 >>> 7) + (CC702532 >>> 11) + 6E206F6C
A7 = 9CC91B96
FF(X1, X0, X7, X6, X5, X4, X3, X2, W22)
FF(51682F9F,545A93D2,37EC671A,72E52FDD,D9134013,B38F34E8,43EA34BD,9CC91B96,656820
59)
(1) Temp = F_Phi(545A93D2,37EC671A,72E52FDD,D9134013,B38F34E8,43EA34BD,9CC91B96)
Temp = F(43EA34BD,9CC91B96,D9134013,37EC671A,545A93D2,B38F34E8,72E52FDD)
Temp = (B38F34E8 AND D9134013) XOR (545A93D2 AND 9CC91B96) XOR (37EC671A AND
43EA34BD) XOR (72E52FDD AND B38F34E8) XOR 72E52FDD
Temp = C6C33C9F
(2) A7 = (Temp >>> 7) + (A7 >>> 11) + w
A7 = (C6C33C9F >>> 7) + (51682F9F >>> 11) + 65682059
A7 = 98DFD3D7
FF(X0, X7, X6, X5, X4, X3, X2, X1, W23)
FF(545A93D2,37EC671A,72E52FDD,D9134013,B38F34E8,43EA34BD,9CC91B96,98DFD3D7,756C69
61)
(1) Temp = F_Phi(37EC671A,72E52FDD,D9134013,B38F34E8,43EA34BD,9CC91B96,98DFD3D7)
Temp = F(9CC91B96,98DFD3D7,B38F34E8,72E52FDD,37EC671A,43EA34BD,D9134013)
Temp = (43EA34BD AND B38F34E8) XOR (37EC671A AND 98DFD3D7) XOR (72E52FDD AND
9CC91B96) XOR (D9134013 AND 43EA34BD) XOR D9134013
Temp = 9B963C2C
(2) A7 = (Temp >>> 7) + (A7 >>> 11) + w
A7 = (9B963C2C >>> 7) + (545A93D2 >>> 11) + 756C6961
A7 = 48EE212B
FF(X7, X6, X5, X4, X3, X2, X1, X0, W24)
FF(37EC671A,72E52FDD,D9134013,B38F34E8,43EA34BD,9CC91B96,98DFD3D7,48EE212B,6E6720
5A)
(1) Temp = F_Phi(72E52FDD,D9134013,B38F34E8,43EA34BD,9CC91B96,98DFD3D7,48EE212B)
Temp = F(98DFD3D7,48EE212B,43EA34BD,D9134013,72E52FDD,9CC91B96,B38F34E8)
Temp = (9CC91B96 AND 43EA34BD) XOR (72E52FDD AND 48EE212B) XOR (D9134013 AND
98DFD3D7) XOR (B38F34E8 AND 9CC91B96) XOR B38F34E8
Temp = FB3955E6
(2) A7 = (Temp >>> 7) + (A7 >>> 11) + w
A7 = (FB3955E6 >>> 7) + (37EC671A >>> 11) + 6E67205A
A7 = 1FA49091
FF(X6, X5, X4, X3, X2, X1, X0, X7, W25)
FF(72E52FDD,D9134013,B38F34E8,43EA34BD,9CC91B96,98DFD3D7,48EE212B,1FA49091,68656E
67)
(1) Temp = F_Phi(D9134013,B38F34E8,43EA34BD,9CC91B96,98DFD3D7,48EE212B,1FA49091)
Temp = F(48EE212B,1FA49091,9CC91B96,B38F34E8,D9134013,98DFD3D7,43EA34BD)
Temp = (98DFD3D7 AND 9CC91B96) XOR (D9134013 AND 1FA49091) XOR (B38F34E8 AND
48EE212B) XOR (43EA34BD AND 98DFD3D7) XOR 43EA34BD
Temp = C2671787
(2) A7 = (Temp >>> 7) + (A7 >>> 11) + w
A7 = (C2671787 >>> 7) + (72E52FDD >>> 11) + 68656E67

95

A7 = 7398993B
FF(X5, X4, X3, X2, X1, X0, X7, X6, W26)
FF(D9134013,B38F34E8,43EA34BD,9CC91B96,98DFD3D7,48EE212B,1FA49091,7398993B,2C2050
69)
(1) Temp = F_Phi(B38F34E8,43EA34BD,9CC91B96,98DFD3D7,48EE212B,1FA49091,7398993B)
Temp = F(1FA49091,7398993B,98DFD3D7,43EA34BD,B38F34E8,48EE212B,9CC91B96)
Temp = (48EE212B AND 98DFD3D7) XOR (B38F34E8 AND 7398993B) XOR (43EA34BD AND
1FA49091) XOR (9CC91B96 AND 48EE212B) XOR 9CC91B96
Temp = ACE71B2E
(2) A7 = (Temp >>> 7) + (A7 >>> 11) + w
A7 = (ACE71B2E >>> 7) + (D9134013 >>> 11) + 2C205069
A7 = 8BF54107
FF(X4, X3, X2, X1, X0, X7, X6, X5, W27)
FF(B38F34E8,43EA34BD,9CC91B96,98DFD3D7,48EE212B,1FA49091,7398993B,8BF54107,657072
7A)
(1) Temp = F_Phi(43EA34BD,9CC91B96,98DFD3D7,48EE212B,1FA49091,7398993B,8BF54107)
Temp = F(7398993B,8BF54107,48EE212B,9CC91B96,43EA34BD,1FA49091,98DFD3D7)
Temp = (1FA49091 AND 48EE212B) XOR (43EA34BD AND 8BF54107) XOR (9CC91B96 AND
7398993B) XOR (98DFD3D7 AND 1FA49091) XOR 98DFD3D7
Temp = 9B975A50
(2) A7 = (Temp >>> 7) + (A7 >>> 11) + w
A7 = (9B975A50 >>> 7) + (B38F34E8 >>> 11) + 6570727A
A7 = A3BE1314
FF(X3, X2, X1, X0, X7, X6, X5, X4, W28)
FF(43EA34BD,9CC91B96,98DFD3D7,48EE212B,1FA49091,7398993B,8BF54107,A3BE1314,6B7920
64)
(1) Temp = F_Phi(9CC91B96,98DFD3D7,48EE212B,1FA49091,7398993B,8BF54107,A3BE1314)
Temp = F(8BF54107,A3BE1314,1FA49091,98DFD3D7,9CC91B96,7398993B,48EE212B)
Temp = (7398993B AND 1FA49091) XOR (9CC91B96 AND A3BE1314) XOR (98DFD3D7 AND
8BF54107) XOR (48EE212B AND 7398993B) XOR 48EE212B
Temp = 13BBE202
(2) A7 = (Temp >>> 7) + (A7 >>> 11) + w
A7 = (13BBE202 >>> 7) + (43EA34BD >>> 11) + 6B792064
A7 = 0749156E
FF(X2, X1, X0, X7, X6, X5, X4, X3, W29)
FF(9CC91B96,98DFD3D7,48EE212B,1FA49091,7398993B,8BF54107,A3BE1314,0749156E,616E20
4A)
(1) Temp = F_Phi(98DFD3D7,48EE212B,1FA49091,7398993B,8BF54107,A3BE1314,0749156E)
Temp = F(A3BE1314,0749156E,7398993B,48EE212B,98DFD3D7,8BF54107,1FA49091)
Temp = (8BF54107 AND 7398993B) XOR (98DFD3D7 AND 0749156E) XOR (48EE212B AND
A3BE1314) XOR (1FA49091 AND 8BF54107) XOR 1FA49091
Temp = 177781D5
(2) A7 = (Temp >>> 7) + (A7 >>> 11) + w
A7 = (177781D5 >>> 7) + (9CC91B96 >>> 11) + 616E204A
A7 = 7E70A870
FF(X1, X0, X7, X6, X5, X4, X3, X2, W30)
FF(98DFD3D7,48EE212B,1FA49091,7398993B,8BF54107,A3BE1314,0749156E,7E70A870,656E6E
69)
(1) Temp = F_Phi(48EE212B,1FA49091,7398993B,8BF54107,A3BE1314,0749156E,7E70A870)
Temp = F(0749156E,7E70A870,8BF54107,1FA49091,48EE212B,A3BE1314,7398993B)
Temp = (A3BE1314 AND 8BF54107) XOR (48EE212B AND 7E70A870) XOR (1FA49091 AND
0749156E) XOR (7398993B AND A3BE1314) XOR 7398993B
Temp = 9CD4B90F
(2) A7 = (Temp >>> 7) + (A7 >>> 11) + w
A7 = (9CD4B90F >>> 7) + (98DFD3D7 >>> 11) + 656E6E69
A7 = FF9B33D5

96

FF(X0, X7, X6, X5, X4, X3, X2, X1, W31)


FF(48EE212B,1FA49091,7398993B,8BF54107,A3BE1314,0749156E,7E70A870,FF9B33D5,666572
53)
(1) Temp = F_Phi(1FA49091,7398993B,8BF54107,A3BE1314,0749156E,7E70A870,FF9B33D5)
Temp = F(7E70A870,FF9B33D5,A3BE1314,7398993B,1FA49091,0749156E,8BF54107)
Temp = (0749156E AND A3BE1314) XOR (1FA49091 AND FF9B33D5) XOR (7398993B AND
7E70A870) XOR (8BF54107 AND 0749156E) XOR 8BF54107
Temp = E62CC9A4
(2) A7 = (Temp >>> 7) + (A7 >>> 11) + w
A7 = (E62CC9A4 >>> 7) + (48EE212B >>> 11) + 66657253
A7 = D59AE9AA

....... dan seterusnya (24 pemanggilan prosedur GG lainnya dan 24


pemanggilan prosedur HH lainnya).
------------------PROSES OUTPUT
------------------1) X0 = X0 + K0
= 47DC75CC + 243F6A88
= 6C1BE054
2) X1 = X1 + K1
= BF70269F + 85A308D3
= 45132F72
3) X2 = X2 + K2
= 37023C1A + 13198A2E
= 4A1BC648
4) X3 = X3 + K3
= B4736844 + 03707344
= B7E3DB88
5) X4 = X4 + K4
= B19645B6 + A4093822
= 559F7DD8
6) X5 = X5 + K5
= 287E1BD8 + 299F31D0
= 521D4DA8
7) X6 = X6 + K6
= 93580104 + 082EFA98
= 9B86FB9C
8) X7 = X7 + K7
= C655EAE4 + EC4E6C89
= B2A4576D
---------------------PROSES TAILOR OUTPUT
----------------------

97

temp = (X7 AND 000000FF) OR (X6 AND FF000000) OR (X5 AND 00FF0000) OR (X4 AND
0000FF00)
temp = (B2A4576D AND 000000FF) OR (9B86FB9C AND FF000000) OR (521D4DA8 AND
00FF0000) OR (559F7DD8 AND 0000FF00)
temp = 9B1D7D6D
X0 = X0 + (temp >>> 8)
= 6C1BE054 + (9B1D7D6D >>> 8)
= D9B6FDD1
temp = (X7 AND 0000FF00) OR (X6 AND 000000FF) OR (X5 AND FF000000) OR (X4 AND
00FF0000)
temp = (B2A4576D AND 0000FF00) OR (9B86FB9C AND 000000FF) OR (521D4DA8 AND
FF000000) OR (559F7DD8 AND 00FF0000)
temp = 529F579C
X1 = X1 + (temp >>> 16)
= 45132F72 + (529F579C >>> 16)
= 9CAF8211
temp = (X7 AND 00FF0000) OR (X6 AND 0000FF00) OR (X5 AND 000000FF) OR (X4 AND
FF000000)
temp = (B2A4576D AND 00FF0000) OR (9B86FB9C AND 0000FF00) OR (521D4DA8 AND
000000FF) OR (559F7DD8 AND FF000000)
temp = 55A4FBA8
X2 = X2 + (temp >>> 24)
= 4A1BC648 + (55A4FBA8 >>> 24)
= EF176E9D
temp = (X7 AND FF000000) OR (X6 AND 00FF0000) OR (X5 AND 0000FF00) OR (X4 AND
000000FF)
temp = (B2A4576D AND FF000000) OR (9B86FB9C AND 00FF0000) OR (521D4DA8 AND
0000FF00) OR (559F7DD8 AND 000000FF)
temp = B2864DD8
X3 = X3 + temp
= B7E3DB88 + B2864DD8
= 6A6A2960

--------------------------------------------------------HASIL FUNGSI HASH = X0 || X1 || X2 || X3, (dimana || =


operasi concatenation)
HASIL FUNGSI HASH = D9B6FDD19CAF8211EF176E9D6A6A2960
---------------------------------------------------------

98

Tampilan form hasil eksekusi adalah sebagai berikut.

Gambar 4.17 Tampilan Form Hasil Eksekusi (Pengujian Program)

99

Apabila user menekan tombol Algoritma One-way hashing HAVAL, maka


perangkat lunak akan menjalankan algoritma baris per baris hingga didapat output
fungsi hash. Beberapa tampilan form pada saat mengeksekusi algoritma adalah
sebagai berikut.

Gambar 4.18 Tampilan Form Utama (Pengujian Program)

100

Gambar 4.19 Tampilan Form Fungsi F (Pengujian Program)

Gambar 4.20 Tampilan Form Fungsi G (Pengujian Program)

101

Gambar 4.21 Tampilan Form Fungsi H (Pengujian Program)

Anda mungkin juga menyukai