Anda di halaman 1dari 17

| 

||

‡ Fungsi hash diimplementasikan untuk menyimpan kode yang cukup besar ke dalam
indeks yang lebih kecil sehingga mempercepat pencarian.
contoh :
J 
 
 
   
  
 
‡ Tujuan penggunaan fungsi hash adalah agar 2 buah kunci yang berbeda tidak
mempunyai nilai hash yang sama (untuk menghindari colllision/hash clash)
£  ||

‡ Dalam implementasi fungsi hash sering digunakan untuk


mengkonversikan himpunan kunci rekaman (K) menjadi himpunan
alamat memori (L/posisi subskrip dalam array). Bisa dinotasikan
dengan H : K [ L
‡ Aspek yang perlu dipertimbangkan dalam pemilihan fungsi hash
adalah :
a. Fungsi hash harus mudah dan cepat dihitung
b. Fungsi hash sebisa mungkin mendistribusikan posisi yang dimaksud
secara uniform sepanjang himpunan L sehingga collision yang
mungkin terjadi dapat diminimalkan
£   
‡ Fungsi hash ini menggunakan fungsi modulus dengan persamaan.
| 
contoh : jika ditentukan nilai m adalah 97 dan beberapa nilai k
ditentukan yaitu :
k1 = 10347
k2 = 87492
k3 = 34212
maka hasil komputasinya :
H1 = 10347 mod 97 = 65
H2 = 87492 mod 97 = 95
H3 = 34212 mod 97 = 68
£ £  
‡ Fungsi hash ini melakukan pengkuadratan kunci terlebih dahulu
kemudian menghapus beberapa digit disebelah kiri dan kanan asalkan
jumlah digit kiri dan kanan sama.
‡ Apabila jumlah digit berbeda maka pada digit kiri ditambahkan
sejumlah trailing zero. Fungsi hash yang dipilih :
H(k) = l
contoh:
    
          

   
£ 
  
‡ Fungsi hash ini melakukan pemecahan kunci menjadi beberapa
kelompok yang masing-masing terdiri dari beberapa buah digit.
Kemudian kelompok digit tersebut
dijumlahkan. Pemecahan dan penjumlahan terus dilakukan jika jumlah
keseluruhan kelompok yang ada, masih lebih besar dari banyaknya
alamat yang akan dipakai.
contoh :
H(10347) = 1 + 03 + 47 = 51
H(87492) = 8 + 74 + 92 = 174 = 1 + 74 = 75
H(34212) = 3 + 42 + 12 = 57
u |  £
‡ Fungsi hash sering disebut juga fungsi satu arah (one-way function),
message digest, fingerprint, fungsi kompresi, dan message
authentication code (MAC).
‡ Fungsi hash satu arah H beroperasi pada pesan M dengan panjang
sembarang, dan menghasilkan keluaran h yang selalu sama
panjangnya. Dinotasikan H(M) = h.
‡ Fungsi hash harus memiliki sifat-sifat sebagai berikut :
1. Diberikan M, harus mudah menghitung H(M) = h.
2. Diberikan h, sangat sulit atau mustahil mendapatkan M sedemikian
sehingga H(M) = h
3. Diberikan M, sangat sulit atau mustahil mendapatkan M¶ sedemikian
sehingga H(M) = H(M¶)
4. Sangat sulit atau mustahil mendapatkan dua pesan M dan M¶
sedemikian sehingga H(M) = H(M¶)
  |  
 |
‡ SHA didesain oleh NIST dan NSA sebagai komponen Digital
Signature Standard.
‡ Rancangannya mirip dengan MD4 yang dibuat oleh Prof. Ronald L
Rivest dari MIT.
‡ SHA menghasilkan keluaran sidik jari 160 bit.
o   |
L * 512 bits
K bits
£   £ 
512 512 512 512
Y0 Y1 ... Yq ... YL-1

512

160
HSHA HSHA HSHA HSHA 160 bits digest

CV1
o   
  
‡ Pesan asal ³A´ = 0100 00012 = 4116
‡ Tambahan bit : 1000 0000 « dalam biner atau dalam hexa adalah
8000 0000 0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 00
Jumlah bit tambahan 440 bit berarti total sekarang 448 bit
Untuk mencapai kelipatan 512 bit mesti ditambahkan kekurangan
sebanyak 64 bit. 64 bit ini diisi dengan panjang asli pesan yaitu 8 bit =
816 = ¦¦¦¦ ¦¦¦¦ ¦¦¦¦ ¦¦¦
sehingga masukan menjadi (dalam hexa) :
4180 0000 0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000 ¦¦¦¦ ¦¦¦¦
¦¦¦¦ ¦¦¦

  
 |
Yq (512) CVq (160)

A B C D E
F(0..19), K(0..19), W(0..19) 20 step
A B C D E
F(20..39), K(20..39), W(20..39) 20 step
A B C D E
F(40..59), K(40..59), W(40..59) 20 step
A B C D E
F(60..79), K(60..79), W(60..79) 20 step

+ + + + +

CVq+1 (160)
 
‡ Setiap blok proses terdiri dari 20 tahap pengolahan
‡ Yq merupakan blok pesan yang akan diolah sepanjang 512 bit
‡ Nilai hash awal CV0 ditentukan sebagai 5 buah register yang pada
kondisi awal nilainya :
A = 0x67452301
B = 0xefcdab89
C = 0x98badcfe
D = 0x10325476
E = 0xc3d2e1f0
‡ Maka keluaran dari kelima register tersebut adalah 160 bit
     |  

A B C D E

ft +

S5 +

+ Wt
S30 + Kt

A B C D E
   
‡ Beberapa fungsi yang digunakan SHA adalah :
ft(B,C,D) = (B ±C) ((~B) ± D), utk t=0 sampai 19
ft(B,C,D) = (B ‡ C ‡ D), utk t=20 sampai 39
ft(B,C,D) = (B ± C) (B ± D) (C ± D), utk t=40 sampai 59
ft(B,C,D) = (B ‡ C ‡ D), utk t=60 sampai 79
‡ Fungsi S5 menunjukkan bahwa A digeser 5 bit ke kiri.
‡ Empat konstanta Kt yang digunakan pd SHA :
Kt = 0x5a827999, untuk t=0 hingga 19
Kt = 0x6ed9eba1, untuk t=20 hingga 39
Kt = 0x8f1bbcdc, untuk t=40 hingga 59
Kt = 0xca62c1d6, untuk t=60 hingga 79
  

‡ Blok pesan ditransformasikan dari 16 word 32 bit (M0 sampai M15) ke 80 word 32
bit dengan algoritma berikut :
Wt = Mt , utk t = 0 hingga 15
Wt= (Wt-3 ‡ Wt-8 ‡ Wt-14 ‡ Wt-16) <<< 1, utk t = 16 sampai 79

Contoh :
Jika Pesannya adalah :
4180 0000 0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000 ¦¦¦¦ ¦¦¦¦
¦¦¦¦ ¦¦¦
W0 = M0
W0 = 4180 0000
W1 = 0000 0000
  
‡ For t = 0 to 79
‡ Temp = (a<<<5) + ft (b,c,d) + e + Wt + Kt
‡ e=d
‡ d=c
‡ c = b <<< 30
‡ b=a
‡ a = Temp

+ merupakan penjumlahan modulo 32


  
1. Lakukan perhitungan metode pembagian dan midsquare
2. Tentukan nilai f0 dengan fungsi :
ft(B,C,D) = (B C) ((~B) D), utk t=0 sampai 19
3. Tentukan ke 80 word nilai dari W0 sampai W79 dengan ketentuan :
Wt = Mt , utk t = 0 hingga 15
Wt = (Wt-3 ‡ Wt-8 ‡ Wt-14 ‡ Wt-16) <<< 1, utk t = 16 s/d 79

Anda mungkin juga menyukai