+ Dn + n (mod 65521)
Adler-32(D) = B × 65536 + A
gdzie D to ciąg bajtów, dla których jest obliczana suma kontrolna, a n jest długością D.
Przykładowe obliczenie Suma Alder-32 dla ciągu znaków „Wikipedia” w formacie ASCII jest obliczana następująco:
Kod ASCII A B
W: 87 1 + 87 = 88 0 + 88 = 88 i: 105 88 + 105 = 193 88 + 193 = 281 k: 107 193 + 107 = 300 281 + 300 = 581 i: 105 300 + 105 = 405 581 + 405 = 986 p: 112 405 + 112 = 517 986 + 517 = 1503 e: 101 517 + 101 = 618 1503 + 618 = 2121 d: 100 618 + 100 = 718 2121 + 718 = 2839 i: 105 718 + 105 = 823 2839 + 823 = 3662 a: 97 823 + 97 = 920 3662 + 920 = 4582
A = 920 = 398 hex B = 4582 = 11E6 hex
Suma = 11E60398 hex
W tym przykładzie pominięto operację sumy modulo, ponieważ wartość żadnej ze zmiennych nie mogła przekroczyć 65521.
Przykładowa implementacja Zoptymalizowana implementacja w języku C wygląda następująco:
#define MOD_ADLER 65521 uint8_t *data; /* Pointer to the data to be summed */ size_t len; /* Length in bytes */ uint32_t a = 1, b = 0;
while (len) { unsigned tlen = len > 5550 ?