Boshlang‘ich qayta ishlash. Xeshlanuvchi ma’lumot SHA-1 ga o‘xshab uzunligi 512 ga karrali bo‘lguncha to‘ldiriladi. To‘ldirishda ma’lumotdan keyin 1 yoziladi va qolgan bitlar nolь bilan to‘ldiriladi. Bunda ma’lumot uzunligi 512 modulь bo‘yicha 448 bilan taqqoslanadigan qilib to‘ldiriladi. Keyin berilgan ma’lumotning 64 bitlik uzunligi yoziladi.
Ma’lumotni 512 bitlik bloklarga ajratish. Kengaytirilgan ma’lumot 512 bitlik
М (1) , М (2) ,..., М ( N )
bloklarga ajratiladi.
Asosiy sikl. Bussiklni yozish uchun argumenti va qiymatlari 32 bit bo‘lgan oltita mantiqiy funksiyadan foydalaniladi:
Ch (x,y,z)=(xy)( xz),
Maj (x,y,z)=(xy)( xz)(yz),
0(x)=S2(x) S13(x) S22(x),
1(x)=S6(x) S11(x) S25(x),
0(x)=S7(x) S18(x) R3(x),
1(x)=S17(x) S19(x) R10(x).
М (i )
blokni
М (i ) M (i ) M (i ) ...M (i )
16 ta 32 bitlik so‘zlarga ajratiladi va
0 1 15
W ,...,W
lar quyidagicha aniqlanadi:
0 63
Wj
M (i) ,
j 0,...,15,
j
for j=16 to 63 {
Wj 1 (Wj 2 ) Wj 7 0 (Wj 15 ) Wj 16
}
K 0 ,..., K 63
o‘zgarmaslar sifatida esa quyidagi 64 ta 16 lik ko‘rinishda
tasvirlangan tub sonlardan chiqarilgan kub ildizlar kasr qismlarining birinchi 32 biti olinadi:
428a2f98 71374491 b5c0fbcf e9b5dba5 3956c25b 59f111f1 923f82a4 ab1c5ed5 d807aa98 12835b01 243185be 550c7dc3 72be5d74 80deb1fe 9bdc06a7 c19bf174 e49b69c1 efbe4786 0fc19dc6 240ca1cc2de92c6f 4a7484aa 5cb0a9dc 76f988da 983e5152 a831c66d b00327c8 bf597fc7 c6e00bf3 d5a79147 06ca6351 14292967
27b70a85 2e1b2138 4d2c6dfc 53380d13 650a7354766a0abb 81c2c92e 92722c85
a2bfe8a1 a81a664b c24b8b70 c76c51a3 d192e819 d6990624 f40e3585 106aa070 19a4c116 1e376c08 2748774c 34b0bcb5 391c0cb3 4ed8aa4a 5b9cca4f 682e6ff3 748f82ee 78a5636f 84c87814 8cc70208 90befffa a4506ceb bef9a3f7 c67178f2
Asosiy sikl quyidagicha bo‘ladi:
for i=0 to N { // N – kengaytirilgan ma’lumotning bloklari soni.
8
7
6
5
4
3
2
// a, b, c, d, e, f, g, h registrlarni xesh funksiyaning (i-1) oraliq qiymati bilan // initsializatsiya qilish.
1
a H (i1) ;
b H (i1) ;
c H (i1) ;
d H (i1) ;
e H (i1) ;
f H (i1) ;
g H (i1) ;
h H (i1) ;
// a, b, c, d, e, f, g, h registrlarga siqish funksiyasini qo‘llaymiz.
j
for i=0 to 63 {// Ch (e,f,g), Maj (a,b,c), 0(a), 1(e) va W
T1 h 1 (e) Ch(e, f , g) K j Wj
T2 0 (a) Maj(a, b, c)
larni hisoblaymiz.
h g ;
}
g f ;
f e ;
e d T1 ;
d c ;
c b ;
b a ;
a T1 T2
H (i) a H (i1) ; H (i) b H (i1) ; H ( i ) c H ( i1) ; H (i) d H (i1) ;
1 1 2 2 3 3 4 4
H ( i ) e H ( i1) ; H ( i ) f H ( i1) ; H ( i ) g H ( i1) ; H ( i ) h H ( i1)
5 5 6 6 7 7 8 7
}
// i – bo‘yichassikl.
Natijada
H ( N ) H ( N ) || H ( N ) || H ( N ) || H ( N ) || H ( N ) || H ( N ) || H ( N ) || H ( N )
ifoda M
1 2 3 4 5 6 7 8
ma’lumotning xesh qiymatini beradi.
SHA-512 xesh funksiyasi o‘zining tuzilishiga ko‘ra, SHA-256 xesh funksiyasiga o‘xshaydi, lekin unda uzunligi 64 bit bo‘lgan so‘zlar ustida amallar bajariladi. Bu algoritmda kiruvchi ma’lumotning uzunligi 2 128 bitdan kichik, xesh qiymat uzunligi 512 bit bo‘ladi. Ma’lumotning uzunligi 1024 ga karrali qilib to‘ldiriladi. To‘ldirishda ma’lumot oxiriga 1 yozilib, qolgan qismi nolь bilan shunday to‘ldiriladiki, ma’lumot uzunligi 1024 ga karrali condan 128 bit kam bo‘lishi kerak. Oxiriga berilgan ma’lumotning 128 bit uzunligi qo‘shiladi. SHunday qilib, kengaytirilgan ma’lumot uzunligi 1024 ga karrali bo‘ladi.
Boshlang‘ich vektor
H (0)
8 ta 64 razryadli so‘zlardan iborat bo‘lib, u quyidagi tub
sonlar kvadrat ildizlarining kasr qismlariga teng qilib olinadi:
H (0) ={6a09e667f3bcc908, bb67ae8584caa73b, 3c6ef372fe94f82b, a54ff53a5f1d36f1, 510e527fade682d1, 9b05688c2b3e6c1f, 1f83d9abfb41bd6b, 5be0cd19137e2179}.
Ma’lumot 1024 bitlik qayta ishlanadi.
М (1) , М (2) ,..., М ( N )
bloklarga ajratiladi va ular ketma-ket
Asosiy sikl xuddi SHA-256 algoritmidagidek bo‘lib, faqat SHA-512
algoritmidagi funksiyalar va bajariladigan amallar 64 bitlik so‘zlarda aniqlangan
hamda qo‘shish mod 264 bo‘yicha olinadi. Siqish funksiyasi esa faqatssikldagi iteratsiyalar soni bilan farq qiladi:
j
for i=0 to 79 { // Ch (e,f,g), Maj (a,b,c), 0(a), 1(e) va W
T1 h 1 (e) Ch(e, f , g) K j Wj
T2 0 (a) Maj(a, b, c)
larni hisoblanadi.
h g ;
}
g f ;
f e ;
e d T1 ;
d c ;
c b ;
b a ;
a T1 T2
Natijada H ( N ) H ( N ) || H ( N ) || H ( N ) || H ( N ) || H ( N ) || H ( N ) || H ( N ) || H ( N ) ifoda M
1 2 3 4 5 6 7 8
ma’lumotning xesh qiymatini beradi.
Mantiqiy funksiyalar esa SHA-256 algoritmidagi mantiqiy funksiyalardan quyidagicha farq qiladi:
0(x)=S28(x) S34(x) S39(x),
1(x)=S14(x) S18(x) S41(x),
0(x)=S1(x) S8(x) R7(x),
1(x)=S19(x) S61(x) R6(x).
М (i )
blokni
М (i ) M (i ) M (i ) ...M (i )
16 ta 64 bitlik bloklarga ajratiladi va
0 1 15
0 79
W ,..., W larni quyidagicha aniqlanadi:
j
j
W M (i) , j 0,...,15,
for j=16 to 79 {
Wj 1 (Wj 2 ) Wj 7 0 (Wj 15 ) Wj 16
}
K 0 ,..., K 79
o‘zgarmaslar sifatida esa quyidagi 80 ta 16 lik ko‘rinishda
tasvirlangan tub sonlardan chiqarilgan kub ildizlar kasr qismlarining birinchi 64 biti olinadi:
428a2f98d728ae22
|
7137449123ef65cd
|
b5c0fbcfec4d3b2f
|
e9b5dba58189dbbc
|
3956c25bf348b538
|
59f111f1b605d019
|
923f82a4af194f9b
|
ab1c5ed5da6d8118
|
d807aa98a3030242
|
12835b0145706fbe
|
243185be4ee4b28c
|
550c7dc3d5ffb4e2
|
72be5d74f27b896f
|
80deb1fe3b1696b1
|
9bdc06a725c71235
|
c19bf174cf692694
|
e49b69c19ef14ad2
|
efbe4786384f25e3
|
0fc19dc68b8cd5b5
|
240ca1cc77ac9c65
|
2de92c6f592b0275
|
4a7484aa6ea6e483
|
5cb0a9dcbd41fbd4
|
76f988da831153b5
|
983e5152ee66dfab
|
a831c66d2db43210
|
b00327c898fb213f
|
bf597fc7beef0ee4
|
c6e00bf33da88fc2
|
d5a79147930aa725
|
06ca6351e003826f
|
142929670a0e6e70
|
27b70a8546d22ffc
|
2e1b21385c26c926
|
4d2c6dfc5ac42aed
|
53380d139d95b3df
|
650a73548baf63de
|
766a0abb3c77b2a8
|
81c2c92e47edaee6
|
92722c851482353b
|
a2bfe8a14cf10364
|
a81a664bbc423001
|
c24b8b70d0f89791
|
c76c51a30654be30
|
d192e819d6ef5218
|
d69906245565a910
|
f40e35855771202a
|
106aa07032bbd1b8
|
19a4c116b8d2d0c8
|
1e376c085141ab53
|
2748774cdf8eeb99
|
34b0bcb5e19b48a8
|
391c0cb3c5c95a63
|
4ed8aa4ae3418acb
|
5b9cca4f7763e373
|
682e6ff3d6b2b8a3
|
748f82ee5defb2fc
|
78a5636f43172f60
|
84c87814a1f0ab72
|
8cc702081a6439ec
|
90befffa23631e28
|
a4506cebde82bde9
|
bef9a3f7b2c67915
|
c67178f2e372532b
|
ca273eceea26619c
|
d186b8c721c0c207
|
eada7dd6cde0eb1e
|
f57d4f7fee6ed178
|
06f067aa72176fba
|
0a637dc5a2c898a6
|
113f9804bef90dae
|
1b710b35131c471b
|
28db77f523047d84
|
32caab7b40c72493
|
3c9ebe0a15c9bebc
|
431d67c49c100d4c
|
4cc5d4becb3e42b6
|
597f299cfc657e2a
|
5fcb6fab3ad6faec
|
6c44198c4a475817.
|
SHA-384 xesh funksiyasi algoritmi SHA-512 algoritmidan faqat boshlang‘ich vektori:
H (0)
= {cbbb9d5dc1059ed8, 629a292a367cd507, 9159015a3070dd17,
152fecd8f70e5939, 67332667ffc00b31, 8eb44a8768581511, db0c2e0d64f98fa7, 47b5481dbefa4fa4} bilan farq qiladi. Bu algoritmda kiruvchi ma’lumotning uzunligi 2 128 bitdan kichik bo‘lib, xesh qiymat uzunligi 384 bit bo‘ladi. Boshqa hamma hisoblashlar SHA-512 algoritmi bilan bir xil bo‘ladi. Natijada, chiquvchi xesh qiymat sifatida:
H ( N ) H ( N ) || H ( N ) || H ( N ) || H ( N ) || H ( N ) || H ( N ) || H ( N ) || H ( N )
ning chap tomondan 384 biti, ya’ni
1 2 3 4 5 6 7 8
H ( N ) H ( N ) || H ( N ) || H ( N ) || H ( N ) || H ( N ) || H ( N )
olinadi.
1 2 3 4 5 6
Dostları ilə paylaş: |