background image

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