background image

49

Algorithm 2.4.1 Ο αλγόριθµος SHA-3 (Keccak)

Require: Μήνυµα M
Ensure: Συµπύκνωµα µηνύµατος

1:

function SHA-3(M )

2:

Αρχικοποίηση του πίνακα κατάστασης

S µε µηδενικά

3:

Εϕαρµογή Padding στο

M

4:

Χωρίστε το

M σε µπλοκ r-bit και επεξεργαστείτε κάθε µπλοκ

5:

for κάθε µπλοκ m του M do

6:

Προσάρτηση του

m στο S

7:

end for

8:

for i = 1 to 12 + 2l do

▷ l = log

2

(b)/2, b = 1600 για SHA-3

9:

Step-θ(

S)

▷ Λειτουργία θ

10:

for x ← 0 to do

11:

for y ← 0 to do

12:

A[x, y] ← A[x, y] ⊕ D[x]

13:

end for

14:

end for

15:

Step-ρ(

S)

▷ Λειτουργία ρ

16:

for x ← 0 to do

17:

for y ← 0 to do

18:

A[x, y] ← rot(A[x, y], r[x, y])

19:

end for

20:

end for

21:

Step-π(

S)

▷ Λειτουργία π

22:

for x ← 0 to do

23:

for y ← 0 to do

24:

B[y, (2x + 3y) mod 5] ← A[x, y]

25:

end for

26:

end for

27:

Step-χ(

S)

▷ Λειτουργία χ

28:

for x ← 0 to do

29:

for y ← 0 to do

30:

A[x, y] ← B[x, y] ⊕ (¬B[x + 1 mod 5, y] ∧ B[x + 2 mod 5, y])

31:

end for

32:

end for

33:

Step-ι(

S, i)

▷ Λειτουργία ι

34:

for x ← 0 to do

35:

for y ← 0 to do

36:

A[0, 0] ← A[0, 0] ⊕ RC

37:

end for

38:

end for

39:

end for

40:

return Εξαγωγή του συµπυκνώµατος από το S

41:

end function