papanoyt:: ayo pilih content yang ada di bawah ini di jamin gak nyesel..

Minggu, 10 April 2011

Fungsi hash SHA 1


SHA 1
Fungsi hash SHA merupakan sekumpulan fungsi hash didesain oleh National Security Agency dan dipublikasikan oleh NIST sebagai U.S Federal Information Processing Standard (FIPS). SHA merupakan singkatan dari Secure Hash Algorithm. SHS (Secure Hash Standard) merupakan standar yang mendefinisikan SHA. Ada banyak versi SHA. SHA-0, SHA-1, SHA-2. Sedangkan untuk SHA-2 terbagi lagi menjadi SHA-224, SHA-256, SHA-384, and SHA-512. Di sini hanya akan dibahas mengenai SHA-1. SHA-1 menghasilkan 160 bit message diggest dari pesan yang panjangnya kurang dari 264 bit. SHA-1 hampir mirip dengan MD4 tetapi dengan beberapa perubahan.
Langkah-langkah dalam menghitung nilai hash adalah sebagai berikut :
1. Message Padding
SHA-1 digunakan untuk menghitung message diggest dari pesan atau file data yang disediakan sebagai input. Pesan atau file dianggap sebagai kumpulan bit-bit. Panjang dari pesan adalah banyaknya bit didalam pesan (Pesan kosong memiliki panjang 0). Jika banyaknya bit di dalam pesan merupakan kelipatan 8, untuk memudahkan pembacaan dapat ditampilkan dalam format hexadecimal.
Tujuan dari message padding adalah membuat panjang total dari isi pesan menjadi kelipatan 512 bit. SHA-1 secara sekuensial memproses blok 512 bit ketika menghitung message diggest.


Pada message padding, tambahkan satu buah “1” , diikuti oleh m buah “0” diikuti oleh 64 bit integer pada akhir pesan untuk menghasilkan pesan dengan panjang 512 * n. 64 bit integer tersebut adalah panjang dari pesan asli sebelum message padding.
Misalkan pesan dengan panjang L < 26. Sebelum pesan menjadi input SHA-1, dilakukan message padding sebagai berikut
Misal pesan aslinya (L = 40) adalah :
01100001 01100010 01100011 01100100 01100101 (biner)
61 62 63 64 65 (hex)
Tambahkan “1” pada akhir pesan
01100001 01100010 01100011 01100100 01100101 1
Karena L = 40, maka hasilnya menjadi = 41, sehingga diperlukan “0” sebanyak
448 – 41 = 407 buah.
01100001 01100010 01100011 01100100 01100101 10000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
Dalam hexadecimal hasilnya adalah
61626364 65800000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000


Tambahkan 64 bit representasi dari panjang pesan asli. Untuk L = 40, maka representasi dari 64 bit panjang pesan adalah
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00101000 (biner)
00000000 00000028 (hexa)
Maka, setelah ditambahkan hasilnya :
(dalam biner)
01100001 01100010 01100011 01100100 01100101 10000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00101000
(dalam hexa)
61626364 65800000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000028
Hasil dari message padding adalah n 512-bit block (n * 16 word) , untuk suatu n > 0.
Padded message disimbolkan dengan M(1), M(2), …, M(n)
1. Fungsi dan Konstanta yang Digunakan
Serentetan fungsi logic f(0), f(1), f(2), .. ,f(79) digunakan dalam SHA-1. Setiap f(t) , 0 ≤ t ≤ 79 beroperasi pada 32bit word B, C, D dan menghasilkan 32bit word sebagai output.
f( t; B,C,D) didefinisikan sebagai berikut. Untuk word B,C,D :
f(t;B,C,D) = (B AND C) OR ((NOT B) AND D) ( 0 <= t <= 19)
f(t;B,C,D) = B XOR C XOR D (20 <= t <= 39)
f(t;B,C,D) = (B AND C) OR (B AND D) OR (C AND D) (40 <= t <= 59)
f(t;B,C,D) = B XOR C XOR D (60 <= t <= 79)
Serentetan konstanta K(0), K(1), K(2), … , K(79) digunakan dalam SHA-1.
Dalam hexadecimal konstanta tersebut adalah :
K(t) = 5A827999 ( 0 <= t <= 19)
K(t) = 6ED9EBA1 (20 <= t <= 39)
K(t) = 8F1BBCDC (40 <= t <= 59)
K(t) = CA62C1D6 (60 <= t <= 79)
Selain itu juga digunakan fungsi Circular Left Shift. Circular left shift S^n(X) , dimana X adalah 32 bit word dan n adalah bilangan integer dengan 0 ≤ n < 32.
S^n(X) = (X << n) OR (X >> 32-n)
Contoh: Misalkan X = 11010000 01010000 11100000 00001010 , dan n = 5
Maka
X << 5 = 00001010 00011100 00000001 01000000
X >> 27 = 00000000 00000000 00000000 00011010
————————————————————— (OR)
S^5(X) = 00001010 00011100 00000001 01011010
1. Menghitung Message Diggest
Message diggest dihitung menggunakan hasil message padding. Komputasi menggunakan dua jenis buffer, setiap jenis buffer tediri dari 5 buah 32-bit word. 5 buah 32-bit word buffer pertama dilabeli dengan A, B, C, D, E. Sedangkan buffer kedua dilabeli H0, H1, H2, H3, H4. Terdapat sebuah sekuen 80 word 32-bit, yang dilabeli W(0), W(1), W(2), …, W(79) dan juga sebuah word buffer yang dilabeli dengan TEMP. Untuk men-generate message diggest, block-block 16 word M(1) M(2) M(3) … M(n) hasil message diggest diproses secara berurutan. Setiap pemrosesan M(i) membutuhkan 80 langkah.
Sebelum memproses apapun, untuk pertama kali, H diinisialisasi sebagai berikut:
H0 = 67452301
H1 = EFCDAB89
H2 = 98BADCFE
H3 = 10325476
H4 = C3D2E1F0
Selanjutnya lakukan komputasi dari M(1), M(2), … , M(n). Untuk setiap M(i), lakukan langkah langkah sebagai berikut ini :
Step 1 Divide M(i) into 16 words W(0), W(1), … , W(15), where W(0) is the left-most word.
Step 2 For t = 16 to 79 do
W(t) = S^1( W(t-3) XOR W(t-
XOR W(t-14) XOR W(t-16) )
Step 3 Let A = H0, B = H1, C = H2, D = H3, E = H4
Step 4 For t = 0 to 79 do
TEMP = S^5(A) + f(t;B,C,D) + E + W(t) + K(t);
E = D;
D = C;
C = S^30(B);
B = A;
A = TEMP;
Step 5 H0 = H0 + A;
H1 = H1 + B;
H2 = H2 + C;
H3 = H3 + D;
H4 = H4 + E;
Setelah memproses M(n), message diggest adalah 160-bit string yang direpresentasikan oleh 5 word

Tidak ada komentar:

Posting Komentar