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 4 do
11:
for y ← 0 to 4 do
12:
A[x, y] ← A[x, y] ⊕ D[x]
13:
end for
14:
end for
15:
Step-ρ(
S)
▷ Λειτουργία ρ
16:
for x ← 0 to 4 do
17:
for y ← 0 to 4 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 4 do
23:
for y ← 0 to 4 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 4 do
29:
for y ← 0 to 4 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 4 do
35:
for y ← 0 to 4 do
36:
A[0, 0] ← A[0, 0] ⊕ RC
37:
end for
38:
end for
39:
end for
40:
return Εξαγωγή του συµπυκνώµατος από το S
41:
end function