
Algorytm SHA-1 jest używany do obliczania skrótu (digest) dla dowolnej wiadomości lub pliku danych dostarczonego na wejściu.
1) Message padding - dopełnienie wiadomości
Celem operacji "Message padding" jest uczynienie aby wiadmość do haszowania miała długość będącą wielokrotnością 512. SHA-1 sekwencyjnie procesuje bloki 512 bitów podczas obliczania skrótu dla wiadomości.
Uzupełnianie polega na dopisaniu na końcu wiadomości:
2) Funkcje w algorytmie SHA-1
Sekwencja 79 funkcji jest użyta w algorytmie SHA-1. Każda funkcja ft, dla t: 0 <= t <= 79 operuje na trzech 32-bitowych słowach B,C,D i produkuje 32-bitowe słowo jako wynik. Funkcje ft(B,C,D) są zdefiniowane następująco:
| Sekwencja | Funkcja | Zapis JavaScript |
| (0 <= t <= 19) | ft(B,C,D) = (B AND C) OR ((NOT B) AND D) | ( B & C) | ( (~B) & D) |
| (20 <= t <= 39) | ft(B,C,D) = B XOR C XOR D | B ^ C ^ D |
| (40 <= t <= 59) | ft(B,C,D) = (B AND C) OR (B AND D) OR (C AND D) | (B & C) | (B & D) | (C & D) |
| (60 <= t <= 79) | ft(B,C,D) = B XOR C XOR D | B ^ C ^ D |
3) Wartości stałe algorytmu SHA-1
Sekwencja stałych wartości K(0), K(1), ... , K(79) jest użyta w algorytmie SHA-1:
| Sekwencja | Stała |
| (0 <= t <= 19) | Kt = 5A827999 |
| (20 <= t <= 39) | Kt = 6ED9EBA1 |
| (40 <= t <= 59) | Kt = 8F1BBCDC |
| (60 <= t <= 79) | Kt = CA62C1D6 |
4) Obliczenie skrótu wiadomości (message digest)
Obliczenie skrótu wykonywane jest dla finalnie dopełnionej do 512 bitów wiadomości. Obliczenia używają dwu buforów, każdy składający się z 5-ciu 32 bitowych słów oraz sekwencji 80-ciu 32 bitowych słów.
Inicjalizacja dodatkowych stałych:
H0 = 67452301
H1 = EFCDAB89
H2 = 98BADCFE
H3 = 10325476
H4 = C3D2E1F0
Procesowanie: M1, M2, ... , Mn . Dla każdego Mi, obliczamy:
a. Dzielimy Mi na 16 słów W0, W1, ... , W15, gdzie W0 jest pierwszym słowem.
b. Dla t = 16 do 79 liczymy (w pętli) Wt = S1(Wt-3 XOR Wt-8 XOR Wt- 14 XOR Wt-16).
c. Podstawiamy A = H0, B = H1, C = H2, D = H3, E = H4.
d. Dla t = 0 do 79 wykonujemy w pętli:
Po obliczeniu Mn, skrótem wiadomości jest 160-bitowa reprezentacja 5-ciu słów:
Źródło:
http://e-handel.mm.com.pl/crypto/opis_algorytmu_sha.htm