36
Algorithm 2.3.1 Ο αλγόριθµος SHA-2
Require: Προεπεξεργασµένο Μήνυµα M = (M
0
, M
1
, . . . , M
n
) σε Μπλοκ
Ensure: Εξαγόµενο Hash (224 ή 256 ή 384 ή 512)
1:
Αρχικοποίηση
2:
a = H
(i−1)
0
, b = H
(i−1)
1
,
3:
c = H
(i−1)
2
, d = H
(i−1)
3
,
4:
e = H
(i−1)
4
, f = H
(i−1)
5
,
5:
g = H
(i−1)
6
, h = H
(i−1)
7
6:
for t = 0 to n do do
7:
if t < 16 then
8:
W
t
← M
t
9:
else
10:
W
t
← σ
1
(W
t−2
) + W
t−7
+ σ
0
(W
t−15
) + W
t−16
11:
end if
12:
end for
13:
for t = 0 to j do do
14:
T emp
1
← h + Σ
1
(e) + Choose(e, f, g) + K
t
+ W
t
15:
T emp
2
← Σ
0
(a) + M ajority(a, b, c)
16:
h ← g
17:
g ← f
18:
f ← e
19:
e ← d + T emp
1
20:
d ← c
21:
c ← b
22:
b ← a
23:
a ← T emp
1
+ T emp
2
24:
end for
25:
for t = 0 to n do do
26:
H
(t)
0
← a + H
(t−1)
0
27:
H
(t)
1
← b + H
(t−1)
1
28:
H
(t)
2
← c + H
(t−1)
2
29:
H
(t)
3
← d + H
(t−1)
3
30:
H
(t)
4
← e + H
(t−1)
4
31:
H
(t)
5
← f + H
(t−1)
5
32:
H
(t)
6
← g + H
(t−1)
6
33:
H
(t)
7
← h + H
(t−1)
7
34:
end for
35:
return Hash
36:
SHA − 224 ← συνένωση των H
(n)
0
, H
(n)
1
, H
(n)
2
, H
(n)
3
, H
(n)
4
, H
(n)
5
, H
(n)
6
37:
SHA − 256, 512 ← συνένωση των H
(n)
0
, H
(n)
1
, H
(n)
2
, H
(n)
3
, H
(n)
4
, H
(n)
5
, H
(n)
6
, H
(n)
7
38:
SHA − 384 ← συνένωση των H
(n)
0
, H
(n)
1
, H
(n)
2
, H
(n)
3
, H
(n)
4
, H
(n)
5